Deliver as fast as possible
快速交付
In the era of rapid technology evolution, it is not the biggest that survives, but the fastest. The sooner the end product is delivered without major defects, the sooner feedback can be received, and incorporated into the next iteration. The shorter the iterations, the better the learning and communication within the team. With speed, decisions can be delayed. Speed assures the fulfilling of the customer’s present needs and not what they required yesterday. This gives them the opportunity to delay making up their minds about what they really require until they gain better knowledge. Customers value rapid delivery of a quality product.
随着技术的快速发展,存活下来的并不是那些最厉害的技术,而是能够更快实现需求的技术。最终产品只要不包含重大缺陷,越快的交付,就能够越早的接收客户反馈,从而在下个版本中进行提升。迭代的时间越短,团队的学习能力和交流能力越好。为了速度,某些决定可以延后进行。快速交付能够保证客户当前的需求是有意义并且有效的,而不是他们曾经的需求。快速交付为客户提供了组织思想的时间,客户只有在吸收更多相关知识的前提下,才能够明确自己的需求。客户价值就体现在快速交付一个质量有保证的产品上。
The just-in-time production ideology could be applied to software development, recognizing its specific requirements and environment. This is achieved by presenting the needed result and letting the team organize itself and divide the tasks for accomplishing the needed result for a specific iteration. At the beginning, the customer provides the needed input. This could be simply presented in small cards or stories – the developers estimate the time needed for the implementation of each card. Thus the work organization changes into self-pulling system – each morning during a stand-up meeting, each member of the team reviews what has been done yesterday, what is to be done today and tomorrow, and prompts for any inputs needed from colleagues or the customer. This requires transparency of the process, which is also beneficial for team communication. Another key idea in Toyota’s Product Development System is set-based design. If a new brake system is needed for a car, for example, three teams may design solutions to the same problem. Each team learns about the problem space and designs a potential solution. As a solution is deemed unreasonable, it is cut. At the end of a period, the surviving designs are compared and one is chosen, perhaps with some modifications based on learning from the others - a great example of deferring commitment until the last possible moment. Software decisions could also benefit from this practice to minimize the risk brought on by big up-front design.
及时产品交付思想同样可以应用到软件开发领域,只要意识到其特殊的需求和环境。可以通过提前呈现需求结果,团队自身组织协作,按照特殊迭代方式将需要完成的需求进行分割等方式实现该思想。起初,客户提供需求输入。这个可以通过小卡片或是故事来呈现-开发人员确认完成每一个卡片需求所需要的时间。通过这种方法,将工作转变为自我拉动的方式-每个早晨,通过站立式会议,每一名团队成员复述昨天所完成的工作,以及今天和明天需要完成的任务,并且提出任何需要从客户或者同事那里获得的输入需求。要完成这一步,需要整个流程的透明化,而且同样有利于团队内部交流。丰田产品生产系统的另一个关键点是基于集合的设计。如果一辆汽车需要一个新的刹车系统,举例来说,有三个团队开始针对同一个问题进行解决方案设计。每个团队都需要研究问题空间,并设计一种可能的解决方案。如果一种方案被认定为不合理,将会被否定掉。在这一阶段的最后,所有幸存的方案将会进行集中比较,然后选择其中的一种,也许会基于其他团队的经验对方案进行部分修正。这是一个关于如何在尽可能后期时刻进行决策的极好例子。软件设计过程同样可以采用这种思想通过大量的前端设计来降低风险。