回眸与思考非计算机课程的毕业生自己五年来的职业生涯猿
看到过几篇程序猿的职业生涯过程。我也来当一回写手吧,希望对和我一样以前磕磕碰碰过的人有帮助。
谨以此文纪念大学毕业五周年。
我的大学专业全称是无机非金属材料project,这专业多与玻璃、水泥、陶瓷打交道,高大上一点的是各种珠宝,前沿一点的是纳米材料。想先声明的是。我不是在黑自己的专业,仅仅是每一个人都会有自己喜欢和适合自己的工作和生活状态。
我尝试过为了完毕一个程序而废寝忘食后就爱上了这个职业,即使知道这是个加班如家常便饭的工作也义无反顾。而且后来我发现材料project的学习经历并没有白费。不少通用的知识技能在此专业会收获很多其它。所以跨领域实践中我反而会在某些方面具有优势,这个后面会再提到。
我的程序猿生涯起始于校园招聘。那时我的第一个东家来我学校宣讲。它是做笔记本电脑代工的台企,世界500强之中的一个。在校园网看到有要求材料project的职位我就去了,但是在宣讲会上却被告知无机材料project的岗位已招满。在大家准备走的时候,我看到还有招聘“软体project师”(台企的称呼,即软件project师)的岗位。由于不想白来,我就在简历顶部写了这段话然后投了这个岗位:
午饭后,我同学看到简历筛选结果的海报上有我的名字来给我报喜。那时候我确实喜出望外。先是笔试,专业知识+英语。两个我都有80分左右,又通过了。到了面试,面试官告诉我。就是看到简历上那句话才让我去笔试的,结果笔试成绩也不错,所以让我来面试。或许这是意料之外的事情。本来没抱着希望也就不怕失望,因此我非常淡定,面试表现非常好。我还指出自己成绩单上仅有的两门和计算机有关的课程,C语言和微机原理。都非常高分。就这样,我得到了offer。
是不是好奇我的简历上有什么打动了面试官?事实上都是些我无聊时候做的事,基于兴趣。却无心插柳柳成荫:平时帮同学们修电脑装系统。自学了VB、VBA、C++、VC++/MFC。考了全国计算机三级证书;当了几个月学生协会的网络部部长。在淘宝倒卖手机和笔记本电脑……
2009年7月11日,我去公司报到了。就这样開始了程序猿的生涯。尽管名为软体project师,但实际上和硬件打交道很多其它。工作内容是笔记本电脑主板的BIOS开发(当年EFI BIOS開始普及)。
熟悉计算机底层的人会知道,BIOS是PC机架构中驱动程序和硬件的中间层,所以工作内容也会多和相邻的这两层有交集。
依旧是无心之举带来惊喜,常常装系统和买卖硬件的我对上下这两层的基础知识非常熟悉,学BIOS也就相对于其它同事轻松多了。更幸运的是。我遇到四个非常好的师傅,给予了我非常多的指导。加上我疯狂地补习汇编语言和阅读硬件的规范文档(specification,可理解为电路级的说明书)。对这工作非常快就上手了,得到大家的肯定。
虽名为研发,实则是从測试做起。刚開始时没权限接触BIOS代码,但要写工具来辅助測试,还须要去生产线澄清各种无法开机或蓝屏的问题。硬件的软件端測试案例都是数以万计的,出现Failed的情况就得协助真正写代码的老员工去定位问题。
这些案例我如今大多数忘记是什么了,但其精细程度却让我印象非常深刻。硬件不同于软件能够非常easy升级。出厂以后非常可能会保持原样直到报废。所以必须在交货前通过无数的測试。在我后来的职业生涯中,我发现我必须感激这个经历,由于计算机生产的严密性深深印在我脑海,在我日后写代码时都会习惯性地想出多个測试案例来。从而在编码阶段防御了bug——这是我写代码少bug的原因之中的一个。
入职半年后的某天。我在宿舍里继续看英文的硬件文档,看着看着认为非常烦躁。
我发现这并非我想象中的软件世界。由于看文档学习到了新知识而非常兴奋。但是手痒了想实践却无法动手。想调试硬件当然就须要硬件了,但所需的东西出了公司大门就没有了。简单来说。做底层开发的成就感不如做高层软件来得快和直接,所以那时起我萌生了退意。
即使后来我做了纯软件的工作,这第一份工作学到的硬件知识没白费。
我比一般程序猿对底层有更清晰的认知,从而对软件怎样工作有更深刻的理解,这样的理解正是编写高效程序的基础。
当时我做好了最坏的打算,假设找不到。我就去參加北大青鸟之类的软件培训班,即使半年脱产我也要坚持。
为了留多点钱去应对最坏的情况,我离职时没有请全然部的同事吃个饭,如今想想还有点遗憾。