软件开发中的战略规划与治理
1. 战略目标
战略目标应指明公司的发展方向,以及如何让客户满意。这些目标通常是高层次的,可能与技术无关,可在公司或部门层面定义。例如“拓展东南亚市场以开辟新业务”或“让客户通过自助服务尽可能多地实现目标”。关键在于确保技术与这些目标保持一致。
若你负责定义公司的技术愿景,可能需要花更多时间与非技术部门交流,了解业务的驱动愿景及其变化。
2. 原则
原则是为了使工作与更大目标保持一致而制定的规则,且可能会发生变化。例如,若组织的战略目标之一是缩短新功能的上市时间,可定义原则让交付团队完全控制软件的生命周期,能随时独立发布。若目标是在其他国家积极拓展业务,可实施原则让整个系统具备可移植性,以尊重数据主权。
原则数量不宜过多,少于 10 条较为合适,这样便于人们记忆或印在小海报上。原则越多,相互重叠或矛盾的可能性就越大。
Heroku 的 12 因素是围绕帮助创建在 Heroku 平台上运行良好的应用程序这一目标构建的设计原则,在其他场景中也可能适用。其中一些原则实际上是基于应用程序在 Heroku 上运行所需表现出的行为而设定的约束条件。约束条件很难或几乎不可能改变,而原则是我们自主选择的。可以明确区分原则和约束条件,以表明哪些是真正无法改变的。不过,将它们列在同一列表中,偶尔挑战约束条件,看看它们是否真的不可改变,也是有价值的。
3. 实践
实践是确保原则得以执行的方式,是执行任务的详细实用指南。通常与技术相关,且应足够具体,让开发者能够理解。实践可能包括编码规范、集中收集所有日志数据,或采用 HTTP/REST 作为标准集成风格等。由于其实践的