How to Implement Hypothesis-Driven Development原文:https://www.thoughtworks.com/...
翻译:祝坤荣(时序)
我们相信<这个功能>
我们需要开发什么功能来测试我们的假设?通过定义我们要构建产品或服务的'测试'能力,我们可以识别出来要测试的功能和假设。
结果会有<这个输出>
我们实验期望的输出是?我们期望构建的'测试'能力得到的特定结果是?
当<我们看见一个可度量的信号>我们会知道我们成功了
什么样的信号能指出我们做的事生效了? 我们度量什么样的指标(定性或定量)可以证明我们的实验成功了并们足够的信心可以进行到下个阶段。
你统计信号的门槛取决于你对正操作的的业务和上下文的理解。不是所有公司都像亚马逊或谷歌有那样的用户规模可以在很短时间内运行处统计样本的实验。需要基于你组织的限制来确定信号证据的阈值何时可以走向下一步。
比如你想打造一艘火箭,你可能想要你的实验有个很明显的统计学特征。而如果你需要决定在用户注册时如何帮助用户增长则你可能很高兴容忍一个很低的统计阈值。
最后一步是清楚可见的表述我们假设的猜测,建立一个反馈闭环让团队提供之后的输入,讨论并理解我们正在测试的情况。它们从技术和业务视角是不是有用的?
当你要你的目标是对你的产品或服务愿景提供一个可测试的机制时你要进行假设。它们可以测试你产品或服务的大部分不确定的地方,以便于提供信息和提升信心。
假设驱动开发的用户故事例子是:
业务故事
我们相信在预定页加大旅馆图片的尺寸
结果会可以改进用户的预定和转化
我们知道我们会成功当我们看见看了旅馆图片的用户在48小时内的预定会有5%的增长
当在软件领域使用实验方法时我们需要有效的监控和评估工具来度量我们的工作影响并提供一个反馈闭环给团队。不然我们在衡量努力结果时就是瞎的。
在敏捷软件开发中我们定义了可工作的软件就是主要衡量进度的指标。
"通过整合持续交付和假设驱动开发我们现在可以定义可工作的软件和经证实学到的业务知识是进度的主要衡量指标"
正常来讲我们在没有衡量出交付物的价值时我们不会说完工了 - 换个说法就是获得了可以证实我们假设有效的数据。
收集数据的一个例子就是用A/B测试来测试一个假设并度量用户行为的改变。另一些测试方案也包括用户调研,纸上原型,用户和 /或 游击队测试。
使用假设驱动开发的公司的一个例子是lastminute.com(http://lastminute.com/)。 团队形成了一个假设就是用户有意愿付最高价钱给旅馆是基于他们预定的时间。 Tom Klein,CEO与Sabre基金的主席分享了一个他们如何在一周内提升了400%转化的故事(https://www.youtube.com/watch...。
结论
将假设驱动开发与持续交付组合的实践加速了实验并增强了有效学习。这给了我们机会在减少支出,甩开竞争对手时加速我们的创新。理想情况下我们可以得到一个整体流程:原子更改可以让我们确定对产品和服务的变更与对核心指标产生结果的关系。
就像Kent Beck说的,“测试驱动开发是在考虑解决方案前先考虑问题的伟大实践”。假设驱动开发提供机会让你在想解决方案前先测试你想的问题。
本文来自祝坤荣(时序)的微信公众号「麦芽面包,id「darkjune_think」转载请注明。
交流Email: zhukunrong@yeah.net
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。