如何让开发变得敏捷起来?

不久前和同事交流的时候看到这样一段话,“在经历敏捷软件开发方法在中国传播和发展的过程中,我们深切地感到,缺少对软件开发日常基础时间、尤其是与编程紧密相关的核心技术实践的指导,敏捷注定流于形式。缺少完备的软件设计、开发和质量保障相关实践,盲目强调快速迭代、接纳需求变化,项目只会陷入质量迅速腐化、Bug百出、交付失控的悲惨境地。对于这种只得其形、尽失其神、缺乏核心能力、空谈快速响应变化的敏捷,业内将其调侃为中国田园式敏捷”。为什么会出现这样的问题呢?因为大家在学习敏捷开发的时候只是做到了形式上的模仿而忽略了对于本质的理解。那么,今天我们就说说敏捷开发方法的核心目标是什么,掌握了其神,我们在项目管理中就可以聚焦于敏捷的实质,达到事半功倍的效果。

目标1.更快更早的向客户交付价值

我们先来看看传统的瀑布开发模式有什么问题。传统的瀑布开发模式软件会经历需求分析、概要设计、详细设计、编码、单元测试、集成测试、系统测试等阶段才能发布,这一过程少则几个月半年,大型项目周期长达1年甚至更长,软件的价值在全部做好之后一次性交付。现在VUCA时代(商业和外部环境充满了易变性,不确定性,复杂性,模糊性)等到产品或者项目正式发布的时候,商业环境或者用户的使用场景已经发生了很大的变化,产品或者项目的功能已经不能满足当时的需求,软件交付的价值大打折扣。

不同于传统的瀑布开发模式,敏捷研发模式以迭代的方式持续进行,每个迭代持续收集用户真实的需求以及上个迭代的反馈信息,持续的向客户或者市场交付可以完整运行的产品,持续的向客户交付价值。
价值又来自于什么? 应该来自真实的业务痛点以及客户实际的需求或者问题。不管是敏捷还是瀑布或者其它的软件开发方法,其产生的价值取决于要解决的问题的价值,微信之所以成为伟大的产品,因为解决了人与人沟通,人与人连接,分享信息的问题,百度和今日头条解决了信息爆炸时代的信息检索,获取问题,一切脱离用户业务价值的软件研发活动,都是耍流氓。

目标2.更灵活的响应客户和市场变化

在瀑布开发模式的需求分析阶段,产品设计人员调研需求,设计产品功能这些设计决策活动都是基于假设或者信息并不是很完备的情况下做出的,这就意味着距离后续的技术实现、真实的用户需求或者市场前景会有一定的差距,这种差距会导致后续技术实现、投放市场时会有很多非预期的问题出现。在敏捷开发中,决策是以持续增量的方式做出的。在每个迭代发布后都会收集团队内部、客户、市场或者竞争对手等反馈信息,应用这些信息做出更正确的决策,在下一个迭代中实现,从而可以更灵活的响应变化。

综上,敏捷的核心在于提高一个组织更早交付价值,更灵活响应变化的能力,敏捷的一切实践活动都应该围绕着这两个目标来执行。我们再看一个比较形象的例子,有不少朋友都喜欢看美剧,比如很多年前流行的《越狱》,18年的《权利的游戏》,大家会发现美剧在制作发行的时候有一个特点,是一集一集的构思剧本,拍摄,发行这样的制作流程,之后收集观众的反馈意见,根据大家的投票来决定后续的剧情发展,这其实就是和敏捷的思想是一样的,尽早尽快交付价值,收回成本,根据反馈信息优化后续产品,这样才能制作出受大家欢迎的产品。

那对于一个产品或者项目而言,是否应该采用敏捷研发的方式呢?笔者认为,要根据具体的商业和竞争环境,项目特点来分析,不能一概而论。比如互联网产品,竞争非常激烈,晚几个月出来就没机会了,同时技术发展,用户需求变化很快,就非常适合敏捷。对于一些传统行业,软件相对比较稳定,比较大型的项目(需要顶层设计,自顶而下分解后再集成),产品的一体化程度比较高比如汽车这样的产品就不太适合持续交付价值,就没必要采用敏捷研发的模式。决策者一定要回归到软件的价值和本质上来思考,不能盲目跟风。

下面推荐一款适合各大团队使用的敏捷开发工具CORNERSTONE,它是一款基于智能化框架,能为企业打造专属管理体系的项目管理与协作平台,支持包含研发、缺陷、运营、销售等多场景项目管理。并且提供文件共享、wiki知识库、多功能报表、仪表视图、汇报等多种协同辅助功能,集成了DevOps、CMDB等多种配套工具。能够帮助企业科学量化团队表现,实时把控项目进展,全方位提升管理效能。

敏捷不是银弹,如果一个组织使用瀑布的方式做不好项目,换成敏捷或者其它方法一定也不行,相反,如果瀑布方式做的很好,换成敏捷只是水道渠成的事情,因为软件研发本质的方法是一样的,道理是相通的。这点拿金庸小说里武功高手打个比方,一个人内功足够强,他再学什么招式,都是一个相对简单的过程,欧阳锋逆转经脉,一样可以练成九阴真经,内功不够,使用什么招式都是花架子,行走江湖被人吊打。最后祝各位读者注重敏捷的神而忘记形,勤加练习内功,早日练成自己的独门绝技。

原文地址:https://blog.51cto.com/14511852/2483455

