工具无法修复破碎系统——设计可以
Source: Dev.to
真正的失败模式:缺乏系统设计
大多数业务软件实施失败的原因与设计不良的系统失败的原因相同:
- 没有明确的真相来源
- 状态转换不清晰
- 到处都是手动覆盖
- 逻辑分散在人而不是流程中
从系统的角度来看,这就是技术债务——只不过以人为形态存在。添加更多工具而不修复流程,只会增加耦合度并降低可观察性。
企业是分布式系统
销售、运营、财务和支持行为类似于独立的服务:
- 异步的
- 事件驱动的
- 有状态的
但与设计良好的系统不同,许多企业缺乏:
- 明确定义的接口
- 清晰的所有权
- 可预测的交接
软件常被指责,但问题在软件引入之前就已经存在。
为什么“实现”是一个工程问题
好的实现方式与好的系统设计方式相同:
-
建模工作流
- 信息从何而来?
- 哪些事件会改变状态?
-
为失败而设计
- 当数据缺失时会怎样?
- 谁来解决异常?
-
最小化摩擦
- 如果记录数据感觉是可选的,就会被跳过。
-
构建可观察性
- 报告应回答真实的问题,而不仅仅是看起来很炫。
当这些原则被忽视时,采纳率下降,团队会绕过系统。
常见的反模式
典型的设置如下:
- 用 CRM 管理线索
- 用电子表格跟踪
- 用聊天进行审批
- 用邮件进行升级
此时,“系统”只存在于人们的脑海中。从工程视角来看,这是一种脆弱的设计,毫无保障。
实际有效的做法
最佳实现遵循一个规则:先设计流程,再选择工具。当工作流清晰时:
- 工具可以互换
- 自动化变得可预测
- 数据变得可信
这种思维方式正是像 Technetmark 这样的公司所关注的——把实现视为系统设计,而不是单纯的配置。
结束语
开发者早已知道:软件放大结构。如果结构薄弱,软件会暴露问题;如果结构稳固,软件就会悄然融入背景。业务工具也不例外。