(一)入行

天赋和努力哪个更重要?我一直认为是天赋更重要,努力是可有可无的。我叫沈渤海,是一位嵌入式开发方向即将踏入社会的准程序员,东北籍男子,有着自测135的傲人智商数据,家族遗传基因还赐予了我超强的人际能力,朋友多是我身上唯一可以用复数来形容的特征。但是当今是被各种Web应用、移动应用、PC应用笼罩的IT年代,我这种方向的程序员在圈子里却很孤独。

孤独的原因有两个:一是学校里大多都是应用级别的专业课程,譬如C/C++等等,自从我们学校开启Java课程后几乎所有人都奔向了Java,因为编程语言排行榜Java名列三甲是不争的事实;二是学嵌入式开发需要较全面的专业知识和从业经验,并不是“一断奶”就可以立马从事一线开发工作的,根据我不成熟的观察,我好几个舍友放弃专业成为BS开发人员后日子过得非常滋润。以上两个原因除了导致相关人才很紧缺外,也导致同行圈子很小,不是忍受不了高门槛而放弃,就是忍受不了枯燥的工作过程而移情别恋其他IT领域。

我虽然孤独但还是坚持了我的专业和路线,我认为从一而终是优秀程序员的一个基本素质,而且优秀的人才肯定是稀少的,所以才孤独。同时我“无耻”地觉得只有我们这些和底层打交道的才能称为真正的程序员,一些和应用级层面打交道的程序员那简直就是踩着巨人肩膀的小儿科。

正式踏入社会前,我的导师告诉我现在大学生就业难,很多学生因为没有工作经验被拒之门外,建议我先找个小公司积累一些经验再往大公司发展。当时的我把导师的话完全当作了耳旁风,因为大学生就业要素中我最“看不惯”的就是经验,我认为学习能力才是衡量一个程序员的最佳准则,而过多的经验只会让人造成思维定势,缺乏创新。我用盖满奖章的成绩单直接投递了一个大公司,我打算用实力证明我是对的、导师是错的。

如预期般,我接到了这家大公司的面试通知。面试的时候HR经理告诉我,嵌入式开发是他们公司最最核心的核心技术,所以来公司承担嵌入式开发前景很广阔,犹如滔滔江水般无法阻挡。一种嘴里含着蜂蜜还被蜜蜂亲一下的快感油然而生,我怀着对“滔滔江水的前景”无比敬仰的态度,报了一个不可思议的薪水要求。HR经理会心地笑了,他告诉我以我这种职场态度成为公司栋梁是指日可待的。

公司有两大业务,一块是基于医疗仪器类的行业化业务,这个部门是所有人员撕裂了嘴都想闯进去的部门;另一块是公司自有的电商网站业务,据说这个部门是就算把你嘴撕裂了你也不想进的“毫无前景”的低端部门。

我理所当然地进了嵌入式开发部。这个部门的经理名叫李霞,当我见到这位经理的真身时才知道一个人的性别和名字真不能表象视之。第一天入职,竟然由李霞亲自给我安排任务,而第一个交给我的任务让我嗤之以鼻,竟然是文档整理工作。“我觉得这项任务不适合我。”我极力避免李霞用边缘化的非代码工作阻挡我“职场前进的道路”。

“要从基础熟悉和做起才能最后承担核心工作,何况你现在什么都不会。”在我看来李霞的话无异于全盘否定了我。我的肺在三十秒内积累了足够多的二氧化碳。

“李经理,不是吹牛,任何一项技术我都能短时间内学会,而且能达到中等偏上水平!”我很激动,昧着良心给自己脸上抹金。

“不要说任何技术,你去电商部门保证你都不是最优秀的!”李霞也开始和我较真。我觉得程序员之间最常见的就是为一个模糊的是非观产生激烈争辩。

“那不可能,电商部门的技术根本难不倒我。”我的话逐步脱离我国各种美德中的“谦虚”一项。

“你都做过些什么?”李霞突然换了一个话题。李霞很明显凸起的喉结使我立马产生了抢夺他身份证帮其改名字的冲动。

我用简练明了的语言表达了我的技能特点,表情略带有那么点得意感。说实话我大学基本功学得还是很扎实的,连续四年一等奖学金、学生会主席,实习的时候跟着导师完成了多个学校外包的商业项目,我在我们系有个很靓的外号叫做“学习王子”。

“哦,那就是一点经验都没有。”李霞的结论可以看出这厮对大学里任何元素都不屑一顾或者认为不值得一谈。

