产品开发铁人三项 - Kent Beck


这是2016年7月19日发布的原始版本重新发布。
2016年3月25日。那些天我一直在认真记笔记,所以我可以确定出二十年前问题的确切时机:如果那些坚持瀑布方法的人没错怎么办,如果他们正在解决不同于我的问题怎么办?在解决吗?那是什么问题?
在过去的四个月中,我的生活令人难以置信。我改变了我对待软件开发的方式,但也改变了整个生活。不同的风险状况需要不同的方法,但是有时我可以选择在某种情况下使用哪种风险状况。
 
探索/扩展/提取
产品开发分三个阶段进行:

  1. 探索-冒险寻找可行投资的可行回报。成功的勘探是无法预测的,因此,最高期望值的策略是降低实验成本,并为许多不相关的实验投入少量资金。如果幸运的话,这些实验之一证明是出乎意料的成功,从而导致:
  2. 扩展-现在一切都变糟了(例如Pokemon Go或Facebook Live Video)。出现意外的瓶颈。您所拥有的全部时间就是消除在您出轨之前的下一个瓶颈。一旦增长成为常规,就该:
  3. 提取-现在问题的形状和解决方案的空间都清晰了。工具书应运而生:这是您在新城市中推出该服务的方式。规模经济很重要:以较低的成本提供服务更有利可图。

这个模型隐含着好几个小时,但这是基础。
 
铁人三项的教训
  • 每个阶段需要不同的设备,不同的技术,不同的培训。软件产品开发在三个阶段需要不同的工具,技术和价值体系。(我笔记本中的答案是“有效提取”。)
  • 您无法混合各个阶段。仅仅因为骑自行车是每小时公里数中最快的阶段,并不意味着您可以将自行车在水里骑更快。(就在昨天,我正在处理一个从探索到扩展的过早项目。)
  • 过渡很尴尬,但是很重要。如果一个项目从一个阶段发展到另一个阶段,而团队却没有注意到,那就像试图骑自行车游泳一样。不太好。
  • 只有可以执行所有三个阶段的组织才能完成比赛。如果您只是不想跑步,那就不是铁人三项。
  • 与铁人三项不同,同一个人不必完成各个阶段。我专注于探索。扩展开始后,我准备再次开始探索。只要有人可以交给我,它就可以正常工作。
  • 这三个阶段的相对进度大致对应。探索(游泳)似乎很慢。实验失败。错误的希望破灭了。反复。然后是扩展(骑自行车)的“过夜成功”。这将需要花费数月的进展,现在发生在数天或数小时,就像骑自行车一英里的路不到一英里的游泳短。提取(运行)更多地是扩展而不是扩展。
  • ??? [希望从实际的铁人三项运动员或诗人那里获得建议]

 
应用
一些要点:
  • 选择探索。如果您正在提取并且开始感到绝望或精疲力尽,请故意切换到探索。
  • 加速实验。如果您遵循所有规则,而实验却一无所获,请打破规则以加快实验速度。如果实验不可能持续下去,那么从长远来看,快速简便不会花费您。
  • 过渡。如果事情进展不顺利,请查看是否已更改阶段而没有注意到。如果是这样,请更改规则以匹配您所在的阶段。

我才四个月,所以我相信还会有更多。