image.png

你认为可能发生的事情并不重要。

开发人员喜欢让他们的计划面向未来。他们想确保他们预测未来的需求并相应地编写代码。坏消息是:人类非常不擅长预测未来。

这是一个重要的教训。预期编码通常是浪费精力。

这是一个陷阱!

经验丰富的工程师和新手工程师都会掉入陷阱。

他们试图猜测接下来会发生什么。他们将这些更改应用到当前设计中。

实际上,这意味着向数据库添加一些额外的字段,重构现有逻辑以提高性能,或者创建可重用资源以应对更多未来请求。

事情是这样的……

那些额外的字段、逻辑更改和可重用资源不是免费提供的。

他们花费时间和精力。当您不断修改设计以满足预期需求时,您将需要更长的时间来交付第一个版本。

不幸的是,这些额外的努力可能会被浪费掉。

你不知道你认为你知道的

现在,您可能觉得自己了解企业未来的需求。

我可以保证,你不会。

如果幸运的话,您可以预测未来需求的概率可能是十分之一。

其他 9 次,你浪费了精力和复杂性来为将来会改变或不需要的东西设计。

这是一个很难学习的教训。许多高级工程师甚至还没有了解的一个。我们一次又一次地陷入陷阱。在预期某些未来状态的情况下编写代码。

一个永远不会存在的想象中的未来。

这是如何进行的

您编写了一些漂亮的、面向未来的功能。或者,也许您使用一组未完成的端点为未来的功能奠定了基础。

似乎一切都朝着那个方向发展。你搞定了!您将成为预测未来需求并优雅地处理它们的英雄。

但突然之间,业务重点发生了变化。

  • 在公司会议上,首席执行官宣布了最新的重大举措。他们正在淘汰您预期会使用面向未来的代码的产品。
  • 或者,也许客户与产品团队分享反馈。他们实际上并不需要您正在构建的功能。他们有内部工具来处理它。
  • 也许销售团队发现您构建的功能很方便,但没有好的方法可以将其货币化。客户不会为此付费,因此需要取消对该功能的开发优先级。
  • 另一个团队有一组类似的功能。当他们得知您正在构建自己的版本时,他们想要合并功能集。您需要支持遗留用例和许多与您最初计划不同的要求。
  • 也许您的项目没有任何问题,但出现了其他更紧迫的事情。这需要您的团队花费几个月的时间,而且您永远无法重新获得充分构建解决方案的动力。它永远处于半生不熟的状态。

无论发生什么,您为未来设计的漂亮代码和设计永远不会面世。

YAGNI原则!

你不会需要它——这应该是你的口头禅。

计划得太早是危险的,而且会适得其反。很有可能,该代码不会有用。

它最终会成为技术债务。Cruft 您的团队必须在半维护状态下忍受一段时间。

我知道这很诱人,但拜托了!不要构建没有人要求的东西。

仅针对要求构建并停止。

该怎么做

让我发表我的人生格言:

构建满足要求的最简单的代码版本。

小改动,开发很快。这就是要走的路。

如果你发现自己在做一些面向未来的事情,问问自己,“我怎样才能让它变得更简单?” 当您开始思考“在未来我们可能需要 x……”时,您应该立即意识到您未来的自己将需要一个简单的代码库来工作。

你能做的最好的事情就是构建一些简单的东西。

你未来的自己不会想要一个由还不了解需求的人编写的过度紧张的伪解决方案。

除非你有时光机,否则你无法完全知道未来的需求!

因此,只需根据您今天的要求进行构建。然后,停下来。

简单并不容易

编写最简单的代码来满足要求看似困难。

您必须清楚地模拟手头的问题,并使解决方案的每个部分都易于理解。优雅的代码看起来很明显,但它需要大量的思考。

您可以做的最好的事情就是编写可扩展的代码,而不是让您的代码面向未来。

这意味着简单的功能、定义明确的类和全面的测试。将来,当你需要一个新功能时,应该清楚在哪里以及如何添加它。

答案很简单。

你无法预测未来,所以停止尝试。相反,尽最大努力尽可能简单地满足当今的要求。

每日清单

喜欢你在这里读到的吗?我每天早上为 2,000 名软件开发人员写一些新东西。

如果你喜欢我的文章,点赞,关注,转发!