在喜欢的方向持续投入,找到自己职业的金矿
回忆一下自己接的第1个单片机兼职项目和自己今年第1次录arm线上课程。单片机项目做了2个多月,中间最晚加班到两点和老板一起回家,第二天接着干。收入是我研究生毕业时在威盛一个月的税后收入。arm课程相当于我目前两个月工资。从第一次自己做软件兼职到我第一个睡后收入,我用了13年的时间。文章想分享两点
* 在自己喜欢的方向上持续投入可以看到更多的机会。
* 可度量的目标帮助人快速成长。
我今年本科14年,研究生毕业11年,当我回顾我14年的工程师生活的时候我发现,对我来说特别重要的事,我对于硬件和芯片的兴趣,对于系统软件的兴趣,我还记得我第1次安装Linux是在高中的时候,那个时候由于不知道登陆命令,找了好几本书才知道要先输入root登录之后才可以使用。很多事情就是从窗户纸捅破了就觉得特别简单,我发现我特别喜欢这种系统bring up,从无到有的工作。
后来上大学之后,学的是芯片专业,对于芯片基本的设计制造流程有了基本的了解。我高三报志愿的时候是希望报计算机专业,第二志愿是电子科学与技术,所以到本科毕业的时候,我就希望能找一个软件的工作,担心本科毕业找不到合适的工作,所以考了研究生,考的研究生的方向是集成电路与系统集成,当时想的就是,去做芯片相关的事情。
## 从两个单片机项目开始做底层软件
当我研究生考试考过以后,导师问我在当年5月份有没有时间去做一个小项目,我当时还觉得可能是芯片相关的项目,我还看了看芯片相关的资料,过去看其实是一个单片机的项目,那个是我第1次接触一个单片机的项目,然后在研究生第1年的寒假,我第1次去外面接了兼职,这个项目PoC基本路走通了,后来由于客户的问题没有大规模卖出去。这个项目给我了很多实际的经验,包括与人沟通,包括如何配合上位机编写mcu的代码,当时那款mcu我大概写了3000行代码,从开始搭建实验环境与硬件工程师联调,与上位机联调都是我一个人独立完成的,这也是我第1个独立完成的项目。由于接触到这些单片机开发的项目,我和实验室做系统集成的师兄交流,发现有操作系统移植这个方向,当时我就对于软件怎么能在硬件上跑起来这件事情觉得特别的神奇,所以,在经过反复比较之后,我在研二第二学期期末确定想做操作系统移植这一个方向。
## 研究生期间坚持操作系统移植方向
在实验室学习期间,同方向的师兄已经毕业了,当时实验室主要的人都在数字芯片和模拟芯片的设计这块。我自己学基本来说没有人带,但我觉得对这块感兴趣,所以还是持续在做,包括中间也放弃了去参观超净间,因为对于芯片专业来说真正去见过超净间看一看半导体芯片是怎么生产的还是挺重要的,我当时我就想解决我当时没有解决的一个调试的问题,所以,当别人去参观超净间的时候,我去中关村找一个特殊的线缆,想解决调试的问题。
坚持了两年,在毕业的时候其实没有找到完全匹配的方向。当时其实是觉得威盛这个公司比较有名,后来,机缘巧合在威盛遇到部门调整,我主动要求调到做智能手机内核组。再往后威盛再一次部门调整,找工作面试中星微和天玑科技,有一个很重要的收获就是当我能说清楚自己,未来两三年想做什么事情的时候,对面试的加分特别大。
## 终于在中星微等到做移植的机会
中星微我第1次做了Nucleus是这个实时系统的CPU和soc级别的遗址,也第1次和同事一起做了Linux内核的soc级别的移植,这两个经验对我来说特别重要,我是国内第1波使用当时arm最新的cortex a8的人软件工程师。这样的经验对于我后面积累CPU相关的经验有非常大的帮助,我看到的不仅仅一个特别宏大的技术,更是一个鲜活的发展的技术。了解这个技术是如何如何一步一步的发展起来的,掌握和跟踪也容易一些。
## 迷茫期:过去积累推动我,但是没有大的提高。
时间转到了2012年,由于中星微不会继续用更新的arm CPU。我转而去SUSE做虚拟化,我当时完全是冲着SUSE名头去,其实内心是想补齐自己软件的短板,事后回过头来看,在SUSE的最重要的积累仍然是之前我感兴趣的两方面,一个是和arm相关的软件知识,一个是Linux:我在SUSE看到完整的Linux发行版的开发的过程,这个经验对于我后面在华为,包括在海航还有星级比特,都有非常大的帮助。
后来在华为做操作系统,当时华为其实正需要在自研CPU上面跑操作系统,我正好发挥能有机会去发挥这件事情,包括后来在华为有机会参与鸿蒙内核,其实都是由于这些积累。另一方面,由于我在11年达成了Linux移植计划目标之后,不知道自己的下一个目标在哪里,所以从11年到18年自己的积累就比较散。
## 再出发
转机在2018年年底,之前华为的同事联系我,问我要不要一起做一个arm的课程,其实我当时并没有觉得我arm有多熟悉,但是从道理上讲,这块的确是我长期的部分,我也想通过这个课程,梳理和更新自己ARM知识。有机会做这件事情让我意识到一个技术长期的积累,了解它的发展的过程,并且技术上有一定深度是非常重要的。
所以现在加入寒武纪做虚拟化,这也正是能够发挥我软硬件结合的一个方向,包括后面对操作系统方向,我觉得其实都是一个持续的投入,所以总结一下我自己的体会就是,当你对一个东西动心的时候,如果说能规划出一个可度量的目标,比如说Linux的芯片移植,坚决去做,对自己是特别重要的积累。再举一个胡伟武他们做龙芯的例子,有一代龙芯的芯片的设计规格是满足specint(一个测试CPU性能的评分标准)。
我每个月会迭代一次自己未来的人生一页纸(看自己未来5年,20年和一生到底想做什么样的事情),经过这样的梳理,我发现我最感兴趣的仍然是在芯片上面跑软件这样一个事情,所以我未来5年希望在操作系统里面有更多的投入,目前的计划是自己写一个操作系统。
以上。