你应该雇佣老程序员的五个理由

译者简介:ASCE1885,《Android 高级进阶》 和 《Android 高级进阶(源码剖析篇)》作者
原文链接:https://joshondesign.com/2017/07/02/hire_old_programmer

你应该雇佣老程序员的五个理由_第1张图片

你应该雇佣老程序员,我没开玩笑!当然,年长的程序员不会像大学毕业生那样能够工作那么多个小时。他们有孩子和配偶,要还抵押贷款,而且还要参加垒球比赛。他们不会在办公室通宵玩 XBox 和乒乓球,也不会每周工作 80 个小时,实际上他们将会享受属于他们的假期时间。当然相比年轻程序员,他们的薪资待遇更高。尽管你有这么多理由不去雇佣老程序员,但你别无选择。最简单的一个原因是:他们值得你的付出。我知道这一点,我就是这样一名老程序员。

经验

老程序员也许不会像 25 岁时那样在大脑中能装下那么多代码,但我们有着非常丰富的经验。我们知道,不管你的脑袋有多大,每个系统的代码规模都将会变得远远超过你大脑中所能容纳的量,所以大脑能装下多少代码并没有你想象的那么重要。相反,我们理解模块化的设计思想,我们是传说中的 10X 程序员,当然不是因为我们写的代码比其他人好得多,而是因为我们已经经历过了一切。在过去这些年,我们已经使用过很多编程语言,因此我们可以很容易学会任何新的语言。我们知道语言间的共同点,编程语言的概念一次又一次兴起,拥有着多年的经验,我们可以发现语言的相似之处并指出差异的地方。

判断力

“The bitterness of poor quality remains long after the sweetness of low price is forgotten.”
“在廉价所带来的甜蜜被遗忘后,劣质所伴随的苦楚将依然留存。”
— 本杰明·富兰克林

老程序员拥有判断力。他们知道在何处可以将系统进行模块化拆分,并保证是可靠和可测试的。他们可以从架构图中看出系统可能的瓶颈在哪里。(你是拥有大量的数据还是大数据?这一点很重要)。他们知道如何为特定项目选择哪种技术,以及如何优化可靠性,性能和开发速度(三者中任选二)。他们知道如何做出权衡。即使他们从来没有为你的项目实际写过一行代码,但老程序员还是很有价值的。他们懂得如何建立质量保证,从长远来看,高质量意味着更低的维护成本。

知识的深度

“True knowledge comes with deep understanding of a topic and its inner workings.”
“真正的知识来源于对某个主题及其内部工作原理的深刻理解”
— 阿尔伯特·爱因斯坦

老程序员对特定领域有深刻的理解。这些知识使得他们知道从哪里可以找到系统的 bugs,以及如何完全避免这些错误。例如,我非常熟悉 GUI 工具包,过去这些年我用过很多种,我待过三个核心工程团队(Swing,JavaFX 和 SubArctic)。出于兴趣,我曾经四次从零开始构建过自己的工具包,我甚至可以写一个过去四十年 GUI 工具包发展的详细历史(也许我应该在某个时候把它写出来)。

我可以立即投入到新的 GUI 系统上并开始工作。如果我看到三个按钮都向右移动了 68 个像素,那么我可以立即判断出 bug 位于三个位置其中之一(可能是全局到局部转换代码的问题)。如果你想创建一个新的组件,我可以确切的告诉你需要哪些扩展点。对于 GUI 工具包工作原理的深入理解,意味着我真的可以比别人更快的构建应用程序。我有 25 年的肌肉记忆做支撑,我掌握了 UI 工具包的深层知识,对于其他人来说,他的深层知识可能是内核驱动程序,或者数据库索引,或者编译器等。关键在于,深层知识相比能花多长时间编写代码和纯粹的编码能力更重要。

知识的广度

“A small team of A+ employees can easily out perform larger teams of B and C employees.”
一个由 A+ 员工组成的小型团队可以轻松击败由 B 和 C 员工组成的大型团队。
— 史蒂夫·乔布斯

老程序员涉猎都很广,虽然我专注于应用程序和前端开发,但整个开发技术栈我都玩过。我曾为无界面的内存受限系统编写过代码,还编写过解析器,数据库和固件程序,甚至写过一个非常糟糕的内核驱动程序。我写过画图相关的 demos,生成过千兆字节的测试数据等等。当然,你不应该聘请我来建立一个数据库,编写固件程序或者设计你的下一个网站,但我由于有足够的涉猎因此了解这些系统是如何工作的。这意味着我可以和数据库专家或者固件专家很好的交流,我知道如何有效的和其他领域的人交流。正是这种沟通能力使得我成为一个富有成效的团队成员,而不仅仅是编写代码的。

沟通技巧

任何一个四十多岁的程序员都必须具备良好的沟通技巧。这些能力和他们的编程能力一样有价值。一个新的 API 如果不能有效的传达给它的使用者,那么它是毫无价值的。大多数大型软件项目的失败不是因为代码不好,而是因为沟通相关的问题。

没错,老程序员需要花费更多的薪资,而且看起来工作时间更少,但实际上我们完成了更多的工作。我们可以正确的评估并按时发布代码。我们能够构建出更少 bug 的系统,同时拥有合适的性能。我们可能写的代码更少,但产出更多的商业价值。这就是我们值得高薪资的原因。

你应该雇佣老程序员的五个理由_第2张图片

你可能感兴趣的:(程序人生)