日期:2021-11-23 17:32:32
过去二三十年,互联网改变了世界,巨大变化的背后站着一个职业,那就是软件工程师。
软件工程师这一行有很多“英雄出少年”的例子,比如比尔盖茨、扎克伯格,年纪轻轻就做出了开创性的研发与设计。看起来,这一行颇有些“出名要趁早”的特性
但其实,一出手就站在金字塔塔尖的年轻人只是极少数,可以说是凤毛麟角。大多数的软件工程师,都是需要在这金字塔里,一个台阶一个台阶往上走得。
如果我们把软件工程师的金字塔分为四大台阶,那它分别是:新手阶段、进阶阶段、高手阶段和行业大神阶段。这四个阶段分别对应这样几种能力:执行力、设计能力、会贯通的能力、沉淀方法论和开创新领域的能力。
不同阶段,所需要具备的能力是不同的。比如,在高手这个阶段,更需要前瞻能力和取舍能力;进阶阶段,需要独立完成需求的能力;新手阶段,需要保质保量完成分配到手上的任务。
执行力字面理解为:执行并完成任务的能力,在西点军校中有一句经典语言“没有任何借口”,也是对执行力进行完整的诠释。
新手阶段强调执行力。就好比你刚进入公司,还是新人的时候,被分配一些任务。指派任务的上级,会非常明确地告诉你任务是什么,用什么样的方法,去达成什么样的目标。
然后,干就完了!你按照方法一步步操作,保质保量去完成,这就是执行力。
小姜是个同事眼中的“老法师”。上班迟到了,会说“路上堵车”、“闹铃没响”等等;工作协作不好,会说“这项工作太复杂……”、“这个我不会,没学过”;工作没业绩,会说“政策不好”或“我已经尽力了”等等,事情做砸了有借口,任务没完成有借口。
最后,公司业绩下滑需要裁员,“老法师”小姜首当其冲被开掉。究其原因,就是工作没有执行力,对公司的经营发展毫无意义。
同事小莫则不然。初进公司,就有一位前辈曾告诫过他:不管接到什么工作安排,你都要想办法干。只有强有力的执行上级的命令和要求,才能不断地提高自己的执行力和工作效率。
虚心听从建议的小莫,三年工作中始终坚持高度的执行力,正因为这一点,他被部门经理赏识,推荐给高层,很快就做到了总经理助理的岗位,前途不可限量。
在现实生活中,需要的正是那种想尽办法去完成任务,而不是去寻找借口的执行力。
与新手阶段不同的是,进阶阶段强调设计能力。这个时候,上级布置给你任务,就是你要独立完成一个工作模块、独立设计程序,上级不会告诉你步骤,你需要自己方法解决问题。
这个阶段的关键能力叫做设计能力一一你要学会分析需求,弄清楚模糊不清的问题:你要学会做技术调研,找到最佳解决方案;你要学会对问题进行抽象和拆解;你要学会搭建原型、设计架构。
一旦进入进阶通道,你在工作上不再止于做执行,而是要更多地发挥创造性,独立设计和优化;在团队里不再止于埋头完成自己的事情,而是要做好一个项目从头至尾的把控,协调内外部的合作关系;在学习上不再止于跟别人学、片式地学,而是向内精进,搭建起自己的知识体系。
这就好比写作文时,老师给你一个命题,你来构思作文结构怎么搭几个段落、每个段落表达什么主题,它们之间如何承接。
设计程序也一样,客户一个需求来了,你要考虑怎么把它用程序现出来,一个程序分成几个不同的模块,每个模块干什么它们之间怎样协同配合。
客户只是提出一个需求,而你要给出合理的、科学的解决方案。
很多软件工程师在高手阶段会认为,只要做到全面细致,把代码写得足够好就没问题了。但其实,作为高阶工程师,这远远不够。
高手阶段最重要的能力有两个:一是前瞻能力,二是取舍能力。核心是具有前瞻能力。
也就是说,你得知道为什么系统今天是这个样子,以及未来它会朝着什么样的方向去演进,对未来有预判,根据预判对技术选型做一些决策。
比如一个系统大概要解决未来两年的问题,那么在未来的两年内,外界和底层技术会发生什么样的变化,你要采用什么样的技术去完成,这都需要心里有数。
想要拥有前瞻能力,第一要有知识的广度,需要去读论文,读业内各大公司的资料,还要去各个公司做广泛的交流,保证有足够多的不同的信息进入你的视野。
第二多做跨行业的交流,跳出自己的圈子,跟其他行业的人,特别是投资人、创业者等见多识广的人群多交流。
除了前瞻能力,高手阶段的软件工程师还需要具备取舍能力。所谓取舍,就是确定自己要干什么,以及不干什么的能力。
要想做好取含,关键在于两点:明确目标、学会预测。第一是明确目标。一个问题可能有很多种解决方案,但是每种解决方案都不可能完美。这时候你就要分析,哪个对最终目标可能产生的负面影响更大,然后选择影响更小的那个。
第二是学会预测。有时候即使你的目标很明确,不好取含,难点在于很多数据你并不能提前知晓。这时就得预测一下,到底哪个方案带来的结果是更优的。
这里的预测和前面说的前瞻性不太一样,它不是指大的时间轴上预测未来,而是说基于现有信息做出一个测,然后完成取舍。最终取舍得好不好,就看你预测得不准。
比如,出租车公司想要把起步价提高1元,总收入会增加还是少?如果有个人觉得打车上班花15元比较合理,你涨了这1元就超出了他的心理价位,他不能接受了一个用户。
如果有个人觉得涨1元无所谓,他一点儿也不在意,那就相当于出租车公司增加了1元钱的收入。
至于要不要涨这1元钱,需要你具备类似于“人脑大数据”的功能,在对用户和系统的理解的基础上做出预测。
而一旦进入大神阶段,大家都公认你是这方面的权威,你对这个方向的判断是非常准确的。同时你还能够总结出一个方法,这个方法不只适用于当前的领域,别人把你这套东西拿过来,还可以解决另外的问题。
大神阶段最重要的是创新能力,能够开创新领域。可以说,几乎计算机、互联网领域出现的每个重大里程碑,都是软件工程师开创新领域的结果。
比如业界公认的行业大神,美国科学家肯汤普森( Ken Thompson)在20世纪70年代作为主创者之一开发出了全新的操作系统UNIX(这一系统不仅可以用于网络操作,还可以作为单机操作系统使用,后来被广泛使用于工程应用和科学计算等领域),就是开创新领域的代表。
进阶软件工程师,就要具备以上所说这几种能力。而且,从这几个台阶来讲,越往上走,要求越高,能达到的人越少。
从执行到设计,可能60%以上的软件工程师都可以跨越但从设计跨越到融会贯通,就大概只有30%;再从融会贯通到形成方法论、到开创新领域,1%都不到。越到金字塔的顶层,人越少。想进阶软件工程师,就去努力学习,好好培养自己的能力吧。
本文主要参考资料:《这就是软件工程师》,来源于网络、。