之前很多人问过我这么个问题,说怎样才能成为一名高级工程师?我觉得这是一个很好的话题,技术人的职业规划不管如何发展,总归是一个从初级到高级的过程,不要妄想从初级一步跨越到架构师、CTO 之类的职位,所以高级工程师这个过渡阶段显得就很重要了,那么今天就来给大家说说你们还差在哪里!    

    1、工作经验与技术积累

    说到高级工程师大家的第一印象自然就是工作经验丰富,技术够牛逼。

    注意这里说的是工作经验,并不是指工作时间。有的人踏踏实实做项目,业余时间想着多学点新技术,坚持读书,认真写博客总结,多实践,加上自己本身悟性又不差的,2、3 年的时间都可以有别人 3、5 年的工作经验,成长为公司的高级工程师水到渠成。而有的人混日子,做的项目得过且过,业余时间玩游戏,追剧,也许你在公司工作了 10 年看起来兢兢业业,然而你对自己没有更高的要求,安于现状,不求进步,这类人即使有 10 年的工作时间,却只能止步于此。

    靠着自己持续不断的学习,以及工作经验的积累,一步一步,见得市面多,踩的坑也多,技术越来越牛逼也是理所应当的事,而技术是一个高级工程师最基本的要求,然而我却认为只要不是傻子,对技术有点追求的人,想达到这点不难,只是时间长短问题而已,除了技术,你跟那些真正的高级工程师还有其他方面的差距!

    2、责任心

    高级工程师责任心一定很强,责任心是体现一个人的态度问题,对于一个 bug ,他们永远都会重视,想尽一切办法找到原因并尽快解决,而有的人对于 bug 却是得过且过,解决 bug 的态度就是尝试,认为从表面上解决了就 ok 了。

    我们 CTO 十几年的软件开发经验,有用户反馈 bug ,不管多忙,不管什么时间,一定停下手头上的事情,去找到原因并解决。我在薄荷的经历,曾不止一次跟着他为了解决一个 bug 搞到深夜,有几次深夜发现一个导致用户不能付款的 bug ,我都躺床上睡觉了,被 CTO 喊起来半夜赶往公司去修复的经历,当时还觉得不理解,时间长了,我才意识到这种责任心是职业素养,现在也深深的被感染,在任何时候、任何时间,我的手机、电脑都是不离身,出问题一定第一时间进行响应!对比下你们,你们的责任心够强么?

    3、主动

    有没有这种经历?就是项目做完了,感觉没事可做了,那就刷刷微博,聊聊 QQ 吧。

    然而那些优秀的工程师是怎么样的?

    他们项目做完了会想着哪里代码写的不够好,会想着重构下。    

    自己在赶某个功能的时候太匆忙了,刚好利用这段时间看看有没有更好的办法实现。

    这个项目做完了,学到了不少东西,又踩了不少坑,写写博客总结下。    

    做完这个项目感觉架构方面的知识挺缺乏,自己赶紧学习下相关的知识吧。

    初级工程师是等着被分派事情做的,分派的事情做完了感觉就没事可做了。而高级工程师会自己主动找事做,他们永远不会觉得自己的时间多余,重构、优化、学习、总结等等等,有一大堆可以主动做的事。

    4、敢于承担

    初级工程师在拿到一个稍微复杂点的需求的时候第一印象就是好复杂,我实现不了,哪怕这个技术别家证明可以实现。而高级工程师则不会不做技术调研就说 no ,敢于接受挑战,除非在做过充分的技术调研之后,确信确实实现不了,否则都会付出 200% 的努力去实现它。

    对于技术如此,同样的对于一些解决方案、架构设计、历史遗留问题的解决甚至项目负责人等的挑战都会勇于承担,你不逼下自己,给自己点压力,你永远不知道自己的潜力有多大,而就是在这一次次攻克难关的过程中,你的成长是飞速的!所以,不妨试着让自己承担一些有挑战的工作!

    5、团队合作精神

    如今这个时代再也不是英雄主义时代了,团队才是一切,任你能力再出众,但是跟一个团队比起来,你还是寡不敌众。所以,优秀的高级工程师永远有团队合作精神,永远以团队利益为优先,任何时候,不要做拖团队后腿的那位!

    富有凝聚力的团队是一个公司最具竞争力的核心武器,所以,请从思想上让自己有这个意识,团队永远大于个人!

    6、参与业务、产品

    我见过太多的程序员,产品经理给出需求的时候,闷头就开始写代码,中途需求变动了,然后就开始在心里大骂产品经理傻×,简直就是所谓的「码农」,虽然我们都拿「码农」来自嘲,但是我相信我们都不希望成为真正的码农,我们要做的是工程师!

    而工程师跟码农的区别就是,他们不只是闷头 Coding,他们会参与产品、参与业务,虽然我们的主要职责是开发,但是如果能在需求阶段跟产品经理一起讨论,也许在产品、业务上你不专业,但是可以从技术的角度来一起思考,一起参与进来,尽量帮忙把需求更完善些。

    初级工程师拿到需求会直接开始做,然后做着做着发现有问题了,要么技术实现不了,要么逻辑有问题。

    而高级工程师拿到需求会考虑很多,技术的可行性?对现有业务有没有帮助?对现有技术架构的影响?扩展性如何?等等...之后才会再进行设计编码阶段。

    所以好的工程师是可以对产品有很大的帮助作用的,而且跟产品经理多进行沟通交流,除了技术外,对产品、对业务、对商业你也能学到不少东西,以后的路会更广。所以,不要做闷头 Coding 的码农,做关心业务、产品的工程师!

    最后,以上是我总结的优秀的高级工程师的一些标准,别总说你跟那些人只是技术上的差距而已,除了技术,其他地方可能差的更远。技术可以靠时间来弥补,但是其他几个方面可是时间无法弥补的,希望大家自己对照下,不管是所谓的高级工程师也好,还是之后的小组 Leader,甚至再之后的架构师、CTO,这些特质是必须具备的,问问自己,你们的差距还有多远?