Are You a Hacker or a Designer?

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

二十年前,最优秀的程序员是那些能将整个应用程序适应64Kb的.COM文件的人。那些能够充分利用那个可怜的Intel 80386的人是编程界的偶像。

那是因为二十年前的电脑价格昂贵,而程序员普遍廉价。那是”黑客心态”的时代。然而,那个时代已经过去了。那种心态不再受到赏识,因为市场形势完全相反。

如今,电脑价格便宜而程序员价格昂贵。这是”设计师心态”的时代,我们代码的可读性比性能更为重要。

看这个图表。它是对过去二十年(1994-2014)两种趋势的比较。第一种趋势下降,展示了过去二十年内计算机内存HDD存储变得更便宜的程度。

第二种趋势展示了同一时期软件开发人员的薪水涨幅。确切地说,它们增长了三倍。虽然我没有找到官方报告,但我相信程序员的工资增长已经不再是个秘密,一名高级开发人员每年20万美元并不再是梦想…而二十年前6万美元是最好的报价。我发现这篇文章对这个话题非常有趣。

基本上,这意味着为了在1994年创建PHP网站,我们必须在硬件上花费比现在2014年多1000倍,并且在程序员方面少花三倍。我们在这里讨论的是相同的技术堆栈。相同的内置Apache HTTP服务器的Linux系统。

不同之处在于,1994年,如果我们的应用因为硬件限制而出现性能问题,我们每增加一千兆字节的RAM要支付3.5万美元,而2014年我们只需支付10美元。

在1994年,雇佣更多程序员并要求他们优化代码甚至重写它比购买新硬件更高效。而在2014年情况完全相反。现在,扩大服务器的规模要便宜得多(特别是如果服务器是虚拟云服务器),而不是支付工资来优化软件。

在1994年,最优秀的工程师具有“黑客心态”,而在2014年,更加重视“设计师心态”。

有着黑客思维的人可能会称呼这个Fibonacci的Java方法为“优雅的代码”(你会这么认为吗?):

我想强调一下一个优秀的hacker的这些品质:

  • 将其他人区分为黑客和新手,并为黑客编写代码。

  • 对规则和标准感到厌倦和沮丧

  • 不编写单元测试——初级开发人员稍后将编写它们

  • 热衷于消防——这就是他才能的表现方式。

  • 更喜欢对话而非文档,因为对话更有趣。

  • 讨厌看到别人修改他的代码

  • 喜欢一次只专注于一个项目。

一个黑客是一个有才华的个体。他希望通过他编写的软件来展示自己的才能。他喜欢编码,大多是出于乐趣。我可以说,他与他的代码结了婚,无法想象在最终离婚后它的幸福生活。代码所有权是黑客所关注的——他将自己视为代码的“所有者”。

当我问我的黑客朋友之一,“别人将如何理解这段代码是做什么的?”我几乎总是听到同样的回答——“他们会问我!”(通常自豪地说出,并带着真诚的微笑)。

一个具有设计思维的人会对上述代码进行重构,使其更易于阅读。他会称这个Java函数为“优雅的代码”(你觉得呢?)。

我认为以下这些品质可以归功于一个优秀的设计师:

  • 假设每个人都是新手,并相应地撰写。

  • 喜欢制定规则并遵守它们

  • 更喜欢文档而非演讲,更倾向于自动化而非文档。

  • 大部分时间都花在编写单元测试上。

  • 讨厌应急处理和加班工作

  • 喜欢看到他的代码被修改和重构

  • 同时与几个项目合作

设计师是一位有才华的团队合作者。他对团队的流程、标准、规则、教育和纪律的贡献与对源代码的贡献一样重要。他始终确保一旦离开项目,他的代码和想法仍能保持并运行。

对于优秀的设计师来说,最大的满足感就是看到他的代码过上自己的生活——被修改、改进、重构,最终被淘汰。设计师将自己视为代码的父母——一旦代码长大能够行走和交流,它就必须过上自己的生活。

如果你认为自己是一个黑客,我认为是时候改变了。黑客时代正在逐渐消退。

在不久的将来,我们可能会停止以“硬件”为基准,而是在具有无限内存、CPU 功能和存储空间的弹性计算平台上运行我们的应用程序。我们只需支付资源利用费用,几乎任何性能问题都只会在我们每月账单上增加几美元。我们将不再关心优化。

与此同时,优秀的软件工程师将变得越来越昂贵,每小时收费超过500美元,仅用于检查软件和提供诊断,就像优秀的律师或牙医一样。

这就是为什么在开发新软件产品时,支付费用的人将更关心其可维护性。项目赞助商将明白,他们用金钱所能得到的最佳解决方案是最可读、可维护和自动化的解决方案。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 05:21

sixnines availability badge   GitHub stars