话说初生牛犊不怕虎,我承担了一次东北虎的角色。“学校里做过的案例不算经验吗?再说开发经验有这么重要吗?”我不认可李霞对经验的诠释,我决定更猛烈地和他较真一把。

“那你觉得开发最重要的是什么?”李霞反问。

“当然是对技术的学习和理解,何况我在学校完成了这么多模拟项目,经验绝对够了!”我意气风发地回答。

“哦,行,我明白了。”李霞说完这句话转身离去,留下孤单瘦弱的我杵在走廊中。

“你完了,李经理是有名的记仇经理。”旁边突然冒出来一个脸圆圆的貌似向日葵般的男同事告诉我,我表示根本不认识他。

“我怎么他了?”我纳闷地问向日葵,因为我实在没有察觉出我哪儿得罪了他。

“你看不出?”向日葵停下脚步跟我解释,“李经理在公司干了二十年了,是公司的技术大牛,而且是唯一没上过大学的大牛。”

“哦,没上过大学啊……”我的表情连傻子都能看得出,是一种鄙视的神情。向日葵笑着径直走开了,孤单瘦弱的我继续杵在走廊中。

三天后,我被通知调入电商事业部。我跑到李霞办公室追问其原因,李霞头都没抬告诉我:“经验丰富、能力卓著,应该到业务二部帮助新人成长,期限是一个月,如果考核通过则返回部门。”我囧了,竟然忽略了“强龙不压地头蛇”这一出。

(二)第一个脚本

没想到我莫名其妙地就变成了我以前不屑一顾的那类程序员。电商事业部的头头安排了一个项目经理成为我的直属领导,我揉了一下眼睛,竟然就是前几天“善意忠告”我的向日葵,而我被他安排的第一个任务是脚本库的编写。

“有难度吗?给你两周学习时间。”向日葵一脸严肃。我点点头又摇摇头,其实我很想说“有难度但没前途”。

什么叫脚本?我表示我真的闻所未闻,经过我一个上午度娘和谷哥,终于了解到原来脚本就是JavaScript。连续两周疯狗般的学习,直到我感到胃部开始翻江倒海,终于自认为达到了六成功力。都说低往高学难,其实高往低学也不容易,好在我有坚韧不拔的毅力,支撑住了。

QQ上几个同学据说在国内几个嵌入式开发企业干得风生水起,我附和着告诉他们我也在做某医疗仪器的嵌入式开发并有望成为技术组长,这帮人眼睛终于绿了一回。我告诉我自己,只需蹲在这一个月便可回到真正的技术队伍,面包会有的,一切都会美好起来的。

一周后,向日葵让我完成一个用户提交表单的验证,需要标准且规范的嵌入式接口,其他程序员只需引用库文件稍作设置就可以自动完成对未知页面的各种验证。末了这植物还告诉我完成期限是当天晚上。IT界的加班就是在这不经意中产生的,都说程序员加班是自愿的,我感觉这个自愿是首先产生在“被逼”的基础上。

我开始了一天的脚本库程序员之旅,我的目标和计划是尽量在下班前搞定,这样可以不用加班。

早上九点到十一点:我模仿网上的案例开始设计一个DOM简易的解析器,用来判断表单的哪些控件会隐含在表单中。

中午十一点到下午一点:我完成了各种正则表达式的验证规则判断,并设计了不同验证规则的标记配置,注意此时我午饭没吃,我第一次体会到胃贴到后背是什么感觉和心态。

下午一点到两点:我被部门其他程序员喊去开会,并对我的验证库进行指手画脚,我用笔和纸记了满满一页。

下午两点到三点:我被HR部门喊去开会,会议的主题是新员工对企业文化的认识。

下午三点到三点半:我被向日葵喊去开部门小范围会议,主题是对部门工作积极性的自我培养,注意此时我已经很憔悴了。

下午三点半到四点:其中我上了十五分钟的厕所,因为公司厕所大号“罐头”坏了一个,排队是必然的。后十五分钟我偷偷跑去门外抽了根烟,结果被迎面走来的李霞撞了个满怀,这厮用极度冷的笑容回报了我。

当我回到办公桌上继续开始脚本库编写的时候,离下班只有一个半小时了。这时我才知道IT界的加班并不是不经意产生的,而是不得已产生的。

晚上六点,我进入了加班状态。向日葵告诉我晚上快餐可以公司报销,我说吃两盒可以吗?向日葵惊恐地看着我摇了摇头,叹了口气。

夜深人静,我想起了《Office有鬼》这部电影,毛骨悚然的我晃晃悠悠地走到复印室拔下了打印机插头,并把电脑搬到了拥有暖气的会议室。

