wiki百科翻译之Lean software development之Amplify learning

Amplify learning

增强学习

Software development is a continuous learning process based on iterations when writing code. Software design is a problem solving process involving the developers writing the code and what they have learned. Software value is measured in fitness for use and not in conformance to requirements.

在编写代码的过程中,软件开发是一项需要长期反复、持续性学习的过程。软件的设计过程旨在通过开发者编写代码、应用其所学相关知识来解决实际问题。软件的最终价值体现在用户体验上,而不是保持与需求的一致性上。

(马仔君注:作为一名不知名程序猿,在开发过程中多次遇到了这样的问题,明明是客户当时提出的需求不合理,为了拿下合同或是为了保持签订合同时提出需求的一致性,领导往往会说“先这样做吧,反正是客户提出来的。”这样做的结果就是,在最终上线前的测试使用过程中,客户意识到当初需求提出的出发点或者流程可能有问题,然后提出需求变更,领导通常会一边暗骂SB,一边安排程序猿解决,这通常意味着加班或是通宵加班。吐槽之~~~~)

Instead of adding more documentation or detailed planning, different ideas could be tried by writing code and building. The process of user requirements gathering could be simplified by presenting screens to the end-users and getting their input. The accumulation of defects should be prevented by running tests as soon as the code is written.

在产品实现的过程中,不同的想法需要的并不是撰写更多的文档和详细设计图,而是通过编写代码来进行实现。用户需求聚焦的过程可以简化为向终端用户呈现应用界面,从而获取他们的输入信息。瑕疵的积累最好能够通过在编码过程中运行测试历程进行拦截。

The learning process is sped up by usage of short iteration cycles – each one coupled with refactoring and integration testing. Increasing feedback via short feedback sessions with customers helps when determining the current phase of development and adjusting efforts for future improvements. During those short sessions both customer representatives and the development team learn more about the domain problem and figure out possible solutions for further development. Thus the customers better understand their needs, based on the existing result of development efforts, and the developers learn how to better satisfy those needs. Another idea in the communication and learning process with a customer is set-based development – this concentrates on communicating the constraints of the future solution and not the possible solutions, thus promoting the birth of the solution via dialogue with the customer.

通过短周期的迭代学习可以加速学习进程,每一次迭代过程都应该包括重构以及集成测试。在决定当前阶段的开发内容并对未来改善的努力方向进行调整时,可以在客户的帮助下通过简短的反馈会议来增强反馈效果。通过这些简短的反馈会议,客户代表和开发团队会更多地发现在下一阶段开发时会遇到的主要问题及可能的解决方案。基于已开发出的原型,客户可以更好地理解自己的需求,开发者也能了解到如何才能更好地满足客户的需求。另外一种与客户交流和学习过程中的想法就是“基于集合的开发模式”。这种方法将焦点聚焦在未来解决方案的约束和限制上,而不是聚焦在可能的解决方案,从而通过与客户的沟通交流加速解决方案的诞生。

你可能感兴趣的:(维基,精益开发)