使用试验和数据创新并构建客户真正使用的产品

使用试验和数据创新并构建客户真正使用的产品

Jan Bosch 是瑞典哥德堡查尔姆斯理工大学的软件工程系教授和软件中心主管。在 Bits\u0026amp;Chips Software Engineering大会上,他做了一场题为“从意见到事实,构建客户真正使用的产品”的主旨演讲,并举办了“通往天堂的阶梯:用于商业成功的持续集成和部署”定期讲座。InfoQ将报道本次会议的新闻和文章。

\\

InfoQ就如下内容对 Bosch进行了采访:企业能够从提高交付速度中得到的好处,导入敏捷和 DevOps后,组织的下一步措施,使用试验进行创新,用于试验的实践和组织如何更具创新性。

\\

InfoQ:你能解释企业如何从提高交付速度中获益?它为什么重要?

\\

\

Bosch:尽管许多企业花费了很多时间专注战略,并多次尝试对行业“预测未来”,但事实上行业中许多现有企业都错过了发展。无疑,特别在欧洲许多人将诺基亚作为错失良机,被新进入者淘汰的典型例子。诺基亚通常被视为例外和异常值。然而,对财富500强名单研究显示2000年52%入榜企业如今都从名单上消失了。所有的企业都有战略和长期预测,但是仍未能错过市场的潮汐变化。通过对多家企业的研究,和我在行业生涯中的主动经历,我意识到企业的关键区别在于减少识别客户需求和在市场上拥有可用的能够解决该需求的解决方案之间的时间。应对快速变化的客户需求的敏捷和响应能力需要“速度需求”。

\

\\

InfoQ:许多企业都采用了敏捷,而现在 DevOps很热门。你觉得下一个是什么?

\\

\

Bosch:基于我们的研究,我们开发了一个模型,叫做“通往天堂的阶梯”(参见 Continuous Software Engineering一书)。这个模型基于较长一段时间内跟数十家企业的合作和跟踪随着时间推移开发实践在这些企业的演进。在模型中,组织从传统典型的瀑布式或者迭代开发方法开始。下一步,企业在 R\u0026amp;D团队中采用敏捷开发实践,但是其它组织保持不变。敏捷团队通常会表达缺乏对所写软件验证能力的不满,并走向第三阶段:持续集成。一旦持续集成成功,企业总会有一个该软件的生产质量版本,然后企业会进展到下一步骤,持续部署步骤。在这个阶段,因为新软件的频繁部署不允许 R\u0026amp;D和运营组织之间传统、缓慢的交接,所以DevOps成为重要的组织原则。这就要求同一团队负责开发和运营职责。

\\

然而,很少有人意识到持续部署是达到目的的手段,其本身并不是目标。真实目标是它允许企业接近不同的开发模型:持续部署能够实现A/B和分割测试的使用,也能够实现其他定量测试方法,向客户展示新功能的相关性。这允许企业与客户采用通过假设驱动试验驱动的开发模型,而不是传统需求驱动的开发方法。其如此重要的原因是因为我们和其他研究表明典型软件系统中超过一半的特性从来未被使用过。这些特性可以认为是浪费,一开始就不应该开发。我们需要一个开发模型在构建这些特性时完整的开发工作被提交前清除这些特性。我们已经开发了一些模型且适用这一开发阶段,比如“R\u0026amp;D作为创新试验系统”。

\

\\

InfoQ:你如何组织 R\u0026amp;D作为创新试验系统?

\\

\

Bosch:在迈向 R\u0026amp;D作为创新试验系统这一阶段的过程中,与之相关联的重点区域是产品管理与产品开发之间的关系。传统上来讲,产品管理侧重于构建什么,产品开发侧重于如何构建。这种分割能够满足可预测和变化缓慢市场中的组织。但不幸的是,越来越少的市场能够满足这一要求。此外,使用这一传统模型的企业其运行模式是:只有客户明确要求新特性或者产品的时候,新特性和产品才能得到充分的优先级。有时这会在客户需求出现和客户能够口头表述需求之间出现严重的时间滞后。客户需求出现跟客户能够表达出需求之间的时间就是市场新进入者扰乱现有企业的最佳时机。

\\

