If Agile Development can’t make one team and products from it better and faster than that from the criterion system like PMBOK of CMMI and PMI, so what’s the meaning of implementing “Agile”? Like Agile, only because of police preference or religion worship? It will make no sense of its existence, if it has no more advancement and diversity compared to traditional method. I think it’s a basic logic. So let’s try understanding the essence of Agile from the differences between it and traditional development way.
如果敏捷开发不能让一个团队、产品的开发比已有的基于 ISO 9001、SEI 的 CMM 与 CMMI、PMI 的 PMBOK 等等标准体系的开发更好更快,那么请问,实施“敏捷”到底有什么意义?喜欢敏捷,仅仅是因为政治偏好or宗教崇拜?如果相比传统方法没有一点点的先进性和差异性,那么敏捷的存在就毫无意义,我想这是一个基本的逻辑。所以想试着从敏捷与传统开发的不同入手来理解敏捷的本质。
The first difference is the world value between them (the world value of software development vocation).In the traditional method, software development process is definite and predictable. Once you make efforts to collect information and make plans, and then carry them out faithfully, you can success. If you can’t, it must be that you didn’t do it well, didn’t collect necessary information, didn’t make good plans or didn’t carry them out effectively. Then we will attempt to import more management, process and documents so that make every step has no risk at all.
传统开发方式和敏捷的不同首先是世界观不同(是指软件开发行业中的世界观)。在传统开发方式的世界观里,软件开发过程是确定的、可测的,只要一开始努力收集好信息并制定好计划,然后忠实的执行计划就应该可以成功。如果不成功,一定是在一开始就没有做好,没收集到必要的信息,计划做的不好或者执行不到位。然后会试图引入更多的管理,流程,文档,试图让每一步都做到万无一失。
It’s not like that in the eyes of Agile. It thinks everything is changeable with lots of uncertainty. On one hand, from the point of cognition process, you can’t collect all necessary information for success from the very beginning. It is inevitable that you will understand the stuff you are working more profoundly during the process of the development. So you will find frequently you need to do some adjustments or meet the phenomenon that the previous plan is not properest. On the other hand, internal and external world are changing quickly, you have to adjust it accordingly. So the lots of practices of Agile aim to how to deal with changes.
而在敏捷的眼里不是这样,敏捷认为在软件开发中,什么都可能是变化的,或将会是变化的,有很多不确定性。一方面,从认知过程来说,无法在一开始就收集到确保成功所需要的所有信息,必然是随着开发的进行,对正在做的东西的认识才越深刻。因而一段时间后常常发现需求需要调整,或之前的设计不再是最合适的情况发生。另一方面,外界甚至内在都在快速变化中,不得不随之调整。因此敏捷的很多实践主要针对如何应对变化。
Read here, you might doubt that whether Agile lets plans go, gives up the architecture, scalability design or not, and that just do it blindly, satisfied with status, or just let it be whenever it works. We will answer it later and now we start with an example. When the artillery was born, we regarded improving accuracy as the theme from inducing sight equipment to inducing estimating pills movement track. Right now we can aim pill from 2000 meters to 2 square meters. Even though it didn’t replace the guided missile status or never stop people to search new version, They compete to search for carrying more pills to fight, they can cope with farther distance, more factors, even artificially distracted condition to improve hit rate.
读到这里,可能怀疑,敏捷是不是就是放下计划,放弃架构,放弃扩展性设计,一切“摸石头过河”,“满足现在”即可,做到哪算哪,做什么样算什么样?。这里暂先不回答这个问题,而是从一个例子说起。火炮从诞生伊始,就以不断的提高命中精度为主题,从引入观瞄设备来确保够准,到引入弹丸运动轨迹估算,目前已可做到2000米内首发命中范围2平方米的面积内。但即使这样,也没有替代导弹的地位,和阻碍人们对新型导弹的不断研制,制导技术更深入的研究。争相研究在携带更多当量战斗部同时,能够应对更远距离、更复杂条件、更多因素、甚至人为干扰情况,不断提高命中率。
Software development also is a complex process. Various objective and man-made factors will result in possibilities of errors and deviations that traditional development and process based on predictive form can’t guarantee. So the success of traditional development relies on what should be done and doing right things and keeping going. On the contrary, self-adjusted agile development doesn’t rely on these but close cooperation in team to make adjustments to realistic condition based on that condition in the search which makes it easier hit the aim like guided missile.
同样软件开发也是一个复杂的过程,各种客观的、人为的因素,导致复杂到各种基于预测式的传统开发方法和流程都确保不了误差、偏离产生的可能,因而传统开发方法的成功要依赖于在一开始就什么都想到了、都做对了,并且持续保持。反观基于自适应式的敏捷方法,并不依赖于在一开始就什么都想对、做对,而是依靠团队紧密协作并不断地在向前摸索中根据实际情况做出调整以适应现实情况,小步快跑,反而像导弹一样,更容易命中目标。
This is the starting point of Agile Development actually. It search progressive improvement that doesn’t require to handle all the questions of users by one step, require to do too much at once but move fast with small step to obtain the feedback of conducts, but inspect and find and handle problems quickly to accumulate experiences.
这其实就是敏捷开发的出发点。一点一点往前拱,寻求渐进式改进,而不是革命式重建,不要求一步到位解决用户的全部问题,不要贪多求全,而是小步快跑,并迅速得到行为产生的反馈,快速检验,在实践和迭代中去发现问题,解决问题,积累宝贵的经验。
So each product manager who keeps faith in Agile Development is a conservative actually, because they don’t believe there doesn’t exist consequent road of success, doesn’t exist all-known brilliant product but only believe the experiences of success and failure, believe the practice is the criterion to verify truth. If we truly can’t locate aims correctly at the beginning, we should find deviations in time and correct them in time. Every time we try hard just want to make us closer and more accurate to aims.
所以每位信奉敏捷的产品经理,其实是一个保守主义者,因为他们不相信有什么必然通往成功的道路,也不相信有什么全知全觉的产品大牛,只相信每一次过往经验的成功和失败, 只相信实践才是检验真理的标准。 如果的确不能在一开始就准确定位目标,那就在前进过程中及时发现偏差、不断的快速(敏捷)纠正角度,每一次努力只是想离目标更近一些,更准一些。
Lei Chen 2016.12.20
陈雷 2016.12.20