Post Detail

敏捷开发之Inception

Hugiss  

Inception是ThoughtWorks多年以来使用的启动软件设计和交付项目的方法,通过3天到两周的时间,采用集中式、互动式的设计工作坊,帮助客户在最短时间内达成对项目范围的一致,快速进入项目交付。这个方法论很适合用于项目早期,尤其是创业开拓性质的项目。

反思

每个流程上的人,辛辛苦苦完成的工作,最后因为一个变动而变得毫无意义,聪明的二人开始反思:我们该如何面对更快的变化呢?

  • 为什么变化可以让我们做的变得毫无意义?因为我们做的事情都基于某个「不会变化的假设」;
  • 这些假设还来自于内部,领导在让我们写文档的时候说:「同志们,放心吧,真的不会变,写吧」,我们假设领导是对的;
  • 我们能不能避免假设呢?似乎不能没有,不假设,不打包票,谁会干活?
  • 那么在不能避免假设的情况下,我们要做的是降低「假设带来的潜在伤害」。

设计一种流程尽可能降低假设带来的潜在伤害。

假设

你发现你生长在一个充满假设的世界里,他们说市场不会变、他们说他们要的东西一定会成功、他们说他们完全理解你的意思、他们说改了这一版不会再改了,呵呵,都是骗子。

事实上,你的项目里,市场一定会变、他们说的东西根本就是个玩笑、他们根本不懂也不在乎你说什么、他们改了一版还之后的二百版。

为什么要有需求冻结,没有需求冻结,被玩死的是你,但是很遗憾,有了需求冻结,被玩死的可能是你的公司。

需求优先级中有「总裁需求」这样的定义,私下里,他们把这样的需求标记为「呵呵」。像一副牌里打出8对王炸,我就炸了,你咋滴!你之前听到的所有假设和承诺,全都不作数。

事实上,真正的王炸,可能来自市场,如果市场变化期缩短到6个月,意味这你所有的研发行为从想法到运营的时间,必须在6个月以内甚至更短,我把这个叫做「王炸周期」。

因此在做软件规划的时候,你如何能够保证从想法到投入市场,短于6个月?

Inception的最核心含义在于:

如何规划一个从想法到运营时间短于「王炸周期」的软件项目?

8年以来,这个周期变得越来越短,在某些极端情况下,你可能只有6周时间。

对策

变化的周期越短,我们就越需要去除更多的假设,一个软件项目的假设有很多:

  1. 买单的人知道我们在干什么、怎么干;
  2. 设计师和客户之间对于解决方案达成了一致;
  3. 可以实现;
  4. 可以在一定时间内实现;
  5. 有用户愿意使用我们的服务;
  6. 未来运营的人认同我们的方案并表示可以继续运营下去;

我们也许不能保证这些假设都能够成立,但是「一分也是爱」,能验证一个是一个。

验证这些假设也不容易,你怎么能保证买单的领导没有新的想法?大部分人的思路是:我要做一个尽可能完美的方案,让领导挑不出毛病。你错了,你在「憋大招」的同时,领导也在「憋大招」,意思是你自信满满打出「王炸」的时候,领导打出了8个。

你怎么保证你的设计交付团队就能完成?拍着胸脯说放心吧这个简单的技术骨干拍屁股走人之后,你就哭吧,这时候他们打出「对三」你都要不起。

你怎么保证你的用户会使用你的服务?你大概知道中国创业产品的生命周期平均不超过8个月,你花8个月做的产品,可能够在市场上死两回了。

那你该怎么办?

做小、多验证假设。

最有做得小、你才有时间进行验证,这便是Inception的逻辑,把大部分的时间花在验证假设上,而不在研发上。

过程

之前提到的6大假设正是Inception活动的精髓所在,它们是:

  1. 验证利益相关者的战略;
  2. 验证设计有效性;
  3. 验证方案可行性;
  4. 验证方案实现时间的合理性;
  5. 验证产品有效性;
  6. 验证产品可运营性;

传统方式中,这些假设的验证通常通过一系列活动打散在公司的决策过程中,例如总裁例会讨论决策、用户研究和设计由不同服务提供商完成、交付由IT或外包完成、最后交给产品运营团队完成。

而Inception则尝试用最短的时间(短至1周)完成以上的6大验证。最简单的一条Inception逻辑是:
agile-inception

Inception和Agile的关系

而Inception和敏捷软件交付的关系则是:

Inception负责明确足够进入交付的工作量,并尽可能地去除这个工作量中的假设;
敏捷软件交付则基于这个「足够的设计」进行不断地迭代交付和设计、并进行测试和改进。

总结

  1. 我们认为软件交付需要拥抱变化;
  2. 假设越多、变化时候成本越大;
  3. 我们要尽可能消除6大假设,包括:决策者、业务需求与设计范围、技术实现、交付时间、产品有效、和可运营性;
  4. 我们通过做小来降低消除假设所带来的成本;
  5. 我们通过丰富的设计和沟通实践降低消除假设所带来的成本;
  6. 我们只计划和设计足够启动的体验,进入迭代式的交付过程;

本文自Thoughtworkers.

Show Disqus Comments