这几年工作的重心其实一直没有在代码上,做了很多产品的工作,一直觉得打造一个全面发展的团队一定是我价值所在,所以一直说自己最擅长谈梦想,也确实跟很多人谈了梦想怎么落地、谈了职业规划、孜孜不倦的去聊如何才能踏踏实实的走好职业中的每一步。最近工作的交接有机会静下来想一想,到底什么是程序员,程序员的升级之路到底是怎么样的,为什么现在那么多程序员都不合格,同时构思一下自己的提升计划。
程序员其实一直在用一个特别平面的形象出现在大家的视野中,一提起来每个人总会提起那么几个不太可爱的词汇。而且铺天盖地的媒体对程序员的描述,也是那么个呆呆样子,到了最后程序员对自己打趣的时候,也就是那个样子。我想说那么是不对的,一群正在革新世界上各个行业,群体中60%以上的人都立志要改变这个世界,并信以为真的人,绝对不是那么个样子的。只是我们从来没有想过要好好描述一下自己,这也导致我们职业升级之路,简单到“好好学技术"这么几个字。
”好好学技术“,是个多么难的事,因为大多数行业是不需要平时不断的学习的,我们这个行业经常性的学习也才只能保证自己不被淘汰,还有人雇我们。在这之上要提高自己的水平,需要投入大量的时间和精力,也不一定真的就有效果,而且面对这么泛泛的一个话题,大家是无力的,不知道学啥是有用的、从哪学起才对。外加上一个正常人的自控力所限,结果就可想而知了。
经过这段时间的思考以后,我把应用软件系统程序员的能力线,拆成了3个立面,最终组成一个三角形作为能力的整体。为什么要限定应用软件系统程序员呢,因为程序员做的事也是千差万别的,做别的软件开发的兄弟们我也不清楚你们适不适合这个模型。
这三个立面分别是,开发能力、学术能力、管理能力,下面分别说一下。
开发能力,指的是具体在项目中工作的能力,这个是市面上绝对多数程序员都偏向的能力,泛指能干活。很多人面试的时候强调的最多的就是,我在这家公司也没啥不能干的活了,所以想换一家看看有没有什么挑战。或着某些leader评价自己的下属时会说,这人干活好着呢,巴拉巴拉的态度特别积极什么的。能平铺直叙的把代码写出来,这就可以叫能干活,这种程序员,抽象和复用仅停留在嘴上,可能用过几次,或者小范围的抽象、封装过几个工具,所以他对自己的进步的定义大都依靠外部环境,希望环境能逼迫他进步,也所以很多leader评价这种程序员只能说干活挺好的,然后就开始谈如何积极,试图用潜力陷阱迷惑别人(这招一般情况下很好使)。好一些的能对程序做大量的抽象和复用,了解底层运行机制,并因为底层运行机制,反过来调整代码的写法,进而对重构、调优有自己一套心得,这种程序员世面上就很难找了。
学术能力,之前大家其实会把所有的技术相关的问题统统定义为技术,所以研发升级之路就剩下简单的”好好学技术“,几个字了,往往很多人非常困惑的是,学了也用不上,但是做技术的不学技术也不行。今天我就想正式把这部份拆出来,在开发能力之外,独立强调学术能力。大家都知道,量变是质变的必要条件,学而所用的前提是学的足够多足够好。我们把一部分能力放到学术能力里面去,这样就和实际应用拆清关系了,有些东西是要做研究的,不一定非要实际用起来,学术是可以发表的,可以在一个方向不断加深的,学术类的宣传反过来会加强自身影响力,学术和应用的双向转换会推动能力和影响力的不断提高。为什么国内其实是没有计算机领域的大神的啊,因为我们太过