毕业几年,在很多事情上磕磕碰碰,最后还是走着普通工程师的道路。
一般的三年升高级的坎,也是遇到了,什么样的工程师可以作为一个高级工程师。
这里的高级工程师指的是真的写代码的工程师,而不是所谓的管理岗,当然带初级工程师还是必要的。
一、能力
能力上不去,这个说不过去。能力这个我总结了一下,一共分为几个方面的能力:
1、知识体系化
基础知识要成体系化,这也是我近期比较喜欢的一种学习方式,体系化学习。
这样的知识体系会比较牢固,而且对于知识的了解和综合使用能力会更加地高。
2、代码设计能力
我们上级跟我说,你现在写代码跟普通的刚毕业的学生的区别不应该只在于满足需求,你应该从框架层面,更高的层面来思考这个问题,形成框架,并且让代码的可读性,可维护性,通用性更强。
简单地说,就是具有一定的抽象能力,把实际问题转成代码,然后设计合理,有必要的话写出一套合适的框架性代码,然后才是实现功能。
3、代码重构能力
并且具有重构代码的能力,其实重构是一件非常难的事情。
重构的目的是什么?要想清楚这个事情,为什么需要重构,是重构还是修补?是因为性能不行,还是可读性不行,还是太多多余的代码,无用逻辑,还是设计不合理,还是方案陈旧需要使用新的解决方案替换?什么情况下要用什么样的手段。
需要对原有的逻辑理解透彻,对原有的代码也有非常深入的理解。深入思考后,设计出一套重构的方案,这个才是重构的真正意义。
二、对于产品的思考
这个非常重要,因为一个功能,照着做出来就行了,结果有一些逻辑真的不通,或者不合理的地方。你能不能有自己的思考和理解,还是说就是按着这样做出来。
如果一个功能,产品做原型的时候没有考虑到,而你是实施的人,你能不能发现这个不合理的地方,你有没有这样的想法。
如何发现这个不合理的地方呢,首先,需要对产品有一个完整的理解,需要有一定的产品思维,这个功能是为了解决什么问题,为了实现什么样的目的。这样做能不能达到这样的效果,在做的时候多思考这个问题。
三、思考问题的高度
如何从Owner的角度/高度来看待这个问题以及要求自己,把自己摆在那个位置上然后进行思考,自己应该做到什么。
如果我是这个项目的Owner,那么我是否应该了解整个项目的设计,达到的目的,整个项目的了解程度是否应该要比别人更加深入,当遇到问题的时候,我能不能快速定位解决,是不是要review其它人的代码,是否要考虑整个项目的设计,框架是否合理,有没有可以完善的地方。
四、你能否Own起一个项目
这个应该就是综合能力的体现了,如果给你两个人,做一个项目,项目如何设计,人员如何分配,如何保证工期,如何保证质量,如何保证线上问题的快速响应等等的问题。
综合起来思考,当一个高级工程师并不容易,所需要的条件和要求也是非常高的。
系统性地分析问题,根据自己身的条件综合对比,可以快速补齐短板,增强综合能力。
互联网寒冬来了,这个寒冬,对于不够优秀的人来说会非常寒冷。努力让自己优秀,才能四季如春。