所以我们不能坐等客户上门要特性或者产品,我们不能在“如果我们构建此特性或者产品,他们就会使用”的假设下构建特性或者产品。那么我们如何发现最有价值的特性或者产品提供给客户?答案是要么与客户基于领域中已经部署的产品这一背景不断地试验,要么通过其它试验方法不断试验。组织方法是将产品管理和产品开发聚集到同一个团队。虽然这是基本敏捷方法的规范,但是许多企业中产品负责人是一名技术人员,例如架构师或者高级工程师,而不是真正面对客户的人员。每个敏捷开发团队(满足亚马逊2-pizza规则)同样包含肩负产品经理角色的人。同时,团队提出假设与客户一起测试,然后开发和执行这些试验。这可能会导致特性从产品中撤回,因为客户反馈不温不火。或者,基于客户使用产品的数据,与产品管理的需求规范相比,可能特性仅仅需要部分实现,但是特性已经充分开发了。此外,可能导致特性的实现与团队原假设非常不同,因为客户反馈显示需要这一特性。最后,当然一些特性的实现可能完全按照说明,因为团队正确预测了客户最迫切的需求。

\\

这种工作方式的重点在于(1)产品管理和开发参与团队,(2)产品管理和开发都要拥抱此工作方式带来的不确定性并且(3)建立一种数据胜过意见的文化。

\

\\

InfoQ:你能举例说明使用数据来决定构建或者不构建什么?

\\

\

Bosch:在 Web 2.0/SaaS领域,这是规范,并且数家企业在 SaaS领域花费了更多的精力重新实现已经开发了的特性,从而弄清楚替代实现方案能不能带来更好的商业成果。例如,对于电子商务网站,就是客户进入网站完成事务的汇率。一些我共事的企业如今开始在实现阶段和实现后更加严格地评估特性,从而决定该特性是否应该保留在产品中还是应该去除。此外,在嵌入式系统领域,有很多企业在特性已经开发后去除特性的案例,因为其增加的复杂性超过了特性提供的价值。不幸的是,由于保密约束,我不能分享这些特性细节。

\

\\

InfoQ:在产品开发中使用这种方法,你能获得什么好处?

\\

\

Bosch:正如我之前提到的,在典型软件系统中有一半到三分之二的特性从未或很少被使用。试想一下,我们可以腾出 R\u0026amp;D资源的50%,因为我们只构建客户真正、真正想要的功能,这些功能会为客户产品增加价值。再想一下,这50%的 R\u0026amp;D资源可以分配给现有产品新特性和全新产品的创新和试验。这对任何组织竞争地位的影响将是惊人的。这给采用这种方法的企业带来的关键好处是:在投资回报率方面,极大地提升了R\u0026amp;D投资的精度。在软件中心(www.software-center.se),我们积极地与伙伴公司合作研究这一机会,包括爱立信,沃尔沃,Saab,杰普逊(波音)和众多其他的公司。例如,在一些研究中,我们确实与哥德堡的一家企业合作,我们度量“服务启动”的频率,即特性使用的次数。如下图所示,只有很少的特性使用非常频繁。许多特性从未或者很少使用,并可能被认为是浪费。

\\

066c86283e53130d67376f3dbbdf2f5b.png

\

\\

InfoQ:组织可以部署哪种实践用于试验?你能举例说明吗?

\\

\

Bosch:有很多实践组织可以采用并从中获益,但是这里我将重点介绍三种实践。首先,组织面向客户的交流被显著拓展。传统上来讲,R\u0026amp;D人员从来不会面对客户,除非在客户现场出现意想不到的问题。如果 R\u0026amp;D团队被认为应该对有价值的、新客户功能提出有见地的假设,那么他们需要理解客户的实际情况和产品的部署。这需要 R\u0026amp;D人员在客户和客户现场花费时间。不仅仅是一些人,而是每个人每年至少要在客户身上花费一些时间。这似乎是一个昂贵的运动,但增进理解和客户同理心的价值远远超过其成本。例如,我以前的一个雇主,要求企业所有员工每年至少在客户那花费一天时间,在他或者她的工作日跟踪客户。

\\

其次,企业需要适应数据驱动的工作方式。这需要测量现有的和新的产品,以便确定特性使用情况。我们的研究表明所有我们合作的企业收集了大量的数据,但是这些数据主要用于故障排除。R\u0026amp;D不具备访问权,即使 R\u0026amp;D具备,团队也没有使用可用的数据。用 Edwards Deming话说,我们需要“我们信仰上帝;其他所有人请用数据说话”的文化。

\\

