【探讨】程序员上班五年应该有多大的成长?

【探讨】程序员上班五年应该有多大的成长?

毕业快五年,上班快五年了。刚毕业那会儿写过一篇文章记录大学时候和刚上班时的一些事情。时隔多年后,有必要再写一篇总结一下近几年的一些收获和心得了。

【探讨】程序员上班五年应该有多大的成长?

前言

五年,对于一个程序员来说并不短。五年时间,程序员们应该从哪些方面进行提升,这篇文章一起来探讨。

技术

技术方面的提升是毋庸置疑的,并且是最重要的。程序员最核心的技能就是技术能力了,这里面包括架构、开发、运维等等能力。

其实刚做程序员,我们一般都很关注开发能力,很关注会用什么语言,什么框架,会做多少算法题,那时候写个界面就觉得自己特别牛。

但是越到后面,我们越不关注语言本身,因为语言毕竟只是一个工具,工具的话,有一两款用着顺手的就行,关键还是我们去做什么事情。

我们的重心会慢慢转移到运维和架构能力上,转移到平台设计与自动化建设。比如持续集成系统设计,容器化部署。同时,我们越来越关注系统本身的设计,比如模块化,切面设计,配置化。我们研究框架,发现框架其实就是规定了代码的位置,我们越来越关注代码的位置,代码的位置远远比代码本身更重要。我们开始理解各种设计模式,理解面向接口的解耦思想,理解面向切面的无侵入思想。我们越来越体会到模块化和配置化的重要性。

另一方面,由于系统经常出现的不稳定现象和安全问题,我们也开始做高可用和安全防范方面的研究。分布式部署,热点检测,缓存设计,微服务架构,容器化,持续集成等等,在提高我们构建效率的同时,让刚进来的程序员们能够专注业务代码,不必担心系统和环境问题。而在写代码的时候,我们会注意csrfssrfxss、水平越权、垂直越权等安全问题的防范。

与此同时,我们没事的时候开始对一些常识性问题刨根问底,比如为什么TCP一定要三次握手,多一次少一次都不行;为什么https证书必须有一个中心化的权威颁发机构;为什么当年的ssh框架,只有spring火了下去等等。

技术之外

技术是没有止境和边界的,我们能做的就是保持技术敏感性和快速学习能力而已。但是技术之外,还有很多能力是需要锻炼的。

团队合作能力是比较重要的一个能力,其主要目的是确保团队之内和团队之间的配合成本降低。具体来说就有非常多的细节了,比如在描述一件事情的时候如何能够快速准确,听一个问题怎样才能快速理解,一些重要的措施或者变化落地文档,代码注释什么地方该写怎么写等等。

管理与赋能,这也是非常重要的能力,它的目的是确保团队其他成员能得到成长的同时,将自己的精力从琐碎的事情中解放出来,聚焦在核心的重要的事情上。大项目里面不可能所有事情都是自己做,怎么样拆分模块,怎么样把自己熟悉的事情交给并指导别人做,怎么样从加班的魔咒中走出来,找到加班的原因,从根本上解决。

当然,除了工作能力之外,其他能力也是需要的。我听的最多的就是程序员写文章的能力。一个好的程序员不一定要多能说,但是一定要能写。如果一个程序员写出来的文章毫无章法毫无逻辑,那么他的代码也可想而知。于此同时,ppt的架构和编写能力也是非常重要的,你做的所有成果,最后都将展现在一张ppt里。

总结

其实这篇文章,我已经很少提到具体的技术了,提到的都是一些思想和方向方面的东西。五年之后,程序员真的不应该还仅仅是泡在技术的细节里了,应该要站到更高的层面上看待问题。

【探讨】程序员上班五年应该有多大的成长?