本·霍克辛
阅读时间:4分钟
优秀的代码不会为你节省时间,但糟糕的代码会毁了你
您需要了解软件开发的游戏,这样才能有效地玩它。
在编写代码的创造性过程中,如果代码是错误的,那么代码就是错误的,并尽可能以最简单的方式修复它。
赢家和输家
在查尔斯·埃利斯的文章《失败者的游戏》中,他指出职业网球是一场胜者为王的游戏,选手们可以赢得积分。使用不同的策略来赢得胜利,保持球的活力,并让对手击败你。
“在专业网球比赛中,大约 80% 的得分是赢得的;在业余网球比赛中,大约 80% 的得分是输掉的。换句话说,专业网球是一场赢家的游戏——最终结果由赢家的活动决定——而业余网球是一场输家的游戏——最终结果由输家的活动决定。这两场比赛的本质特征并不相同。它们是对立的。”查尔斯·埃利斯
“我称专业网球为胜利者的游戏。胜利在于赢得比对手更多的分数——正如我们稍后将看到的,胜利不在于简单地得分比对手多,而在于通过赢得更多分数来赢得更多分数。在业余网球比赛中,我们发现情况几乎完全不同。业余选手很少击败对手,但他总是击败自己。这场网球比赛中的胜利者得分比对手多,但他获得更多分数是因为他的对手失分更多。”查尔斯·埃利斯
软件开发游戏
我从事软件开发已有 20 年,为许多软件开发人员做过许多项目。我估计 80% 的软件开发人员是业余爱好者,20% 是专业人士。
业余软件开发人员不喜欢
如果你试图破坏一个开发团队的大多数成员,你就不会执行上述步骤,因为团队中的大多数开发人员都不是专业人士。
“避免犯错的方法是保守并继续跑动,给对方足够的空间来击球,因为他是一个业余选手(可能没有读过拉莫的书),正在玩一场必输的游戏,并且不了解自己。”查尔斯·埃利斯
大多数开发人员低估了编写代码的能力,而高估了他们开发可运行软件的能力。他们编写代码时总是假设编写代码很容易,而且代码第一次就能运行。
业余
如果大多数开发人员都是业余爱好者,那么我们就应该将软件开发视为一个失败者的游戏,并集中精力减少业余爱好者容易犯的错误。
业余开发人员的目标是编写代码,其他活动会减慢这一进程。上面的另一个步骤是创建简单的代码,先找到错误,然后再加快速度并关注质量。ALM/Devops 允许快速无错误部署,从而实现快速反馈。
快速编写代码的最佳方法是注重质量和减少错误,而不是更快地编写代码。
我曾经参与过一些项目,后来发现的错误失去了用户的信任。
倒置
如果我们颠倒软件开发,目标就不是编写可用的代码,而是花时间避免编写质量差的代码和错误。
“像我们这样的人,通过努力保持一致而不是变得愚蠢,而不是试图变得非常聪明,从而获得了卓越的长期优势。”——查理·芒格。
业余开发人员认为快速编写代码是创建可用于生产的代码的最快方法。大型方法和复杂代码会创建一个代码库,随着每增加一行代码,其复杂性和难度都会增加。这种方法仅适用于只有一两个开发人员的小型项目。
错误成本
此外,你发现错误的时间越长,修复所需的时间也越长。例如,如果你在生产中发现错误,了解它,重新创建它,那么开发人员必须修复代码,并在生产过程中在每个环境中进行部署和测试。
如果您在单元测试中发现相同的错误游戏软件开发,您可以更快地修复它,并且对其他开发人员和测试人员的影响更小。
我们可以在开发过程中添加简单的步骤来捕捉错误,在充满错误的游戏中,在浪费大量时间和从客户那里获取信息之前,这是最有效的方法。
当我们知道大多数开发团队都是业余的,他们往往会打败自己和他们的开发团队时,专业开发团队就会更加注意避免犯错,而不是假设每个人都是编写出色代码的专业开发人员。
开发的成功并不在于第一次就正确地创建代码游戏软件开发,而是在于避免许多失败的方式。
或者引用查尔斯·埃利斯的话
“专业人士赢得积分,业余爱好者失去积分。”
(本文翻译自448 Followers文章《软件开发是失败者的游戏》,作者:文殊奇吾,转载请注明出处,原文链接:)