软件工程之美
宝玉
Groupon 资深工程师,微软最有价值专家
44272 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
软件工程之美
15
15
1.0x
00:00/00:00
登录|注册

20 | 如何应对让人头疼的需求变更问题?

课后思考
解决方案
需求变更的原因
第三步:通过灵活的架构和强大的配置,低成本响应客户需求变更
第二步:用原型设计低成本响应需求变更;做好需求分析和确认,减少需求变更
第一步:规范变更流程,提升客户变更成本
降低响应需求变更的成本
提高需求变更的成本
提升需求确定性
需求变更的成本
需求的确定性
总结
案例分析
解决方案
原因
如何应对让人头疼的需求变更问题?

该思维导图由 AI 生成,仅供参考

你好,我是宝玉,我今天分享的主题是:如何应对让人头疼的需求变更问题?
我以前在国内做开发的时候,加班加点是家常便饭。这几年在美国工作,极少加班,但是产出却并没有下降,所以我一直在思索其背后的原因。这里面涉及因素很多,包括大环境、管理水平、配套设施等,但是有一个因素至关重要,那就是需求变更。
在国内很多软件公司,需求变更是常态,开发到一半,很多原始需求就发生了变化,这时候当初的设计已经不能满足要求了,很多代码需要修改,不得不加班加点来赶上进度。
反观不加班的美国公司,需求确定后很少变更。这样开发人员就可以针对需求有良好的架构设计,而不用考虑太多可能的变更,从容地在项目计划的时间内完成任务,而不需要加班加点。
在需求变更这个事情上,没有赢家,每个人都是受害者。
程序员自己辛苦的工作白费了,得不到成就感,因为频繁变更的需求,不得不在设计的时候考虑很多可能的变更,导致代码臃肿,代码质量降低,加班加点成了常态。甚至有人说:“杀一个程序员不需要用枪,改三次需求就可以了!”
产品经理也觉得很委屈:“客户要改,我有什么办法?”程序员和产品经理似乎变成了两个对立的岗位,程序员怪产品经理乱改需求,产品经理觉得是客户造成的,人人都觉得自己委屈。客户同样不满意,觉得做出来的软件不是他想要的,进度总是在延后,还想加钱?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

