做了几年码工,当想理解一个系统的时候,喜欢问这两个问题:这个模块的input,output是什么?这个东西的lifecycle是什么?前者是把系统当黑象,理解静态的的存在意义,后者为了理解动态的过程。
进入硅谷,做了码农,这样的input,会带来怎样的output?硅谷码工的lifecycle是怎样的?包子君起于自己和兄弟们一路走来,从12年毕业入厂,到现在看着身边95年的后辈干劲十足,站在senior IC的位置上何去何从。今天谈谈码农的职业发展随着工龄增加经历的各个阶段。
Disclaimer放在前面,这个总结不适应于天才级的人。在每家IT公司,你总会看到一年升一级,不到10年从junior IC升到director甚至VP,实现跨社会阶级的人。包子君把他们叫天才级别的人,你没有和他们比较的意义,能和天才级的人共事,说明你也不是很差,能从他们身上学个一点半点,就是荣幸了。
第一阶段,入职1-3年间,懵逼期,技术积累阶段,学习做事的阶段。精力主要在technical上。从组里老人的code review里学怎么写好代码,通过组里已有的东西学系统架构。这个时期技术能力逐步起飞,如果组里的老人能力强,要求高,会在这个时期培养扎实的技术基础;如果组里都是小年轻,也可能在hacky的路上越走越远。这个时期码工不太有安全感,看到组里几个人离职,就担心自己进了坑。看到别人跳槽,就也想跟着跳槽。干的活大多是要求清晰和组内人打交道的小活,伴随着技术能力过硬,逐渐从入职的Software Engineer 1 (SWE1)升职到SWE2级。
第二阶段,入职3-6年间,初出茅庐期,系统设计和软能力提升阶段,继续学做事,开始学做人的阶段。在SWE2的位置上越坐越稳,有了独自带项目的机会。同时意识到soft skill的重要性:学习怎么写design doc,email和ppt。学习建立职场的connection。沟通能力和领导能力开始稳步提升。在老板那里逐步建立对你的信心,拿到好项目后,加班加点忙个半年一年,或者干脆通过跳槽,升职到SWE3,也是大多公司的senior级别(Google的T5,Facebook的E5,Amazon的SDE3,Apple的4)
第三阶段,入职6-8 年间,基本出师,做人做事没大毛病。Senior IC是每家公司最想招的人,他们不需要公司的培养,能很快适应新公司,能独立领导一个方向。因为不同的经验和能力,他们表现出不同的专长。有的senior每天码1千行代码轻轻松松,有的对系统理解很广,总能想到大项目给组里创造活,还有的喜欢mentor他人。Senior因为经验和能力获得好的待遇和舒适,也因为没有明显的增长点而经常留在这个级别好几年,甚至上10年。继续做IC,还是转manager?是每个Senior都想过的问题。如果运气好组里扩张,有机会转成manager;或者抱到了粗壮大腿带着飞,不断有大scope的项目,也就能继续在IC的路上继续上升。如果都没有,或许只剩下打开LeetCode另寻高就,或者专注发展个人爱好或者家庭了。
总结来说,码工的这三个阶段,都有它存在的意义,是skill set和mind set逐步提高的自然过渡,共同组成了码工的lifecycle。
你,处在哪个阶段?