经验
老程序员可能无法像25岁时那样,在脑子里保存那么多的代码,但这些人的经验非常丰富。我们知道,每一套系统的规模都在越来越大,大到最后都超过了你的脑容量——无论你的脑袋有多大——所以说能不能记住代码并不是像你想的那么重要。相反,我们知道如何对每个系统进行模块化。我们就是传说中的“10x程序员”,不是因为我们代码写的有多好,而是因为我们已经看穿了一切。我们可以快速了解任何一门新的语言,因为我们已经用了很多年了。我们知道这些开发语言的共同特征。语言这个概念一次又一次地流行起来。只要有足够的时间,我们就能发现其中的相似之处,并突出这些不同点。
判断力
“在低价所获欣喜被遗忘后低质量带来的苦恼会长久保持。”
——本杰明.富兰克林
老程序员有更好的判断力。他们知道需要重点测试系统的哪个地方,哪些地方是不需要的。他们可以从架构图中看出可能出现的问题。他们可以告诉你针对特定项目可以运用哪些技术,以及如何优化可靠性、性能或开发速度(选择任意两种)。他们还知道如何做出好的权衡。即使从来没有为你的项目写过一行代码,但是他们也是对得起他们的收入的。他们懂得如何提高质量。从长远来看,质量意味着更低的成本。
学识渊博
“真正的知识来源于对某个主题及其内部工作的深刻理解”
——阿尔伯特·爱因斯坦
老程序员在特定领域有很深厚的知识。这些知识帮助他们知道在哪里寻找bug,以及如何避免bug。
知识面广
都是优秀员工的小团队可以轻松击败都是良好或者一般员工的大团队。
——史蒂夫·乔布斯
老程序员都不求甚解。虽然我专门从事应用程序和前端开发,但我已经把整个堆栈都了解得很透彻了。我编写了无内存限制系统的代码。我已经构建了解析器、数据库和固件;甚至还有一个非常糟糕的内核驱动程序。我已经绘制了演示图形并生成了千兆字节的测试数据。你雇用我,应该不是叫我来建立数据库或编写固件或设计你的下一个网站,但我已经足够了解这些系统的工作原理。这意味着我可以和那些在数据库和固件方面的专家交谈。我知道的内容已经足够让我和其他领域的人进行有效的沟通。正是这种沟通技巧使我成为一个富有成效的团队成员,而不是原始的编码能力。
沟通技巧
任何一名老程序员都必须具备良好的沟通技巧。这些能力和他们的编程能力一样有价值。对于那些需要用到新的API的开发者们来说,如果没有地去看这些API,那么它们几乎是毫无价值的。很多大型软件项目之所以失败,不是因为糟糕的代码,而是因为沟通出现了问题。
最好,小编借用一个歌词,想说:“我能想到最浪漫的事,就是和你一起慢慢变老~”