程序员的制胜技
上QQ阅读APP看书,第一时间看更新

1.2 谁是实战程序员?

微软在招聘时通常招两种人:计算机科学专业的应届毕业生和在软件开发领域拥有丰富经验的业界专家。

自学成才的程序员也好,计算机科学专业出身的人也罢,都常常在自己的职业生涯伊始忽视了一件事——行规,即某个行业里最重要的知识精华。非科班出身的程序员虽然之前可能会有一些试错经验,但是总归缺少理论学习和理论在日常编程工作中的正确运用经验。而大学毕业生,虽然理论知识丰富,但是缺乏实践,有时也缺乏对自己所学知识的质疑态度。这两种人开展事业的不同途径如图1.1所示。

图1.1 开展事业的不同途径

在学校里学习的那套体现不出正确的优先级。在学校里,你不是根据知识的重要性来学习,而是跟着人家设计的路径来学习。你不会知道,某些知识在竞争激烈的行业中会有多大用处。时间不等人,按部就班地顺着时间线学习是不现实的——“黄花菜都凉了”。即便是使用世界上最好的框架,但只要有一个bug,你一整个星期的努力就全都打了水漂。客户需求的反复无常,可能会造成你巧妙的设计难以为继。本来想着通过复制、粘贴来重构代码,但实际情况是你仅仅修改一个配置参数值就会影响另外15处代码。

经过长时间的积累,你逐渐有了处理模糊性与复杂性的能力。非科班程序员学会了有用的算法;科班出身的那批人也体会到,再好的理论在实践中也常常会有不管用的情况。

所谓实战程序员,他们所拥有的那些业界经验,都是被提出无理要求的老板“折磨”出来的——这种老板想让人一个早上就完成一个星期的工作量。他们会将所有代码在多种存储介质上同时备份,这做法也是来自他们在几千行代码丢失、一切从头开始后吸取到的惨痛教训。他们可是见过机房里的爆炸激光[2]的,因为有人直接部署了一段未经测试的代码。他们不得不在机房门口与运维人员争吵,希望能修正生产环境。他们也曾尝试自行实现源代码压缩功能,结果把所有内容都压缩成了一个字节,这个字节的值还是255。想必能够发明相应解压方法的人还没出生。


[2] 这里作者用了《银翼杀手》作品里的一个桥段,原书中的C-beams,是铯射线束的缩写,这是一种用于太空战斗的粒子束武器。作者使用这个夸张的意象来代表机房里出现的燃烧和元器件烧坏景象。——译者注

或许你刚刚毕业,还在投着简历寻找工作;或许你对编程正着迷,但还不知道未来在哪里,以后迎接自己的将是什么;或许你走出了培训班,正期待着工作机会,但你并不清楚你与他人的知识水平有多大差距;抑或是你自学了一门编程语言,又不确定自己的劣势在哪。朋友,欢迎你来进行实战。