中级程序员 - 知道如何做某事对人群按照单一维度进行划分,大多数时候都是符合正态分布的,这里也不例外 。中级程序员是我们身边最多的,包括那些不得不穿上高级程序员马甲的中级程序员 。
在这个阶段,有些中级程序员开始具备了一定的“连接能力”,但并不是所有人,主要看是不是拥有了“共同体意识” 。
在专业能力上,中级程序员已经明白了一定的“整体与局部”的概念,但仍然看不到整个“森林”,大多局限在某个模块、流程上 。比如,他们会想“这是做敏捷的正确方式吗?”,但不会考虑“这对整个团队、整个公司会产生什么实际的影响?” 。
他们开始注重代码质量,因为担心低质量的代码会影响他们视野中的“整体” 。
但是对于质量的理解还是比较单一 。比如,这个时候你会经常听到他们把“性能”挂在嘴边,在他们心目中“性能”的地位是至高无上的,总是想着你这个方案和我的方案哪个性能更好 。
同样可以观察一下周围,中级的开发大多数会这样做事:
- 针对一个问题,可以提出多个方案,但是无法做出准确的决策 。一旦更权威的人给出了他的选择,中级程序员就会不假思索地按照建议执行 。
- 可以看出代码中的一些设计模式,但是自己写代码的时候除了单例和工厂,其它的几乎想不到 。
- 在讨论一些时髦的框架和技术的时候总能聊上几句,但是追问这个框架或者技术有什么缺点,基本说不上来 。甚至,草率地在项目中运用上这些时髦的框架和技术,最终导致线上问题频发,不得不让高级程序员来收拾残局 。
- 能够对自己完成任务所需的时间有准确的评估,但是评估他人的时间不会因人而异,也会以自己作为标准来评估 。
- 对与自己有工作交集的人员的职能有了一定的认识 。比如,会主动寻求测试的配合,帮助自己交付更高质量的项目 。
两位社会心理学家在 1999 年做的 4 项研究,证实了下面的这个曲线的存在 。
文章插图
在这种状态下,人最容易高估自己,这也是很多导致产生很多“假高级程序员”的原因所在 。
高级程序员 - 知道必须做些什么高级程序员在“专业能力”、“连接能力”与“领导能力”这三个维度都有所建树 。因为他们不但可以把从 1 到 100 的事情做得很好,也有能力带领其它人完成 0 到 1 的事情 。
根据我身边所接触的程序员群体来看,我所认为的高级程序员,他们明白没有什么是完美的,相反,问题、缺点和风险总是存在的 。
他们的决策总是站在为了整体的“平衡”角度去考虑,而不是技术的酷炫或者外界流传的所谓“正确的”技术 。
他们会更多地关心那些不显而易见的东西,如可维护性、可扩展性、易阅读、易调试等等 。
高级程序员就好比社会中的成年人,他们踩过足够多的坑,也填过足够多的坑,已经认清了现实的残酷,寻求适合而不是完美 。周到、务实、简单,是他们做事的时候强烈散发出的“味道” 。
可以根据下面的这些场景来看看你身边有多少“有味道”的高级程序员?
- 与初级和中级程序员不同,他们抛出问题不是为了正确地做事,而是做正确的事 。他们会询问为什么要这样做以及你想要实现什么 。当你告诉他们目标是什么后,他们或许会通过暗示这种方式是错误的而另一种更好来做出一些修正;当然,更重要的是还会提供论据说服你 。
- 因为提前明确了做事的目标,所以在动手做一件事的过程中,他会在关键细节思考有没有更好的方法,甚至是那些不在之前的讨论范围的新尝试 。
- 他可以轻松地承认他不知道什么,并且向你请教 。同时也可以轻松地向他人讲清楚他所知道的事情 。
- 他们理解合作的人员的职能的作用,不但知道什么时候向谁寻求帮助,还知道自己如何更好地帮助他们 。
推荐阅读
- 到底什么样的行业赚钱厉害?
- 科普:临街住宅到底买几楼噪音小?
- 程序员工作必备:10个超实用的GitHub库
- |为“高价”鱼竿买单,到底值不值?钓鱼人需要擦亮眼睛
- 好白酒和普通白酒,到底差在哪?好喝与否不是唯一标准,看完醒悟
- XO到底是种什么酒?如今很多有钱人为何都在喝?一次性让你搞明白
- 海南过冬到底热不热?一篇文章让你看懂海南天气
- 机器指令到汇编再到高级编程语言
- 程序员用Python实现自动化控制键盘和鼠标
- 茶艺到底是什么,茶树菇炒腰花的做法是什么