在今年年初的时候,华为发出了一份任正非的公开信,该信的主旨说明华为要以构建可信的软件为目标,合理应用软件工程的理论,并从开发者、架构师不同身份的角度出发给出了具体的操作建议,讨论了重构、技术选型、技术人员的价值评估等重要问题。
信中有这样一句话:
我们各级管理者和全体员工都不得以进度、功能、特性等为理由来降低可信的要求,确保可信的要求在过程中不变形。
这句话讲的就是软件项目里的金三角:时间(多久可以完成)、成本(花多少钱)、范围(需要实现多少功能),这三个要素决定了最终交付的软件的质量。
image.png
想要软件的成本低,又想要质量好,那就得等;想要便宜又想快速上线,那就得接受质量不好的现实;想要质量好又想要快速上线,那就得花钱;想要价钱便宜、质量好,又要快速上线,是没有这种好事的。
image.png
这一节课,宝玉老是就将这个话题展开来进行了详细的讲解,主要内容如下图所示:
image.png
重点摘抄
- 软件工程的目标就是构建和维护高质量的软件。
- 项目管理其实就是项目中一系列问题的平衡和妥协,而“金三角”理论则为我们提供了理论指导,了解这三个因素分别对项目其他方面产生的影响,可以帮助你做决策时进行取舍。
- 瀑布模型种范围是固定的,时间和成本是可变;敏捷开发中成本和时间是固定的,范围是可变的。
image.png
- 如何平衡好软件质量和时间、成本、范围的关系?从时间、成本和范围这三个要素中找出来固定的一条或两条要素,再去调整另一条要素。
- 极限编程(eXtreme Programming,XP),是目前敏捷开发主流的工程实践方法,极限编程中的“极限”,意思是如果某个实践好,就将其做到极致。
阅读感想
- 如果希望软件做得又快、有低成本,得到的软件应该是质量差、功能可能不全的软件; 如果希望软件免费,又得快速交付,那么得到的软件应该是质量没有保障,功能大概率不全的软件;快速、便宜、质量好的软件是不存在的
- 之前的工作中,好像没有一个项目可以达到质量和时间、成本之间良好的平衡,最后的结果都是为了保障质量和时间,然后增加人力成本(加班),如果加班也搞不定就对时间做出妥协(延期),范围这个指标倒是比较容易调整的一个指标。
- 软件项目管理本质上就是在成本、范围、时间三个要素中做出合适的妥协的过程,质量是软件项目的目标,不能妥协;
- 管理金三角有助于在软件管理中进行良好有效的沟通,将精力花在事情上,而不是花在PK上,PK不是目标
- “软件项目的管理金三角”对于个人成长,也有同样的指导意义,假设我们的目标是取得个人的成功(名或利),影响这个目标的要素有时间、成本、范围,个人管理的过程也是在这三个要素中做妥协和平衡,例如,我现在积极参加这些知识付费的课程,就是希望用成本来提高自己的学习效率,这样可以在时间和范围上获得一些机会;我如果现在去健身,也会花钱请私教,同样是用成本来提高自己的健身效率,做出这样的选择的原因是我自己感觉相对于这些课程的价格来说,我的时间更加宝贵;但是有些时候,如果价格超出了我的承受能力,那我就不得不做出选择——自己花时间去搞定事情;有时候,成本我也不在乎,但是我的时间还是有限的,那我就只能做减法(少做一些事情)