随着敏捷开发的兴起,数不清的书籍与研讨会也应之而生。对于公司如何向Scrum、极限编程(XP),以及其它轻量级高协作的开发模型转型都有许多经验可以借鉴。敏捷从根本上改变了软件开发的方式,但是聘用开发人员的方式却基本没变。面对敏捷开发,如何找到适合的人呢?下面便是Menlo Innovation公司的“极限面试”经验。
过去几年中,我的工作精力主要花在帮助一些在较大规模项目上(50人、250人...)采用迭代方法的客户。现在有关“敏捷方法”实践的一个最大误解是,很多人认为它们是一个新发明,或者只能用在小项目上。
我参与的产品是面向行业的产品,在全世界都有客户,有10年历史,和一百多个基于不同版本的客户,我们的团队完全负责产品的未来发展方向、发布计划、架构、设计、开发进度、测试、客户支持等。在这样一个面向全球的产品和自主的团队环境中进行敏捷开发体会尤其深刻。
Craig Larman 是近年来一直活跃在欧美敏捷软件工程核心圈中的一位大师,敏捷方法名著《敏捷迭代开发:管理者指南》(Agile & Iterative Development: A Manager's Guide)和《Scaling Lean and Agile Development: Thinking and Organizational Tools for Large Scale-Scrum》的作者。
许多团队的开发流程,看似井井有条、制度完整,但流程中所规画的活动,无法在开发参与者的进行下,达到它应有的效用。很容易让开发人员产生一种负面的印象──开发流程的活动不过是表面文章、敷衍了事、徒做虚功。也让许多开发者,对于开发流程的活动敬而远之。
这则故事非常形象地解释了什么是XP(极限编程),什么是设计?每次读都让人有新的认识。从故事中我们看到,不断的积累最终会形成良好的设计模式才能更好地去完成项目,一味地相信极限编程则会在项目庞大时失去方向;而一味的相信传统设计,又会在需求多变、需要灵活应对的项目中花费过多的时间精力而丧失先机。
每个项目的开发环境及实施环境各不相同,在系统设计和项目管理方面所面临的问题不尽相同,但需求发生变化是所有项目都会遇到的问题。信息系统的建设由于会改变原有的传统工作模式,需求的内容因而会随时变动,给开发工作带来很大的难度。本文提出了应用敏捷方法的思想来应对软件开发过程中需求变化的问题,希望能对系统开发人员和项目管理人员有所帮助。
没有理由说企业级 SCM 工具集,例如 IBM Rational 工具集,不能用于支持敏捷开发方法的实现。关键是,定义并实现一个着重于支持,而不是限制,敏捷团队的敏捷 SCM 过程。对于这样的团队,找到正确的管理模型会是一个棘手的训练,但是一般建议从更开放的过程开始,只在必要时实现限制。反馈也是敏捷开发方法的必要部分。SCM 可以有助于此反馈机制的一种方式是通过自动化的构建和测试(及部署)过程。因此推荐您投入大量时间关注您整个过程中的这个方面。
软件开发世界里有这样一个长期存在的问题是:测试人员和开发人员的比例多少才合理?Scrum开发列表中最近有一个帖子,询问敏捷对这个比例有什么影响。对第一个问题,答案应该“视情况而定”。对第二个问题,Elisabeth Hendrickson认为,敏捷团队能够用更少的测试人员,但是做更多的测试。
Craig Larman(克雷· 拉蒙),国际著名的对象技术顾问和软件过程专家,Valtech 咨询集团首席科学家。其经典教材《UML和模式应用》、《敏捷与迭代式开发:管理者指南》已被翻译成多种语言在全球工业界和软件院校当中被广泛采用。
摘要: 敏捷开发意在解决传统开发方式中存在的可用性问题,但是却对用户体验带来了新麻烦。然而,不少公司通过改造敏捷开发方法,在实现目的的同时避免了这些麻烦。 快速应用开发流程如敏捷开发和Scrum(译注:Scrum是敏捷开发的另一种方式)是提高还是威胁用户体验质量,这取决于如何运用这些方法。
敏捷开发强调的是敏捷设计,设计的灵活性、可扩展性和易维护性是敏捷设计的目标。而之所以要有这样的目标就是为了适应多变化的需求,而敏捷开发中高度的迭代正是及早发现问题,及时修正并完善需求的有效方法。
本文结合作者的实践,以网上营业厅3期项目为例,讨论了敏捷需求管理在敏捷过程中的应用。在论述过程中,主要指出了敏捷需求方法如何帮助作者解决了一个时间紧迫的困难任务,最终快速地交付了可用的软件,从而给客户带来可观的商业价值。同时还展示了敏捷需求方法对于项目迭代的重要意义。除此之外,作者还说明了如何使用Redmine项目管理工具进行敏捷需求的管理,以及使用此工具的心得和体会。最后,作者指出了在使用Redmine进行需求管理时存在的不足,并给出了预期的解决方法。
传统项目经理与敏捷实践者真的水火不容吗?项目管理协会(PMI)PMBOK指南所描述的实践与敏捷宣言和敏捷实践冲突吗?虽然两者的结合看起来很怪,但是业内人士指出传统项目管理与敏捷开发并不是互相排斥的关系,实际上这两者是互相补充的。
敏捷是一种新的软件开发的思想,通过迭代、结对编程、测试驱动等实践逐步完善对软件的开发,最终形成稳定的系统。与传统的软件开发相比,敏捷强调人与人之间的沟通,而不是通过文档。
转向敏捷开发的理由大同小异:不断后延的发布日期,不断扩大的项目范围,占领市场的有利时机......但是如何向敏捷的开发团队转型,方法却大不相同。