为什么大多数软件都是倒着构建的
大多数软件都是倒着构建的。
这是因为人们奖励了错误的东西。
功能获得关注,架构却不然。 发布公告获得关注,文档却不然。 新功能获得关注,维护却不然。
团队从可见的部分开始,却忽视了基础。
常见的软件问题都集中在错误的阶段:
- 我们应该构建哪些功能?
- 控制面板应该是什么样子的?
- 我们应该支持哪些集成?
- 下一次我们可以发布什么?
这些问题问得太早了。在构建功能之前,你必须先理解系统。
想想盖房子。你不会从油漆颜色开始。你会从以下方面开始:
- 地基
- 结构
- 水路
- 电路系统
可见的细节取决于不可见的系统。软件也是如此。
用户界面是可见的,架构却不是。 功能是可见的,支撑它们系统的却是不可见的。
系统决定了软件是否成功。
功能解决单个问题,系统解决一类问题。 功能创造功能性,系统创造一致性。
关注功能,复杂度就会增长;关注系统,复杂度就会变得有序。
文档揭示了真相。设计良好的系统拥有清晰的文档;设计拙劣的系统则需要冗长复杂的解释。如果一个工作流需要好几页的说明,那么问题很可能出在工作流本身。
用户体验到的不是单个功能,而是系统。
用户看不到:
- 身份验证
- API
- 数据库查询
- 部署流水线
用户体验到的是:
- 可靠性
- 速度
- 简洁性
- 信心
这些感受源于整个系统。
倒着构建很容易理解。功能可以呈现在截图中,你可以发布一个功能,但你很难发布一个系统。
不可见的工作创造了最大的价值。
我改变了我的方法。我不再问一个项目需要哪些功能,而是开始问我正在构建什么样的系统。
系统创造约束,系统创造优先级,系统创造方向。
当基础存在时,构建功能会变得更加容易。
成功的产品不仅仅是功能多,它们拥有深思熟虑的系统。工作流感觉很自然,体验感是经过精心设计的。
不要从那些显而易见的部分入手。先构建系统。让功能从中自然涌现。
来源:https://dev.to/stinklewinks/why-most-software-is-built-backwards-46i