译:从简单到复杂 —— 软件四象限

原文:https://swizec.com/blog/from-trivial-to-complex-4-software-quadrants/
作者:Swizec
译者:ChatGPT 4 Turbo

编者注:感觉很多事情都可以往上套,比如写作对于我来说,不同的主题也有难易和结果是否也预期两个维度。

我试图捕捉复杂与繁杂软件的区别已经多年,我想我终于明白了。你可以将项目分类为 4 个象限!

一个轴是难与易构建,另一个是解决方案已知与未知。

简单 项目容易构建,而且你知道你在构建什么。这些非常适合自由职业项目。例如为餐馆创建宣传网站,一个独立的数据可视化小部件。任何范围明确、有清晰起止点、没有未知数的项目。

有挑战性 的项目容易构建,但你不知道最终结果是什么样的。这些项目最适合内部团队。增长工程是一个很好的例子——你在推动一个 OKR(转化率、留存率),尝试不同的方法来优化。每一个独立的特性都是容易构建的,但你无法提前知道什么会有效。

Complicated 的项目难以构建,但你知道最终的结果是什么样的。这些适合代理机构或内部专家团队的项目。默认情况下,他们会落在某种平台团队上。比如重构一个老旧的代码库到现代标准,将一个古老的框架升级到新版本,或者在一个没有未知数的领域里构建一个范围明确的功能。

Complex 的项目难以构建,而且你不知道最终的结果是什么样的。这些需要一个有参与感的内部团队。在我看来,这是好东西。比如整个 SaaS 产品、在有未知数的环境中的新特性、将旧代码适应新要求等。你需要迭代开发和一种衡量进展的方法。这些项目的每个方面都是困难的。

规划可以帮助你将项目从复杂转变为复杂或有挑战性。你可以估计并理解足够小的一个切片。这通常是一个“故事”。

尽量避免那些既有未知数又难以构建的故事。如果你正在深入到代码库的新领域或者整合一个新的供应商,请倾向于容易构建的特性。如果你正在构建像新算法这样的复杂东西,请事先澄清所有的未知数。

你不能通过提前规划来使一个复杂的项目变得简单。等到一切准备就绪,你可能已经完成了工作。

干杯,
~Swizec