作者:Josh Marinacci
翻译:Vincent
尽管这是违法的,但年龄歧视在IT行业依然盛行无忌。
本文作者是一名国外经历很丰富的老程序员了,他从经验、判断力、知识面的广度和深度等几个方面阐述了为什么需要雇佣一名老程序员的原因。
你真的应该雇用一名老程序员。这一点我深信不疑。这些资历比较老的程序员不会像那些刚从大学里面毕业的学生那样工作那么多时间。他们有孩子、配偶,需要还房贷,有机会还要去看一场比赛。他们不会在办公室里通宵玩Xbox和乒乓球,也不会每周工作80个小时,实际上他们会利用他们的假期。当然,他们的工资比年轻程序员要高。不管有多少种理由会说雇佣老程序员有哪些不好的地方,但是你仍然需要一名。原因很简单:他们就像巴黎欧莱雅那样值得你拥有。我之所以知道这一点,因为就是其中一员。
经验
老程序员可能无法像25岁时那样,在脑子里保存那么多的代码,但这些人的经验非常丰富。我们知道,每一套系统的规模都在越来越大,大到最后都超过了你的脑容量——无论你的脑袋有多大——所以说能不能记住代码并不是像你想的那么重要。相反,我们知道如何对每个系统进行模块化。我们就是传说中的“10x程序员”,不是因为我们代码写的有多好,而是因为我们已经看穿了一切。我们可以快速了解任何一门新的语言,因为我们已经用了很多年了。我们知道这些开发语言的共同特征。语言这个概念一次又一次地流行起来。只要有足够的时间,我们就能发现其中的相似之处,并突出这些不同点。
判断力
“在低价所获欣喜被遗忘后低质量带来的苦恼会长久保持。”
——本杰明.富兰克林
老程序员有更好的判断力。他们知道需要重点测试系统的哪个地方,哪些地方是不需要的。他们可以从架构图中看出可能出现的问题。他们可以告诉你针对特定项目可以运用哪些技术,以及如何优化可靠性、性能或开发速度(选择任意两种)。他们还知道如何做出好的权衡。即使从来没有为你的项目写过一行代码,但是他们也是对得起他们的收入的。他们懂得如何提高质量。从长远来看,质量意味着更低的成本。
学识渊博
“真正的知识来源于对某个主题及其内部工作的深刻理解”
——阿尔伯特·爱因斯坦
老程序员在特定领域有很深厚的知识。这些知识帮助他们知道在哪里寻找bug,以及如何避免bug。例如,我非常了解GUI工具包,已经用了几十年了。我曾在三个(Swing、JavaFX和SubArctic)核心团队中工作过。我从头开始构建了自己的工具包,只是为了好玩!我知道UI工具包。我可以写出过去的40年里关于工具箱的详细历史(嗯……也许我应该在某个时候把它写下来)。
当我在一个新的GUI系统上工作时,我可以立即投入进去。如果我看到三个按钮在右边移动了相同的68个像素,那么我就可以立即看出这个bug是在三个位置中的一个(可能是全局到局部协调转换代码)。如果你想要创建一个新组件,我可以准确地告诉你需要哪些扩展点。对于UI工具包的工作方式的深入了解,意味着我可以比其他人更快地构建应用程序。我有25年的肌肉记忆,这一点可以帮我壮大我的胆子。关于UI工具包我有着很深厚的知识。对于其他人来说,它可能是内核驱动程序、数据库索引或编译器。关键是,深度知识要比数小时应用或原始编码能力更重要。
知识面广
都是优秀员工的小团队可以轻松击败都是良好或者一般员工的大团队。
——史蒂夫·乔布斯
老程序员都不求甚解。虽然我专门从事应用程序和前端开发,但我已经把整个堆栈都了解得很透彻了。我编写了无内存限制系统的代码。我已经构建了解析器、数据库和固件;甚至还有一个非常糟糕的内核驱动程序。我已经绘制了演示图形并生成了千兆字节的测试数据。你雇用我,应该不是叫我来建立数据库或编写固件或设计你的下一个网站,但我已经足够了解这些系统的工作原理。这意味着我可以和那些在数据库和固件方面的专家交谈。我知道的内容已经足够让我和其他领域的人进行有效的沟通。正是这种沟通技巧使我成为一个富有成效的团队成员,而不是原始的编码能力。
沟通技巧
任何一名40多岁的程序员都必须具备良好的沟通技巧。这些能力和他们的编程能力一样有价值。对于那些需要用到新的API的开发者们来说,如果没有地去看这些API,那么它们几乎是毫无价值的。很多大型软件项目之所以失败,不是因为糟糕的代码,而是因为沟通出现了问题。
是的,表面上似乎是花了更多的钱,使得工作量变得更少了,但实际上是变多了。老程序员们可以正确估计并按时运行代码。我们开发出的软件,bug很少,性能表现也不错。虽然我们写的代码少了,但是我们会产生更多的业务价值。这就是我们值得拥有的原因。
最好,小编借用一个歌词,想说:“我能想到最浪漫的事,就是和你一起慢慢变老~”
你认为老程序员的价值还有哪些?欢迎在评论区留言,截止明日中午12:00,点赞数最高者赠送一本《程序员》全年的电子刊一份。