最近很多读者在问职业规划的一些问题,有刚毕业的学生,也有工作了 3 年以上的程序员,今天一起跟大家聊聊,如何成长为一枚优秀的工程师。
一、自身因素
作为一名程序员,要想成为一名出色的工程师,要从以下三点加强。
学会思考
思考可以是技术架构上的设计优化,也可以是业务逻辑上的改进创新。在接到每一次任务时候,你要去想自己到底要解决一个什么问题?解决的价值是什么?目标是什么?有哪几种方案能够解决问题?要学会不断问自己为什么,而这也恰恰是我们很多程序员所缺乏的。在日常的工作中,我们会接到不同的任务,而且通常都只有加班才能完成,自己“懒”的去思考为什么,只想着赶快干完,下班!其实你只需要一点时间,如果现在你的工作中没有思考的时间,那么你就会很难提高。最近在面试一些同行的时候也发现,有些人的工作只是手熟罢了,没有规划,提不出方案,领导安排什么就是做什么,所以我们要从码农的思维转换一下。
自我学习
学习包括自己专业相关的,比如大数据技术栈,某种语言,某种工具,或者某种方法论。学习技术让自己从技术角度考虑自己可以完成哪些任务;学习方法论可以让自己从流程管理方面考虑怎么提高工作效率。
其实现在各行各业都需要学习,特别是对于 IT 行业,技术变化非常快。就像几年前实时处理还是 storm 和 Spark 的天下,现在实时计算引擎 Flink 成长的非常快,占据了各个大厂的技术实践。
实践
光有学习还不行滴,要有实践。我们不是产品经理,工程师都是需要动手滴。(产品经理们不要生气哈,你们其实更不容易)
其实,在处理很多线上 bug 定位和数据处理的坑时,如果你没有遇到过类似的问题,其实很难立刻定位到,没有亲身经历,是永远不知道定位处理一个问题有多大的成就感。在处理问题方面,其实多实践还是有好处的,一方面是熟能生巧,另一反面会增加你看问题的深度,尤其是对以后的开发,可以增加一些提前避坑的方案。我每次面试的时候都会问面试者他参与的项目,遇到了什么问题,怎么解决的。没有处理的线上 bug 的程序员,不是一个好工程师!
二、外部因素
公司
外部因素主要是指公司,大公司可以提供你更多的平台,让你能够专心研究精通一门技术;小公司需要你是全栈,各种打杂,全面发展。
老板
遇到好的老板,会给你指出明路,让你更快的发展。同时也会制定好的管理方法,提高大家的研发效率。比如绩效,绩效的制定是为了让大家制定一个目标,努力去完成,是要有牵引性的,而不是简单的工时累计。同时牵引性的绩效达成了,自己也会有成就感,同时还会获得物质上的奖励。其实对于很多程序员来说,成就感有时候比多拿一点绩效工资更舒服。(程序员们都比较孤傲,哈哈)
其实很多时候自己做的事情重不重要和领导有很大关系,好的领导善于引导你,给你“挖坑”,让你快速成长,而且能给团队争取好的资源,让队友们知道自己做的事情对公司发展是多么重要。
队友
我们经常说“不怕神一样的对手,就怕猪一样的队友”,有时候队友差到带不起来,对整个团队都是有影响的。
每个团队成员的能力都是呈阶梯的,优秀的同事可以带领大家一起进度,给团队贡献好的工具,方法论,并展开一系列培训。每个团队都需要这样一个人,帮助团队 Leader 实现团队技术上的进度。如果你的团队没有这样的人,那你就努力的成为这个角色吧。
三、总结
“优秀的工程师都有相似的品质,码农却各有各的‘菜’”。