程序员应该时刻提醒自己,“不要打破窗户”

发布时间 2023-08-25 16:54:26作者: 用心看世界Heart

尽管软件开发并不受大多数物理定律的限制,但我们无法逃避不断增加的熵的影响。熵是物理学中的一个术语,定义了一个系统的“无序程度”。不幸的是,热力学定律规定,宇宙中的熵趋向于最大化。随着软件中的无序程度增加,程序员可能会说“软件正在衰变”。有些人可能使用更乐观的术语,比如“技术债务”,暗示他们将来会还清它 - 尽管这一天可能永远不会到来。

无论它被称为什么,债务和衰变都可能会无法控制地蔓延。

许多因素会导致软件衰变。其中最关键的因素之一似乎是项目工作中的心理状态或文化。即使在一个单人团队中,你的项目的心理状态也是非常脆弱的。尽管有最好的计划和最好的人员,项目仍然可能在其生命周期内逐渐恶化和衰变。但一些项目在经历了巨大的挑战和持续的挫折后,仍然能够抵抗向无序状态的自然趋势,成功地从混乱中脱颖而出。

是什么导致了这种差异?

在市中心,一些建筑物干净漂亮,而另一些则破旧不堪。为什么会这样?在犯罪和城市衰败领域的研究人员发现了一个有趣的触发机制 - 一种可以迅速将一个维护良好、适宜居住的建筑变成破败废墟的东西。

一个破窗户。

一个破窗户如果长时间不修理,会使建筑物的居民潜移默化地产生被抛弃的感觉 - 就好像当权者不关心这座建筑物一样。然后,其他窗户开始破裂,居民开始乱丢垃圾,墙上出现涂鸦,结构损坏加剧。在很短的时间内,损坏程度足以让物业所有者不再费心去修复它,而被抛弃的感觉成为现实。

为什么会发生这种情况?心理研究表明,绝望是有传染性的,就像在封闭的空间里的流感一样。忽视显然有问题的事情会加强这样一种观念:什么都不能修复,没有人关心,一切都注定会这样。所有负面情绪在团队成员之间传播,形成恶性循环。

(程序员的软技能:ke.qq.com/course/6034346)

不要让窗户破碎。

不要让“破窗户”(糟糕的设计、错误的决策、劣质的代码)不加修复地存在。发现问题时立即修复。如果没有足够的时间完全修复,那就封住它们。也许你可以注释掉糟糕的代码,显示“尚未实现”消息,或者用占位数据替换它。采取行动防止进一步损害,并展现出你的控制力。

现在我们明白了,一旦窗户开始破裂,良好运行、清洁的系统会迅速恶化。尽管还有其他因素会导致软件衰变,但与其他任何因素相比,忽视会加速这个过程。

你可能会觉得没有人有时间清理项目中所有破碎的玻璃。如果这是你的想法,可以考虑考虑项目结束后的后果,或者只是离开一个不适合你的地方。不要让熵获胜。

不要造成伤害。

多年前,安迪认识了一个百万富翁。他的房子华丽,摆满了无价的古董,并装饰着精美的艺术品。有一天,一幅挂毯因为离客厅的壁炉太近而着火了。消防队员赶来扑救,主要是扑救火灾。但在他们带来巨大水管之前,他们停下来了 - 尽管火灾紧迫 - 并决定在前门和火源之间铺设垫子,因为他们觉得水管是脏的。

他们不想弄脏地毯。

这可能听起来很极端。消防部门的主要目标当然是扑灭火灾。在过程中不关心附带损害为什么?然而,在清楚评估了情况,并对自己控制火灾的能力有深刻信心后,他们仍努力避免不必要的财产破坏。软件开发应该遵循这种方法:不要因为某些东西很关键就造成附带损害。即使有一个破窗户也是太多了。

一个破窗户 - 一个设计不良的代码片段,一个错误的管理决策,你的团队在整个项目生命周期中必须遵循的决策 - 标志着衰落的开始。如果你在一个有几个破窗户的项目中,很容易陷入这样的思维模式 - “嗯,其他一切都已经乱成一团了,我只能随波逐流了。”直到现在为止,项目的状态并不重要。在最初的实验中,激发了“破窗户理论”的那个实验,一辆被遗弃的汽车保持完好一个星期。但一旦有一个窗户破了,汽车就会在几个小时内被掏空并颠倒过来。

出于同样的原因,如果你在一个健康的团队中,项目的代码很完美 - 清晰的写作、坚实的设计、优雅的简洁 - 你会倾向于特别小心,不会弄乱它。就像那些消防队员一样,即使面对熊熊烈火(截止日期、发布日期、销售演示等),你也不会想成为第一个打破平静的人,造成附带损害。

时刻提醒自己,“不要打破窗户”。

(程序员的软技能:ke.qq.com/course/6034346)