问题:什么是敏捷开发的根本基础?What is the essence of Agile Software Development??
来自LinkedIn热帖http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&discussionID=156452723&gid=37631&commentID=93678048&trk=view_disc&ut=3OEFTrlSNevlo1,大家也可以到上面看看老外们的讨论。
道德经说太极生两仪,两仪生四象,四象生八卦,八卦生六十四卦,六十四卦生万物。
但是多数企业的敏捷开发都太“八卦”了,上不能掌握太极的根本,下不能根据企业具体情况衍生出万物。博客上的其他文章描述描述“万物”已经够多了,这篇文章只说说两仪。
在前面的帖子里边,有几个人支持fast feedback/short iteration,另外一些人则支持transparency/teamwork,加在一起算是敏捷开发的两个最重要方面。
答案:持续改进+团队协作
如果用地道的敏捷开发词汇,就是这两个。
持续改进包括 quick feedback, continues integration, daily buiding, standup meeting, short iteration, refact, working software, etc.
团队协作包括 stands for cross-function team, focusing on customer's value(把客户也当作双赢乃至多赢的团队的一部分), selforganized team, test automation (开发人员做测试的事),
下面是这两者和12个敏捷原则的对应关系:
持续改进
1: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
翻译:尽早并持续地交付有价值的软件以满足顾客需求。
3: Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale
翻译:经常发布可用的软件,发布间隔可以从几周到几个月,能短则短。
7: Working software is the primary measure of progress.
翻译: 可用的软件是衡量项目进展的主要指标
8: Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
翻译: 敏捷流程应能保持可持续的发展。 领导, 团队和用户应该能按照目前步调持续合作下去。
10: Simplicity--the art of maximizing the amount of work not done--is essential.
翻译: 保持简明 - 尽可能简化工作量的技艺 - 极为重要。英文说 maximizing the amount of work not done. 我的理解是 - 任何还没有明确的工作都会花不可知的时间,因此要 maximize, 不要把那些还没有做的工作和正在做的工作混起来。
12: At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
翻译: 时时总结如何提高团队效率, 并付诸行动。
团队协作:
2: Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage
翻译:敏捷流程欢迎需求的变化, 并利用这种变化来提高用户的竞争优势。
4: Business people and developers must work together daily throughout the project.
翻译:业务人员和开发人员在项目开发过程中应该每天共同工作。
5: Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
翻译:以有进取心的人为项目核心,充分支持信任他们
6: The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
翻译:无论团队内外,面对面的交流始终是最有效的沟通方式
9: Continuous attention to technical excellence and good design enhances agility.
翻译: 只有不断关注技术和设计才能越来越敏捷.
11: The best architectures, requirements, and designs emerge from self-organizing teams.
翻译: 只有能自我管理的团队才能创造优秀的架构, 需求和设计.
把客户和商业价值等内容放到团队协作里边看似有点牵强,这也是我更喜欢用“无我”的原因。“团队”很容易让人局限到开发团队的内容,实际上团队协作是在说“不要只考虑我”乃至“不要只考虑我们(还要考虑客户)”。
关于由持续改进产生的两象在这里:http://blog.csdn.net/cheny_com/article/details/7190094
而团队协作产生的两象在这里:http://blog.csdn.net/cheny_com/article/details/7189757