为什么大多数软件都是倒着构建的

大多数软件都是倒着构建的。

这是因为人们奖励了错误的东西。

功能获得关注,架构却不然。 发布公告获得关注,文档却不然。 新功能获得关注,维护却不然。

团队从可见的部分开始,却忽视了基础。

常见的软件问题都集中在错误的阶段:

  • 我们应该构建哪些功能?
  • 控制面板应该是什么样子的?
  • 我们应该支持哪些集成?
  • 下一次我们可以发布什么?

这些问题问得太早了。在构建功能之前,你必须先理解系统。

想想盖房子。你不会从油漆颜色开始。你会从以下方面开始:

  • 地基
  • 结构
  • 水路
  • 电路系统

可见的细节取决于不可见的系统。软件也是如此。

用户界面是可见的,架构却不是。 功能是可见的,支撑它们系统的却是不可见的。

系统决定了软件是否成功。

功能解决单个问题,系统解决一类问题。 功能创造功能性,系统创造一致性。

关注功能,复杂度就会增长;关注系统,复杂度就会变得有序。

文档揭示了真相。设计良好的系统拥有清晰的文档;设计拙劣的系统则需要冗长复杂的解释。如果一个工作流需要好几页的说明,那么问题很可能出在工作流本身。

用户体验到的不是单个功能,而是系统。

用户看不到:

  • 身份验证
  • API
  • 数据库查询
  • 部署流水线

用户体验到的是:

  • 可靠性
  • 速度
  • 简洁性
  • 信心

这些感受源于整个系统。

倒着构建很容易理解。功能可以呈现在截图中,你可以发布一个功能,但你很难发布一个系统。

不可见的工作创造了最大的价值。

我改变了我的方法。我不再问一个项目需要哪些功能,而是开始问我正在构建什么样的系统。

系统创造约束,系统创造优先级,系统创造方向。

当基础存在时,构建功能会变得更加容易。

成功的产品不仅仅是功能多,它们拥有深思熟虑的系统。工作流感觉很自然,体验感是经过精心设计的。

不要从那些显而易见的部分入手。先构建系统。让功能从中自然涌现。

来源:https://dev.to/stinklewinks/why-most-software-is-built-backwards-46i