高级程序员到底长什么样子?( 二 )

  • 还没注意养成一些好习惯,比如习惯性地提炼重复代码、编写风格一致的代码、自测等等 。
  • 很遗憾,看似很初级的阶段,并不只是刚踏入工作的程序员所属,在实际工作中,也有不少工作多年的人还处在这个阶段 。
    中级程序员 - 知道如何做某事对人群按照单一维度进行划分,大多数时候都是符合正态分布的,这里也不例外 。中级程序员是我们身边最多的,包括那些不得不穿上高级程序员马甲的中级程序员 。
    在这个阶段,有些中级程序员开始具备了一定的“连接能力”,但并不是所有人,主要看是不是拥有了“共同体意识” 。
    在专业能力上,中级程序员已经明白了一定的“整体与局部”的概念,但仍然看不到整个“森林”,大多局限在某个模块、流程上 。比如,他们会想“这是做敏捷的正确方式吗?”,但不会考虑“这对整个团队、整个公司会产生什么实际的影响?” 。
    他们开始注重代码质量,因为担心低质量的代码会影响他们视野中的“整体” 。
    但是对于质量的理解还是比较单一 。比如,这个时候你会经常听到他们把“性能”挂在嘴边,在他们心目中“性能”的地位是至高无上的,总是想着你这个方案和我的方案哪个性能更好 。
    同样可以观察一下周围,中级的开发大多数会这样做事:
    • 针对一个问题,可以提出多个方案,但是无法做出准确的决策 。一旦更权威的人给出了他的选择,中级程序员就会不假思索地按照建议执行 。
    • 可以看出代码中的一些设计模式,但是自己写代码的时候除了单例和工厂,其它的几乎想不到 。
    • 在讨论一些时髦的框架和技术的时候总能聊上几句,但是追问这个框架或者技术有什么缺点,基本说不上来 。甚至,草率地在项目中运用上这些时髦的框架和技术,最终导致线上问题频发,不得不让高级程序员来收拾残局 。
    • 能够对自己完成任务所需的时间有准确的评估,但是评估他人的时间不会因人而异,也会以自己作为标准来评估 。
    • 对与自己有工作交集的人员的职能有了一定的认识 。比如,会主动寻求测试的配合,帮助自己交付更高质量的项目 。
    其实这个阶段是最危险的阶段,因为最可怕的不是无知,而是一知半解 。心理学中的邓宁-克鲁格效应(The Dunning-Kruger Effect)讲述的就是这个问题 。
    两位社会心理学家在 1999 年做的 4 项研究,证实了下面的这个曲线的存在 。
    高级程序员到底长什么样子?

    文章插图
     
    在这种状态下,人最容易高估自己,这也是很多导致产生很多“假高级程序员”的原因所在 。
    高级程序员 - 知道必须做些什么高级程序员在“专业能力”、“连接能力”与“领导能力”这三个维度都有所建树 。因为他们不但可以把从 1 到 100 的事情做得很好,也有能力带领其它人完成 0 到 1 的事情 。
    根据我身边所接触的程序员群体来看,我所认为的高级程序员,他们明白没有什么是完美的,相反,问题、缺点和风险总是存在的 。
    他们的决策总是站在为了整体的“平衡”角度去考虑,而不是技术的酷炫或者外界流传的所谓“正确的”技术 。
    他们会更多地关心那些不显而易见的东西,如可维护性、可扩展性、易阅读、易调试等等 。
    高级程序员就好比社会中的成年人,他们踩过足够多的坑,也填过足够多的坑,已经认清了现实的残酷,寻求适合而不是完美 。周到、务实、简单,是他们做事的时候强烈散发出的“味道” 。
    可以根据下面的这些场景来看看你身边有多少“有味道”的高级程序员?