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

author author     2023-04-06     265

关键词:

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

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

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

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

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

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

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

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

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

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

技术图片

敏捷开发让程序员越老越值钱

...a;转行、做自媒体、干副业、考公....如果有人说敏捷软件开发可以让程序员越老越值钱,你会是什么感觉?估计有不少人要跳起来了:敏捷开发已经变味,成了压榨程序员的工具,成了需求不断变更的借口ÿ... 查看详情

敏捷开发让程序员越老越值钱

...a;转行、做自媒体、干副业、考公....如果有人说敏捷软件开发可以让程序员越老越值钱,你会是什么感觉?估计有不少人要跳起来了:敏捷开发已经变味,成了压榨程序员的工具,成了需求不断变更的借口ÿ... 查看详情

力软敏捷开发框架怎么样啊,用起来如何?

力软的开发框架用起来也不错,简单,是.NET语言,适合做一些生产和OA协助的;目前主流的还是JAVA;并且在部署上也上升一个台阶。从单机部署,到双击部署,集群部署,微服务部署,容器部署等多元化的支撑和适配,不只是... 查看详情

云图说|asm灰度发布,让服务发布变得更敏捷更安全

阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。摘要:通常产品优化迭代的... 查看详情

scrum3.0敏捷开发白皮书

...一种以用户需求为核心、采用不断迭代的方式进行的软件开发模式。敏捷依靠自组织的跨职能小团队,在短周期内,做出小块的东西来,通过快速、频繁的迭代,迅速的获取反馈,进而不断的完善产品,给用户带来更大的价值。... 查看详情

组合拳的力量-敏捷精益的混合管理

...混合管理的方法。今天小马哥会讲一讲单纯的敏捷和精益开发的痛点,并介绍一种敏捷精益的混合管理模式。敏捷管理的痛点敏捷开发是一套具有高适应性的软件开发模式,它通过把单个项目拆分成迭代的持续交付方式,达到渐... 查看详情

2020第19周日

...发的大忌,因为它可能会导致你花了太多时间精力在思考如何把某个点优化的更好,而导致整体的交付延期。正确的做法是:爬,走,跑。换句话说就是先保证跑通,然后再优化变得更好,然后继续优化让其变得伟大。迭代着去... 查看详情

如何让 GUI java 变得漂亮? [关闭]

】如何让GUIjava变得漂亮?[关闭]【英文标题】:HowtomakeGUIjavabeautiful?[closed]【发布时间】:2012-07-0117:28:30【问题描述】:我很难用java制作一个漂亮的GUI。您可能知道默认的外观和感觉并不吸引人,这就是为什么我想问一下是否有... 查看详情

爱好者讨论让emacs再次流行起来

...对默默无闻了。在emacs-devel邮件列表上,开发者们讨论了如何增强Emacs的吸引力,让它能再次流行起来。Emacs原作者RMS(RichardStallman)也加入了讨论。有讨论者称Emacs的按钮等UI太方方正正了,可以圆润一点,RMS对此不以为然,他... 查看详情

敏捷开发的那些事

...的一次变革。敏捷作为一种快速应对需求变化的新兴软件开发模式,正受到越来越广泛的关注和应用。它强调快速验证,表现为快速上线、快速根据反馈迭代产品。今天在这里给大家推荐一款敏捷项目管理平台—CORNERSTONE,那么... 查看详情

要想后期修改少,代码重构要趁早

...在敏捷中,让设计简单化,必须让设计从简单开始,然后变得成熟。要做到这一点,重构是唯一的出路。本文分享自华为云社区《​​敏捷技术实践之重构​​》,作者:华为云PaaS服务小智。前言极限编程(XP)的创始人之一Ron... 查看详情

[scrum敏捷开发之]sprint评审和回顾会议

...这不是客户或stakeholder希望看到的。他们想看真正的产品!如何进行优秀的Sprint评审会:有了一个很棒的Sprint评审和许多积极的反馈以后,是时候把这些积极的能量带到Sprint回顾会中了。执行”回顾会“给团队带来的好处:就像在... 查看详情

web开发敏捷之道-应用rails进行敏捷web开发(第三版)pdf

...读者亲身体验实际应用开发中遇到的各种问题、以及Rails如何有效解决这些问题。在随后的“Rails框架”部分中,作者深入介绍了Rails框架的各个组成部分。尤为值得一提的是本部分的后几 查看详情

敏捷开发方法综述

什么是敏捷开发? 首先,敏捷开发是一种过程控制论,通俗的说,就是一种做事情的方法。1.它适用于软件,因为软件是软的,可以改。要是硬件,改起来就没那么方便了2.它适用于客户不知道自己要啥的情况,其实,这样... 查看详情

让 Symfony 2 Assetic 开发变得舒适

】让Symfony2Assetic开发变得舒适【英文标题】:MakingSymfony2Asseticdevelopmentcomfortable【发布时间】:2012-05-3119:21:56【问题描述】:我正在寻找使Symfony2Assetic1.0.2开发更容易的方法。我使用Assetic倾销/发布我的资产。目前我一直在后台运... 查看详情

软件测试学习敏捷开发

敏捷软件开发百度百科的定义敏捷开发(Scrum)以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和... 查看详情

敏捷开发

一、什么是敏捷开发:   敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和... 查看详情

serverless让开发变得更简单(代码片段)

Serverless让开发变得更简单Serverless的FaaS对很多语言都支持,而node.js和Python语言是比较简化的语言,有了FaaS,我们不需要像传统开发方式那样写完代码后对服务器进行初始化并启动,然后通过域名解析,配置Nginx这些流程了,只... 查看详情