连续多个小时的奋战,我终于在敲完最后一个代码的时候迷迷糊糊地睡着了。

(三)“经验”和“积累”

当我第二天把我有生以来第一个代码成品交给向日葵时我一脸得意,因为这个任务完成后我就可以回我的原部门做真正的开发了。

“你是不是觉得你现在干的事情太过于小儿科?”向日葵竟然会“读心术”。

“领导,说实话我来公司不是来做这些的,这些体现不出我的价值。”这句原话我到现在还记忆犹新,原谅当时的我根本不知道什么叫价值。

“那你觉得这次的工作完成的怎么样?”向日葵换了种表情和口吻问我。

“肯定很好,我都测试过了。”我心不虚。我认为我这种高端程序员如果连这种和脚丫并称的技术都搞不定,何来的颜面见我的导师。

“好,那我们来测试一下。”向日葵竟然说干就干,他把我的脚本库复制在他的电脑上,当着我的面熟练地完成了一个多表格表单的界面,并勇敢地用<script>勾引了我的库链接。我发现我小看向日葵了,我一直以为项目经理级别的人最擅长的不是写总结就是写检查,而没想到向日葵竟然是一个技术如此娴熟的程序员。

“可以开始了吗啊?”向日葵按住了F5,我知道一旦他松开这个按钮,页面立马会加载我昨晚包夜完成的脚本库。

“当然可以!”我没想到我说这话时底气只能再维持几秒钟。

向日葵打开了IE8浏览器,在不同类型的表单控件间输入不同格式的值,并发疯似地猛按各种提交键,于是各种不同的提示和限制机制如滔滔江水般奋勇而出。我小小地得意了一番,迎头痛迎向日葵的赞叹。不过接下来——

火狐:在判断文本框是否为空的一个节骨眼被一个脚本错误卡住了。我的脸微微泛红。

Chrome,错误提示涛声依旧,一个弹出层直接导致一个下拉框无法下拉。

IE6:我的库文件没有起任何作用。

Safari:除了综合以上错误外,验证提示文字还乱码。

我脸涨得通红,我没想到向日葵会用如此多的浏览器测试。“是你删掉还是我帮你删掉重写?”向日葵给我下了结论。此时用猪肝来形容我的脸色一点不为过。

我虽然用了近一个通宵完成了向日葵交代给我的任务,但是却用了近一周进行修改和完善。当我终于在一周后把完整的库文件交付给向日葵时,没想到这厮仅仅看了一分钟就关掉预览窗口。

“不用我的代码?”我诧异。

“呵呵,可以用但最好不用。”向日葵的话明显是在调戏我。

“哪还有问题?”我急了,士可杀不可辱,向日葵他可以指出我的错误但是不能藐视我的成果。

“没有问题,这回都对了。”向日葵很淡定。

“那这是……?”我不知道他葫芦里卖的什么药。

“你真想知道为什么?”向日葵的表情告诉我最好不要深究原因。我很勇敢地点了点头。

向日葵不知道从哪儿拉来几个库文件,打开记事本。接下来奇迹发生了,他的手如万马奔腾般地在键盘上驰骋,其速度之快让我根本看不清他的手指按键的节奏。大约十五分钟后,向日葵用各种浏览器测试了他写的代码。果然,他的代码在我面前运行得一帆风顺,各个不同类型的浏览器很舒心地解释了它所有的功能点,而且样式美观、提示友好。我迫不及待地打开源文件,我发现我一周完成的近五百行代码被向日葵用七十行不到就解决了,而且各种代码的规范和高效写法彰显向日葵深厚的技术功底。我的脸再次泛红,这回没有经过微红阶段而是直接跳到了猪肝色。现实告诉我,我和向日葵的技术水准相差了十万八千里,而造成如此庞大差距的就是我之前一直不屑一顾的“经验”和“积累”。

(四)评分

一个月终于过去了,李霞如约而至,向日葵给我的评分竟然是优秀,这意味着我可以回到开发一部了。我打算接受李霞安排给我的“文档整理工作”。在向日葵手下工作一个月让我认识到:技术并不是一个单一靠代码堆积的体力活,而是一个智慧和经验相辅相成产生的有机体,两者缺一不可。这映射到广义上来说,努力和天赋也是相辅相成的,努力是一种基础,而天赋是一种加速度,要想跑得更快,你必须既有原始速度又有加速度。

晚上导师给我打来电话问我工作近况,我说我开窍了也受鄙视了,导师惊讶地问如此高智商的我被谁超越了?我告诉导师是“脚本”,踩得很痛,但是踩得也很通。