兔子运送胡萝卜

您不需要完成一项功能,您的用户也不需要看到它就可以发布并开始对其进行战斗测试。 尽可能对其切片,并尽快释放块以缩短反馈循环并降低风险。

我的同事们一直在努力进行我们网店中的一项重大更改-用新的旧购物车和结帐流程代替我们的旧购物车和结帐流程,并实现此更改所能实现的一些新的,高度期望的功能。 我们决定通过仅对产品配件进行更改来降低更改的风险。 但是,企业希望包含新功能,并且需要更改UI。 但是UI必须在所有部分中保持一致,因此我们在上线之前也需要对主要产品实现它-这将有必要也实现主要产品所使用的更复杂的过程(尚未得到新后端的支持) 。 突然之间,我们的工作量很大,需要数周才能完成,并且会在大规模的部署中发布。

如此大规模且耗时的更改没有任何来自现实的反馈,然后立即将其全部发布,对我们的所有销售都产生了影响–我发现这确实很可怕( 并且之前也曾为此奋斗过 )。 从本质上讲,这是数周的风险,然后将其释放到一个大爆炸中。 我们如何分解它,将其切成小块,而又不会使商人感到不高兴?

然后我们意识到,我们不需要同时进行“重构” 1 (引入新的客户端购物车并切换到新的后端)和新功能。 而且,我们可以像应用程序一样,首先让新购物车与旧后端通信,然后,也许并行地,也开始与新后端通信( 请参阅并行更改 )。 我们不需要更改UI,用户也不需要注意有任何更改。 因此,这成为了我们的新战斗计划:

  1. 实施新的客户端购物车,即UI存储用户选择的对象的对象,然后最终将其发送到旧的后端; 保持结帐流程不变。 最初仅对配件执行此操作
  2. 以后也将其扩展到主要产品
  3. 逐步集成新的后端,同时与使用旧的后端进行对话; 逐步切换到新的
  4. 随处实施新的用户界面
  5. 实施新功能

(某些步骤可能会交织在一起,因此我们有一定的试验和发现自由权。)每个步骤,甚至其中的一部分,都将尽快发布到生产中,以便在下一个块到达时进行实战测试。 风险和不确定性被最小化,我们几乎总是在生产代码上工作。

PS:非常感谢Alex York和我的其他同事的帮助

1可以说这不是(仅仅是)重构,因为我们不仅仅更改内部结构。

翻译自: https://www.javacodegeeks.com/2015/09/shipping-a-refactoring-feature-one-tiny-slice-at-a-time-to-reduce-risk.html

兔子运送胡萝卜

兔子运送胡萝卜_一次运送一个重构并提供一个小片段,以降低风险相关推荐

  1. 兔子运送胡萝卜_我如何建立和运送第一个MVP

    兔子运送胡萝卜 On June 29th, I shared the MVP of mentored.dev on Twitter–my first "real" project ...

  2. 每天一道LeetCode-----实现一个栈,提供一个接口用于返回栈中最小值

    Min Stack 原题链接Min Stack 实现一个栈,除了基本功能外需要提供一个接口用于返回栈中元素的最小值 基本功能使用std::stack就够了,如果每次需要最小值时都遍历栈中元素的话会很麻 ...

  3. [置顶] 应广大童鞋的要求提供一个封装模块,直接和ADB 服务进程交互

    很多童鞋在用ADB 的时候都是直接启动ADB 的进程,然后通过管道的方式获取输出,这样多个线程同时使用ADB 的时候任务管理器一闪一闪的,是不是很不爽啊,原先介绍过可以直接和ADB 服务进程通信,不用 ...

  4. 11,外观模式(Facade Pattern)是为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。...

    Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种.Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面.这个一致的简单的界面被称作facade. ...

  5. 微信公众号无需二次登录_您无需两次解决问题-您需要一个设计系统

    微信公众号无需二次登录 重点 (Top highlight) The design system concept can be differently defined according to eac ...

  6. exo文件_您在eXo平台上的第一个Juzu Portlet

    exo文件 菊珠是佛教的佛珠. 一句话,我相信您已经学到了什么,印象深刻吗? 好吧,我在这里不谈论佛教. Juzu还是一个用于快速开发Portlet(以及即将推出的独立应用程序)的新框架. 您可以在J ...

  7. mysql桦仔_带您理解SQLSERVER是如何执行一个查询的

    带您理解SQLSERVER是如何执行一个查询的 看这篇文章之前,阁下可以先看一下下面的文章 翻译自: 不知道是哪篇文章抄哪篇文章的 ,不管他了,我也偷他们的文章,嘎嘎嘎嘎嘎... 我将会用尽本人的所有 ...

  8. 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏

    使用50行Python代码从零开始实现一个AI平衡小游戏 发布时间:2020-10-23 09:26:14 来源:脚本之家 阅读:74 集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何 ...

  9. rust怎么放篝火_如何为你的露营活动搭建一个持久温暖的篝火

    简单地点燃一堆火非常简单. 但如果想让它一直保持燃烧,慢慢享受它带来的温暖,则需要一点小小的技巧. 以下是我们总结的指南,希望可以为你的露营之旅带来温暖. 一. 准备工作 火是非常不稳定的. 不要随便 ...

最新文章

  1. 2020黑客报告:7位道德黑客赏金收入超100万
  2. 神经网络debug太难了,这里有六个实用技巧
  3. html进度条圆圈渐变色,HTML5 canvas带渐变色的圆形进度条动画
  4. 危机永远回来,只是什么时候的问题
  5. 创建Server 2012 VHDX虚拟磁盘模板
  6. 锁定计算机.exe,一键锁定计算机的方法
  7. postman mysql_postman连接mysql执行操作
  8. linux 使用gzip压缩打包的文件,linux常用的解压,压缩,打包
  9. linux 安装源码网卡包,【linux命令】Linux通过yum 或者源码编译安装vnstat查看网卡流量...
  10. c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc
  11. 手机内存8+128与6+256价格相同,你会选哪个?
  12. 艾伟也谈项目管理,学习腾讯的产品管理之道
  13. Linux常用命令总结之(七)mkdir
  14. 单例模式详解(附常见的7种单例模式源码)
  15. 电子元件-双向触发二极管与可控硅
  16. html把图片色调一致,ps怎样让两张不同的图片色调统一
  17. 李沐的深度学习笔记来了!
  18. 用二分法定义平方根函数(Bisection method Square Root Python)
  19. 分部积分题型总结笔记(分部积分超强拓展)
  20. HBase的TTL介绍

热门文章

  1. 您知道牙齿的“8020”吗
  2. Leetcode 554. 砖墙 C++
  3. Python pip保姆级环境变量设置
  4. 穿山甲sdk激励视频广告关闭按钮引发的bug排查及解决
  5. pollard phomiller rabin模板
  6. Ios马甲包过包细节
  7. pyg与graphgym
  8. 医学分割论文:nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
  9. python气象数据处理与绘图_Python气象数据处理与绘图(15):两种波作用通量计算的python实现及对比(Plumb T-N) (已更正)...
  10. 《夜雨寄北》- 李商隐