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