软件开发和风险管理

  • 佚名
  • 金毅

2011 年 11 月 2 日

话题:敏捷精益文化 & 方法

通过使用经济学的概念来管理不确定性以及可能产生的资产损失这一方法正在软件开发行业逐渐起步。而金融界已经使用各式各样的方法来提供多重保障,尽量降低资产价格波动带来的影响。

Alistair Cockburn 最近发表了篇博文,文中他质疑了采用“最后责任时刻”(Last Responsible Moment) 的合理性,即使它是秉承敏捷思想的实践。以此,他展开了一个关于如何最好地管理软件开发中的风险和不确定性的讨论。

不少读者在回复 Alistair Cockburn 的博文时提到了Chris Matts、Olav MaassenKarl Scotland真实期权这一概念引入到敏捷和精益社区之中的举动。对于软件开发来说,这已经不是一个新话题了,你可以通过 Amazon 或者 Google 很快搜索出不少资料。但是它可能让我们重新意识到一个能帮助我们更好地应用敏捷的潜在方法。Chris Mattsh 和 Olav Maassen 在 2007 年的时候就在InfoQ发表了相关的文章。

随着敏捷和精益社区重新燃起对真实期权这一概念的兴趣,我们是不是可以期盼着软件风险管理有进一步的演变发展呢?历史告诉我们是的。就像在这篇博文中提到的那样,在应对来自需求阶段,也就是应用程序开发过程中最关键的那个阶段的风险时,敏捷技术通常是很好的方法,也是水到渠成的方案。

需求风险是软件开发中永远的话题,我也撰写过一些文章,主要讨论通过改进需求收集技术来降低风险。

但是这些观点的核心是:我们假设我们可以更好地预测软件开发,大大减少浪费的几率。但是我们真的可以吗?

精益学派认为可以。Jack Milunsky在 2009 年发表了一系列的博文,介绍了软件开发中的七种浪费以及对应的精益制造中的七种浪费。他认为正是这些环节造成了软件开发的变化无常。

  • 部分完成
  • 额外的功能
  • 返工
  • 交接
  • 多任务切换
  • 延误
  • 缺陷

但是,软件开发也被看作是一种手艺活儿、需要创作灵感的工作。这么看来就和制造业不一样了,也就不适合呆板地套用精益。Gary Police 写过一篇关于软件工匠和艺术的文章。他认为,优秀的成果(软件等)来自于不断地尝试,从错误中学习,同时还需要有颗追求卓越的心。他的观点好像在暗示浪费是创新的一部分,引申出来,软件开发也一样不可避免的会有浪费。

那么你的观点呢?我们能很好地预测软件开发吗?或者我们是不是在摧毁那些本来很有价值的创造性的想法呢?

查看英文原文:Software Development as Risk Management

敏捷精益文化 & 方法