第三,大多数组织工作在功能筒仓(functional silo)的环境下,跨筒仓的协作是缓慢、令人沮丧和充满失败的。对于渴望敏捷和数据驱动的企业而言,产品管理和开发有效地一起工作是不够的。整个组织,从销售和市场到发布和交付团队都需要有效地一起工作。这需要摆脱传统的官僚组织机构,转向授权、自我管理的团队,并提供前所未有的自治。在管理文献中,有一连串新奇的出版物在探索个体自我管理和自我导向的组织,和没有层级、老板、强制性内部决策过程情况下组织的运营。相反,这些组织已经发现了新的机制,用于协调组织内的工作,并且被大众视为结构化组织的下一阶段。一个众所周知的例子是 Valve,一家负责 Dota,Portal和Half-Life的游戏公司,一路心甘情愿地建立自我管理。

\

\\

InfoQ:如果组织希望变得更具备创新性,你能提供一些建议吗?

\\

\

Bosch:有三件事我想解释清楚。

\\

首先,创新需要个体有时间专注创新。因此,100%甚至更多地分配你的员工,然后告诉他们去创新仅仅是一种假象。一些硅谷公司已经制度化了员工可以自由支配自己10-20%的时间。如果你想利用组织内每个人的创新能量,你需要给他们这样做的空间。

\\

其次,许多创新思想都扼杀于内部反馈和典型的高层领导驱动的选择过程。原则应该是创新思想只有在拥有足够大的客户反馈样本表明缺乏该思想的支持的情况下才应该放弃。测试棒应该是客户,而不是组织内 HIPPOs(薪水最高人的意见)的意见。

\\

最后,建立一种文化:尝试创新思想并接受不符合最初假设的可能性。我不喜欢关注失败,有人觉得领导喜欢,但是因为尝试没有成功的事情而在组织内惩罚员工是扼杀创新文化最快速的方法。当然,我们喜欢能够给企业带来重大好处的创新,但是得到这一成果的唯一方法是尝试更多的想法和创新,并基于客户的反馈选择其中的想法和创新。

\

\\

关于受访者

\\

8e7bd8b652eb8e0857a6da18ac93d929.pngJan Bosch是瑞典哥德堡查尔姆斯理工大学的软件工程系教授和软件中心主管。此前,他是硅谷 Intuit和芬兰诺基亚的副总裁。他还积极担任领头企业的顾问和创业领域的董事会成员。更多有关他背景的信息可以参考他的网站:www.janbosch.com

\\\\

查看英文原文:Using Experiments and Data to Innovate and Build Products Customers Actually Use

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109150.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • goland调试go代码_debug运行

    goland调试go代码_debug运行如何使用dlv结合Goland进行程序debug调试相信很多Golang的初级玩家不会进行程序的Debug定位问题单纯的靠脑子,或者效率很低的不断的添加日志打印,别问我为什么知道的因为我就是这样的,最好最快捷的问题定位方式一定是使用Debug打断点调试,这时就引出了本文的主角dlv。实际上,delve才是全称,dlv只是启动命令,如果VScode,Goland,默认使用的调试器就是基于delve的。安装dlv参考官方的安装方法,把dlv命令安装在go.

    2022年10月31日
  • 浙江小学python教材_PPT、H5、Python、大数据……浙江中小学新教材9月投用![通俗易懂]

    浙江小学python教材_PPT、H5、Python、大数据……浙江中小学新教材9月投用![通俗易懂]今年9月的新学期,浙江三到九年级信息技术课将替换新教材。消息一出,引起浙江学生家长的关注。其中最大的变化是,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材规划五六年级开始接触。浙江省教研室相关工作人员表示,目前根据现行的高中教材,对小学、初中的老教材进行了修订,新教材将于今年9月投入使用,最新的线上教师培训也刚刚结束。在最…

  • 设计模式之代理模式、适配器模式和外观模式

    编写基于另一组类的包装器接口是一项常见的API设计任务,例如,你的工作可能是维护一个大型的遗留代码库,相比重构所有代码,你更愿意审计一个新的,更简洁的API,以隐藏所有的底层遗留代码;或者你可能已经

    2021年12月19日
  • 英语日常用语--给自己没事时候看看

    英语日常用语--给自己没事时候看看

  • WeakHashMap的原理

    WeakHashMap的原理简介WeakHashMap和HashMap一样,WeakHashMap也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以为null。不过WeakHashMap的键是“弱键”(注:源码中Entry中的定义是这样的:privatestaticclassEntry<K,V>extendsWeakReference implementsMap.Ent…

  • generic host process for win32_weblogic kernel.default

    generic host process for win32_weblogic kernel.default classWin32_NetworkAdapterConfiguration:CIM_Setting{booleanArpAlwaysSourceRoute;booleanArpUseEtherSNAP;stringCaption;stringDatabasePath;booleanDeadGWDetectEnabl

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号