背景
杜欢在我的眼中是一名非常出色的全栈工程师,他拥有 10 年以上的开发经验,无论从技术深度和广度上都有很不错的造诣,即使已经做到了部门技术总监的位置,还能始终保持着对技术的热爱和追求,令我非常佩服。他根据多年的经验,总结出程序员写代码的水平分为以下几个发展阶段:
懵懂
刚开始学习编程或学习一种新技术的时候,会有种雾里看花的感觉,似懂非懂,就算记住了也不会用。要突破这个阶段的方法就是“练习”,通过各种项目让自己熟练起来,做到任何一个不太难的业务需求可以快速想到解决方案并且开始动手实现。
会用
通过 google、stackoverflow、各种专业社区、各种文章等渠道,自己慢慢会发现更大的世界并对这个世界中各种技术产生了兴趣,理解一个简单的新技术不再成为自己的瓶颈,自己慢慢可以驾驭非常多的工具、组件、库、设计模式、算法、语言等,主动不断扩大自己的视野,尝试在项目中使用各种新东西,对引入一个新技术开始变得非常兴奋,最终可以做到快速的吸收并理解一个新技术的用法,也知道什么时候该用什么技术。
会看
出于某些机缘,比如遇到了一个比较难以解决的 bug,开始深入阅读某种日常用到的技术的内部原理,从而开始发现更多自己所不知道的东西,并开始对各种技术的背后实现产生兴趣,慢慢建立起一个相对完备的知识体系,对某个领域的所有的相关技术都能够如数家珍一般的讲出来,第一次开始有一种“时间不够用”的无力感,面对浩如繁星的开源/闭源代码量深深感觉到自己的渺小,越来越不愿意去轻易重造一个轮子,真正懂得怎么去评估一个开源技术的好坏。
会写
突然有一天,在钻研某种技术的时候发现一种突破性的思路,并且通过谨慎调研后发现确实有实现出来的必要,于是就将大量的时间投入在实现理想的过程中去,并且主动的用各种技术来提升自己的工作效率,最终拿出来的成果确实如预计一般站在了业界的最前沿。
会想
当自己已经站在了业界这个领域的最前沿,除了继续动手实现最核心的代码,还找到了未来三年的发展方向,并且第一次勇敢的自我否定抛弃了自己原先的想法。
总结
如果长期不写代码一定会让自己的水平下降,如果长期只做当前级别以下的事情也可能会退化。绝对不是说“会想”了就可以每天冥想、指点江山,自己不动手就很容易被后来者超越并且开始固步自封,从“会想”变成自以为是,退化到之前的阶段。 杜欢认为他目前一直停留在“会写”的阶段,甚至有可能已经退化到了“会看”阶段,距离“会想”还非常的远。我看完后感觉自己在“会看”和“会写”中徘徊,也远没达到“会想”的阶段。
非常多的程序员停留在“会用”的阶段,满足于能够解决问题,还没能看的更深更远。在“会用”的阶段很容易产生一种无所不能的错觉,觉得已经没什么功能实现不了,开始重复造一些并不怎么好的轮子,造轮子之前甚至都没有去仔细研究过业界最先进的技术实现细节,如果一直处在这种错觉之中,基本上就很难再成长了。其实这种现象在大公司中也常出现,很多程序员仅止步于写代码的初级阶段,还是非常可惜的。 在进入“会看”之后会有一段非常长的痛苦期,这段时间里会非常感觉一个人的渺小,既没有时间去穷尽所有技术细节,也没有能力去找到前人没有尝试过的突破性创新,简直是一种煎熬。有不少业界大牛就停留在这个阶段,迷失在各种细节之中,成为一个知识丰富但缺乏创造力的人。