查看: 182|回复: 0

如何实现预测驱动开发(一)

[复制链接]
发表于 2020-2-18 10:25:38 | 显示全部楼层 |阅读模式
How to Implement Hypothesis-Driven Development
原文:https://www.thoughtworks.com/insights/articles/how-implement-hypothesis-driven-development
翻译:祝坤荣(时序)
让我们回想下高中的天然课。老师有一套方法来帮助我们学习 - 一套基于手头证据的实验方法。我们被要求观察我们身边的天下,然后实验形成一套对我们观察所得的解释或假设。我们在可控的实验环境通过预测我们理论的输出来测试这个假设 - 如果输出达到了,我们就证实了我们的理论是精确的。
我们通过构造更多成熟的实验来将学到的知识去形成和测试其他假设,调教,改进或摒弃任何我们获得更多从结果观察出的假设。
实验室天然科学的基础,是探索我们周围天下的系统方法。尽管一些实验是在实验室做的,但在任何时间和地点进行实验都没有问题,甚至在软件开发领域也可以。
实践假设驱动开发就是将开发一个新点子,产物和服务 - 甚至是构造变更 都作为一系列的实验来对待,用来决定盼望的输出是否已达到。这个过程不断进行指导一个盼望的结果达到了或主意已经被证实是可行的。
我们要改变自己的想法,当对一个问题做假设提供解决方案时,尤其是在新产物或服务开发时 - 我们瞄准的市场,业务模子是怎样运作的,代码是怎样执行的,甚至消费者是怎样使用的。
我们不再做项目,而是做实验。用户发现和精益启动测试就是被设计成测试关于用户的假设。质量保证是按规格定义阐明书测试系统行为。实验理论也在测试驱动开发中应用 - 我们先写测试,然后用测试来验证我们的代码是否精确,今世码通过测试后就是乐成的。最终,产物或服务开发变成了一个流程,用来测试一个假定环境或市场上的开发的系统行为。
实验核心的输出是丈量证据和学到的知识。
学到的知识就是我们在实验中得到的东西。我们盼望的是不是已经发生了?如果没有,这些信息怎样指导我们下次实验?
为了学习知识我们需要使用科学的方法来研究问题现象,获得新的知识,更正和整合之前的知识到我们的思考中。
随着软件开发行业的持续成熟,我们如今有时机应用持续设计和交付来最大化我们学到的来进行持续改进。通过使用实验方式来进行信息发现,我们可以更快速的对我们在创建产物或服务时识别问题来测试我们的方案。优化我们解决精确问题的效率是目标,而不是通过不断构建方案成为一个特性的工厂。
科学方法的步骤是:

  • 进行观察
  • 形成一个假设
  • 设计一个实验来测试假设
  • 定量分析实验是否乐成。
  • 进行实验
  • 评估实验结果
  • 接受或推翻假设
  • 如果有必要,做个新假设并测试
用试验方法进行软件开发

我们要挑战对于产物或服务的固定需求的方式。当团队进行一个熟知的或确定的计划阶段时需求是有价值的,并能让我们使用熟知的实践来获得收入。而当你在摸索复杂和不确定阶段时你需要假设。
让团队处置惩罚一系列业务需求会让团队形成不精确的接单观念。
业务方来思考并‘知道’什么是真缺德。开发团队的活就是开发来实现被告知的东西。但当在一个不确定和复杂的领域,全部的开发团队成员都应该被鼓励思考和分享对于问题的想法,以及潜在解决方案。一个只是接单的团队并不能发挥跨职能多学科团队的全部潜力,履历和能力。
形成假设

传统用户故事框架聚焦在捕获我们想要做的和为谁做的需求,让用户能从系统中得到特定的收益。
作为...
我要...
所以...
行为驱动开发与特性注入 旨在为软件项目支持开发测试与非技术人员的沟通协作框架提供改进。
为了...
作为...
我要...
当将工作视为一种实验,传统的用户故事是不好用的。在我们的高中实验课,我们要为达到盼望的结果定义步骤。我们需要定出要观察的指标(或信号)来提供我们假设是合理的证据。为了减少对结果的干扰这些需要在测试前就要决定。
如果我们观察到假设是对的信号,我们可以对我们在精确的路径上有更多信心并将其反映到用户故事框架里。
这样,一个能支持假设驱动开发的用户故事结构会是:

本文来自祝坤荣(时序)的微信公众号「麦芽面包,id「darkjune_think」
转载请注明。微信扫一扫关注公众号。
交换Email: [email protected]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表