敏捷开发的实现要素
讲敏捷开发的太多了,我只说下个人理解
对于现在用户要求的最短时间对需求的响应,好像迄今也只有敏捷开发足够紧密的版本迭代模式能够适应。但是敏捷开发模式其实不仅仅是敏捷+开发而已,这是一种研发模式,而不仅仅是开发疯狂coding可以搞定的。
任何事情都需要条件,我只说我看到的:
A. 足够数量的服务器;
B. 一专多能的技术人员;
C. 全程测试,自动化测试,版本发布自动化;
D. 尽可能少的文档;
E. 圆桌办公;
F. 效率优先。
A. 为什么需要足够数量的服务器,因为灰度升级,快速迭代发布版本,总不能一直按照现有的晚上十二点以后升级吧,这样每周搞一次通宵,神仙都熬不住,你听说过qq发布消息说:今晚要系统升级,大家都洗洗睡吧?必须构建条件,任何时候都能升级;
B. 专业程度越来越高,导致角色的分工到后来成为了交流的壁垒,这么小团队,要效率就需要一专多能,一专是你需要做好本职工作,多能才能更好的沟通,不但了解更要理解别人在做什么,为什么这么做;
C. 全程测试的意思是,从架构设计一开始,重要的技术要点就要验证,没有经过验证就直接开工,相当于不打地基直接修高楼;自动化测试方案一早就要制定,准确的说是半自动化测试方案,否则全人工测试是不可想象的;版本发布自动化,可靠的环境和数据维护和设计,是半自动化测试的基础;
D. 尽可能少的文档,可惜现在的代码编辑器都是文本的,否则都应该直接把算法描述,对应的接口,测试用例等等要素图文并茂的写进代码文档,既然一定要分开写代码和文档,核心的文档必须要不断更新维护,比如设计文档;
E. 以前大项目使用工具,实现全流程的信息化管控,任何一个需求谁什么时候提出的,谁跟进的,哪个开发和测试完成的,都会全流程透明,优点是全流程透明可控,缺点是靠邮件,靠工具进行交流,效率低下。移动互联网要的是效率,直接圆桌随时多对多交流,互相学习互相促进,工作改进不再靠全面数据搜集与度量,而是关键数据搜集与改进;
F. 移动互联网行业的特点是创新,创新就意味着做十个东西挂掉九个,所以这个行业真正比的是挖地雷,一方面判断准确率要高,其次要速度足够快,效率优先,所有的一切都要给效率让道,最极端的情况是项目只有代码。项目计划?白板上每天更新;设计文档?大家草稿纸上明确;测试用例设计?口头达成一致。还有什么是一定要的?版本第一时间发布才是王道。
敏捷开发的本质就是病毒生存,每个病毒都很小,但是病毒变异进化的速度极快,生存的唯一法则就是变化,高速变异适应环境,一旦条件具备就疯狂扩散。