时间: 2024-10-22 16:06:25

如何让开发变得敏捷起来?的相关文章

.net快速开发平台,learun敏捷开发框架技术分享

.net快速开发平台,learun敏捷开发框架 前言: 快速开发的趋势 在十年前,没有人会想到互联网会发展成今天这个样子,同样,也没有人料到软件开发行业也会经历如此大的巨变,在开发这一行业,停下学习就等于死亡并不是危言耸听,不关注行业未来发展趋势的人可能错过了第一个十年,如果不学习,恐怕第二个也要错过了. 快速开发目前风头正盛,但是十分完善的快速开发平台目前并不多,用过的可能都知道,虽然宣称可以覆盖各种功能,但实际使用起来bug也少不到哪里去,之所以越来越受到人们的关注,是因为它能提供便捷化.个

杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》

课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲  师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式.随着创新环境的快速发展,许多企业都会面临这样的问题:如何快速响应市场的变化?如何推出更有竞争力的产品?如何在竞争中脱颖而出?……是大部分研发型企业普遍面临的核心问题.另外,软件项目在产品开发中位置越来越重要,逐渐占领主导地位,这时传统的IPD流程和CMMI

(原)那些让开发变得不太顺利的厂商

题记) cocos2d-x似乎很好,然其不同版本的差异性,兼容性让人无奈,其在wp下webSocket的问题,Sqlite的问题似乎始终抹不去,U3D似乎看起来不错,开发帧-帧的调试确实不错,基于Mono的运行环境,然在中低端机器下,3D似乎运行总是那么不完美,2D看起来似乎总是那么差.然引擎而已,有高有低,所有的应用-游戏对于程序员来说,最终都是比的内功. 1)安卓的坑 开发第一个项目的时候,需求是游戏+应用的结合,应用部分的图片量相当的大,整个页面几乎全是图片,连文字都是使用图片打上去,游戏

敏捷价值流开发 (产品级敏捷)

许多今天还是明星的科技公司, 却往往因所生产的产品, 对客户不再产生任何的 "影响力", 而面临即将黯然关门, 倒闭的命运? 在这不可预期且淘汰迅速的大环境下, 是否可藉由精益敏捷开发, 而使产品的研发团队, 可以 "以最少的产出, 却对外部的用户, 产生最大的影响与效益" ? 答案是 "肯定的" ! 敏捷价值流开发 (产品级敏捷), 便是以精益敏捷开发的思维, 从外部使用者的视角, 指导著产品的研发团队, 从建构产品级的特性到各版本的研发, 如

APICloud可以让你开发变得很简单

QQ登录.分享怎么做?相信APICloud可以让你开发变得很简单.这里分享一个demo供大家参考. 1.使用模块,先打开它的开发文档http://www.apicloud.com/mod_detail/37360 添加模块至APIcloud项目 2. 编译自定义loader 3. 在腾讯开放平台管理中心创建应用,提交审核,拿到appkey和appId 4. 在项目代码中找到config.xml 添加代码 <font face="微软雅黑" size="3"&g

传统开发模型vs敏捷开发模型——过程模型的变革

一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系中的位置. 为什么需要软件工程?很简单,为了让我们更好地生产软件.这里的"好"包含多重含义,有成本上的"好".维护上的"好"等等.但是我们知道,不可能坐着想"我要写好软件",然后就软件就能写好了.我们需要一套系统化.理论化.工程化

我和敏捷开发的故事--敏捷角色PO

在前面的三篇文章中对敏捷开发进行了一个背景铺垫,是以笔者个人的经历为主线来逐渐从个人的角度来理解敏捷开发. 通过结对编程完成了开发框架的搭建,在搭建框架的时候其实我们的正式敏捷流程还没有开始,真正开始是大家都可以行动的时候.当敏捷开始的时候整个团队定是在相关的分工下完成任务,所以不同的人有不同的角色,接下来主要对敏捷开发中的角色进行了解. 第一个要说的角色是PO 敏捷开发中的PO即ProductOwner,字面意思是产品或业务负责人,即熟悉该产品所有业务相关的逻辑.流程.设置等方面事宜的人员,一

spring 第一篇(1):让java开发变得更简单(上)

1.释放POJOS能量 传统开发中是如何束缚POJOS呢,如果你开发过java很长时间,那你一定有接触过EJB的开发.那时候开发一个小小的功能都要扩展框架的类或者实现其接口.所以你很容易在早期的Struts,WebWork,Taperstry等框架中看到侵入到你应用中的框架代码. spring尽可能避免在你的应用中充满它的API.spring从来都不强迫你实现具体的spring接口或者扩展一个具体的spring类.替代的是,在基于spring开发的应用中经常没有指示说明你正在使用spring.最

敏捷开发流程及敏捷工具

敏捷开发,要求在开发过程中不断增强,从而提高软件质量,以达到提高商业收入的目的.它是一个迭代的过程,一个不断提高企业投资回报率和服务质量的过程.值得注意的是,成功的敏捷开发,单纯依附于活跃的开发过程和理解敏捷所带来的效益并对此有浓厚兴趣的企业用户.本文将介绍敏捷开发的五大过程及这些过程中所要用到的工具. 敏捷计划 典型的敏捷开发将整体工作分为一系列的发布过程,每个发布过程都是一个迭代循环,每个迭代循环都会发布一组功能特性. 敏捷计划规定了每个循环中所需要完成的工作(发布/迭代).在该阶段,产品所