软件开发中的需求变更是常见问题,频繁的变更会导致项目延期和加班加点。文章通过比较国内和美国的软件开发环境,指出需求变更的成本和确定性是导致问题的主要原因。提出了两种解决方案:增强需求变更流程和快速迭代缩短版本周期。然而,文章强调了需要从根本上理解需求变更的原因,提出了提升需求确定性、提高需求变更成本和降低响应需求变更成本的解决方案。通过实际案例分析,强调了理解需求变更背后的深层次原因,并提出了解决方案的重要性。读者可以了解需求变更的成本和确定性对软件开发的影响,以及如何通过提升需求确定性和调整需求变更成本来解决这一问题。同时,通过实际案例的分析,读者可以更好地理解解决方案的实际应用。文章提出了三种不同的解决方案:提升需求确定性、提高需求变更的成本、降低响应需求变更的成本。通过对比这些方案的优缺点,读者可以选择适合自己项目的解决方案。文章鼓励读者在软件项目中主动参与需求分析和变更的关键阶段,提供专业建议,避免对立情绪。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件工程之美》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • 易林林
    需求变更的多少取决于产品团队、研发团队,甚至测试团队对需求的理解程度。理解越透彻,需求变更越少,很容易在做项目的过程中及时发现问题、解决问题,这就相当于把可能发生的变更分散到日常工作中去,使其不会有太多明显的变更,降低项目延期的可能性。 宝玉老师讲到变更流程的规范化,确实深有体会。有些产品经理不按套路出牌,遇到用户提出产品需求问题,都是一口气答应下来,不去认真分析,也不去与用户探讨,觉得为了公司利益而满足客户需求是理所应当的,不加思考原原本本的将需求扔给研发,然后搬把椅子一脸焦急的看着一脸着急的研发人员。其实,有的时候加班就是这样产生的,无组织、无纪律、乱弹琴,遭殃的是患难兄弟,埋怨的是公司不人道。 我体会过产品需求流程比较规范的公司,大家都知道什么时候该做什么,绝不跨部门或越级指挥,一切按产品需求流程办事,在搭配上比较强大的执行力,每个人工作时间的工作内容都是饱和的,到下班的时候绝不留恋工作,走慢点你就是最后一个下班的。 另外,在谈论需求变更的时候,要学会拒绝,让用户知道你拒绝得很在理,有可以理解的难处;也要学会接纳,在某些合理、无伤大雅的需求上要满足用户的存在感。这样在进行项目交付的时候,即使项目完成度不是很理想,也会因你个人处事得当而加分,很容易的拿到项目的验收报告。

    作者回复: 👍很棒的分享! 所以说项目管理是艺术,其中的平衡很难完全是一门艺术!

    2019-04-11
    2
    23
  • 果然如此
    1.提升需求确定性:设计高保真的原型,如用axure,不仅仅是画框图,还要加各种响应事件等; 2.提高需求变更的成本:提前约定变更制度,签字画押; 3.降低响应需求变更的成本:提高技术框架水平。 以上是通过产品、流程、技术三个方面解决需求变更问题。

    作者回复: 👍很好的总结

    2019-04-11
    9
  • 打工皇帝
    老师!我的组长脑子有问题,经常干涉设计,前面确定了需求,等开发完又修改,总是说话跟放屁一样!还是巨婴!任性,说我就是要这样,很多开发和设计都好讨厌他,敢怒不敢言!请原谅我留言粗鲁不文明!供应商的人天花的是公司的钱,他没成本意识,这样一手遮天的人 怎么应对?

    作者回复: 首先,我觉得就你自己来说,先尝试利用软件工程的知识做好你应该做的,用科学的方法去管理这类事情,包括管理你的领导。比如我在前一条回复建议的:多确认、帮助领导意识到变更成本,提高他变更的成本。不管结果怎么样,你都可以从科学认真做事的方式中获得提高和成长。 然后,对于国内的大部分公司来说,领导发言权很大的,能治领导的就只有更大的领导了,而且除非是严重错误,否则大领导也不会轻易换人。也可以考虑收集一些事实,越级投诉。但这样做风险比较大,慎重考虑。 最后,就是用脚投票,骑驴找马,换组或者换公司。

    2019-10-18
    6
  • Felix
    三句箴言: 走一步想三步 能配置不定制 不要相信产品经理的“绝对”

    作者回复: 👍谢谢分享 这三句绝大部分时候都适用的,我觉得也要适当结合项目情况,有些时候考虑太远、做多手准备,容易做无用功。

    2019-04-18
    6
  • alva_xu
    老师今天讲的现象,实际上是软件开发部门最头痛的事情。通过三个手段来解决需求变更问题,总结得太到位了。按照软件质量的金三角理论,需求变更,就相当于范围变大,必然导致成本上升或者时间增加,否则,就是质量下降。 比如说成本问题,由于业务领导对于软件开发没有成本意识,而且不考核他们的成本,所以他们可以随意变更需求,IT部门有苦难言。为了减少这个问题,我们尝试让业务部门在业务蓝图(需求)文档上签字,但对于强势的业务部门,依旧见效甚微。后来,又在发布频次上进行考核,减少发布频次。但结果又带来了用户真实的需求变更不能及时获得满足,直接影响业务。 业务变更是必然的,IT部门必须快速响应用户需求,这是摆在IT面前的必然挑战,无法回避。 真正掌握在IT部门的办法,只能是第三种选择: “降低响应需求变更的成本”。 因此,我们开始建立统一应用框架(比如单体应用的java框架,微服务框架等)、建立CICD环境、推进云的建设,加快环境搭建速度,引入自动化质量工具,加快系统缺陷的检出速度,减少技术债务,甚至建立一些业务中台,加大业务的下沉力度和技术的上浮力度,加大技术和业务的复用,建立更高效的项目管理体系和工具平台,减少技术和业务的沟通成本。 但是这样的基础建设长路漫漫,见效很慢。不知老师有没有这方面的经验分享,比如采取哪些措施,优先级是什么,来达到降低响应需求变更的成本的目的,这里又有哪些困难,如何克服。等等。 谢谢

    作者回复: 基础建设方面我的一点建议: 基础建设困难在于短期内会减慢开发速度,是和业务冲突的,如果业务部门不支持,会很难推进,压力很大。所以可以考虑分成短期、中期、长期三类,逐步做。 首先,在不影响业务的前提下,优先做一些跟业务相关能短期取得正面效果的事,比如工具的使用,管理平台的搭建。这样取得效果后相当于为你自己积累了声望,以后推进其他事情会更容易。 然后推进流程规范的建设,比如CICD、代码审查,这类事中期可以取得效果,但也需要投入大量精力保障制度的执行。 跟开发相关的事是短期看不到效果长期的事,低调的做,一点点做,最好有专门的小团队做,比如你说的统一框架的事。这类事情阻力很大,因为既要兼顾新业务的推进,又要还大量精力对现有业务的改造。做成了绝对大功一件,没做成是要背锅的。所以低调一点,做成后再高调表表功,万一没做好或没达到预期就总结经验,下次再战,也不会导致太大影响。 供参考!

    2019-04-12
    5
  • 谭鹏
    很头疼 ,开发快完成时 ,老板突然想到了个很好玩的点子,让加需求

    作者回复: 告诉他点子很好,等我们这个Sprint/版本完成,马上加上 :)

    2019-04-15
    4
  • OnRoad
    客户需求频繁变更,大领导迫于客户压力全盘答应,导致开发节奏被打乱,除了量化风险上报之外,还有什么好办法?

    作者回复: 需要和你的领导私下协商,需要在他的帮助下一起作出一些调整: 1. 要设立流程提高客户变更需求的成本,可以需求变更,但不能太过于频繁随意 2. 缩短开发周期,采用迭代模型或者敏捷开发,2-4周发布一个版本,每个版本实现当前已经确定的最重要的需求,在一个版本内不接受需求变化,变化的需求放在下一个迭代中实现

    2019-05-12
    3
  • sotey
    老师,我参与的项目遇到了这样的情况,因为老板要求项目交付时间要提前,导致了大量的需求变更和重新设计,项目看似提前完成了,但是功能却被阉割了,后续项目的改进难度变的非常大,这种情况该怎么办啊?

    作者回复: 砍掉功能保进度很正常。只是不知道改进难度大的原因是什么?因为没有时间做架构设计?还是因为大的功能还没做? 还是需要具体情况具体分析,你可否再发一条留言讲一下具体难度在哪,才好给具体建议。

    2019-04-11
    3
  • 舒偌一
    宝玉老师,您这边有没有做需求调研的工具或表格之类的,能更好的把握住客户的真实需求。

    作者回复: 抱歉我手头没有。 人人都是产品经理网站上一个“需求调研”的Tag,里面有很多相关的文章。 比如其中这篇文章《只需8步,需求调研表的标准制作流程》http://www.woshipm.com/pmd/407048.html 推荐你可以看看。

    2019-04-24
    2
  • 小老鼠
    1、敏捷是美国人提出的,有一点很重要:拥抱变化。而中国需求变更的确很高,而中国人为什不拥抱变化? 2、欧美软件企业的确加班比中国企业少得多,除了需求变更多,还有什么吗?

    作者回复: 1. 敏捷开发确实是美国人提出的,但是其实并不必可以区分中国人美国人,因为敏捷开发是针对软件开发的,而软件开发是有很多共性的,并不分中国人项目还是美国人项目。 敏捷开发的拥抱变化,正是通过自动化提高效率,通过缩短开发周期,来优先做核心功能,来快速发布快速迭代,从而快速响应需求的变化。 2. 还有文化上的差异,比如美国人很注意家庭生活;另外还有工会的制衡等等因素。

    2019-09-17
    2
    1
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部