《软件管理沉思录》读书笔记
Watts·S·H,William·R·T著,黄征等译,人民邮电出版社
更新于:点击
书中开篇前沿讲到:当软件项目出现问题时,我们的第一反应往往是更加努力的工作,一般换来的则是加班;但,对于软件项目的管理而言,这也许是错误的,并不能达到解决问题的目的。 本书将从计划的类型与过程、项目团队的建设和激励、如何与上司共事采用最佳实践,以及探讨个人职责、承诺和过程四个部分进行阐述。
软件开发之所以比传统工作更像建造大教堂,是因为它是大规模的创造性活动。我们需要随着团队管理和多团队管理的发展,学习如何进行大规模的知识工作。
第一部分:管理你的项目
CP1 交付高质量的产品
- **软件质量的挑战:**目前人们息息相关的生活方式都需要许多软件去承载和服务,所以这些软件的质量应该要得到保障。一旦产生任何错误或缺陷,则可能带来不可估计的影响。对于一个大规模复杂的软件,随着时间和时代的变化,软件的变化也随之提高,越来越复杂带来的是质量保证的难度越大。提出了8个基本设计标准。
- 什么是软件质量:软件质量被定义为产品对用户的有用性,也即满足用户的需求。软件质量对开发成本、发布日期和用户满意度都有影响。只有明确需求,才能开发高质量的程序。个人软件过程提供了理解其中缺陷所需的技能和实践,这将帮助有效地发现和修正绝大部分缺陷,并另提供数据支持。软件质量首先关注应该是软件的缺陷,因为需求和用户使用功能是首位的。*所有的缺陷都来资源与人为的过失,也即不正确的行为。*往往需要预防和消除缺陷,但是往往预防更困难,需要程序员深入的研究软件开发过程。
- 缺陷和BUG:缺陷与bug并不等同。缺陷更像是“定时炸弹”,会存在潜在的应用风险。也许大部分的缺陷产生的影响不大或者不会被触发,但某些缺陷一旦产生确实致命的,而这些一般也难以直接发现。管理缺陷能够良好地为高质量程序开发做保障。
- 质量无尽:质量提高与改进是一个无休止的过程,没有完美的程序。在开发的不同阶段进行不同的质量保证。
- 目标明确:软件的目标十分重要。目标能够指明努力方向,设定了优先次序。但是,软件目标不明确是领域的一个普遍性问题。
CP2 为高质量项目制定计划
- 计划是质量的保证,能够为软件开发提供一个可行的操作空间,但是软件的开发周期绝不可能通过计划完美定义的,没有任何人知道项目的具体时期。在软件周期中,要作两种计划——阶段计划和产品计划。阶段计划基于时间,关注如何对时间地利用与管理;产品计划基于行动,阶段性的程序或报告为例。
- 为每一项主要的工作制定产品计划:产品计划有助于帮助判断完成工作需要多少时间,以及你会在什么时候完成,同时还可以帮助在工作期间的追踪过程。软件工作中在团队计划中也要注重个人的工作计划。这可以帮助他们完成合作任务时互相承诺交付时间,并始终如一地履行。
- 一份合理的产品计划包括3个部分:① 产品规格和重要的性能指标;②估算工作所需时间;③ 进度预测。这里的产品可以是一个能用的程序、一个程序的设计方案或者是一个测试计划。
- 由于计划不当而造成的种种问题会使所有人都蒙受损失:客户得到的是产品的延期和开销加大,管理者不得不耗费更多资源,而开发人员则名誉扫地。计划是一件非常严肃的事情,其明确了承诺,需要成熟的思考。
- 计划必须满足的5条基本条件:① 易于理解;② 清晰明白;③ 详细具体;④ 精确缜密;⑤ 准确无误。需求的变更使得计划不是一次定义就结束的,应当结合需求的变化、项目执行中发现的问题,对计划进行经常性合理性的修订与维护。
第二部分:管理团队
CP3 高效团队的基本要素
- 团队的额要求:至少两人;都为同一目标工作;每位成员至少扮演一种特定角色;完成任务要求团队成员之间相互依赖;一般而言,好的团队成果明显高于个体。
- 团队遇到的7个常见问题:① 无效领导;② 缺乏妥协或合作; ③ 缺少参与;④ 拖延和缺乏信心;⑤ 低劣的质量;⑥ 功能蔓延;⑦ 无效的对等评估。
- 团队失败原因:① 资源不足;② 领导问题; ③ 不可能的目标;④ 士气问题
- 高效团队必备的四个条件:
- 团队凝聚力
- 富有挑战性的目标
- 反馈
- 共同的工作架构
- 团队交流的三要素:透明、倾听和协商
- 自主指导型团队的典型行为:团队成员会主动发现需要做什么病及时去做,而不用人告诉要做什么。为了能完成工作任务他们会去做任何需要做的事情。对于工作,他们勇于承担,并决心把它做好。总结为5点:① 具有团队感和归属感;② 共同对团队目标作出承诺;③ 对过程和计划具有主人翁意识;④ 具有制订计划的技巧和执行计划的纪律;⑤ 追求卓越
CP4 作高效的团队成员
- 作一名优秀的团队成员,需要做任何在队伍中需要完成的事,这是一个基本要求。同时,要对团队具有自主和管理的意识,对待其他成员或团队,要具有良好地承诺道德规范,不轻易允诺不可能的任务,而也要尽力地去履行已付出的承诺。
- 个人在团队中要支持和认同队伍的共同目标,这是个人工作的基本驱动;同时,也要有明确的个人目标,并为之去努力。
- 要想团队运行顺畅,每一位成员都应当奉献出他所知道的一切。在团队中,一是要清楚地表明自己的看法,并且引起团队的关注;二是要注意他人的意见并接受帮助。
- 团队创建需要所有成员的主动参与
CP5 领导和指导团队
- 领导力决定成败:项目的领导者能够决定项目的成败,源于精致的管理和开诚布公的管理态度。团队处事的方式很大程度依赖其与领导者进行协调的方式。
- “恐惧、贪婪、承诺”:三条最重要的激励因素。而承诺一般为恰当的激励因素,激励的程度取决于作出承诺的方式。承诺的三要素是协商、约定和执行。
- 承诺首先要是自愿的,也必须是可见、可信的。在可信团队中,承诺的作出与保障是十分重要的。
- 选择新团队成员时需要整个团队都参与:对候选人得到更加全面的判断,同时团队成员也会更积极帮助新人适应环境和工作状态。
- 一些团队成员参与到团队工作的技巧:
- 提问,先别主动说
- 装聋作哑
- 频繁地检查约定
- 感受没有说出口的疑虑或不同意见
- 不要让某个人完全控制讨论
- 管理专家
- 指导团队领导者
- 关注事实和数据
- 不允许有旁观者
- 理性管理的本职:首先,是检查当前工作情况后确定产品和行动目标;其次,要为短期目标制定计划。再次,要评估和追踪计划完成情况,并监督工作中的纪律执行状况。最后,要持续监督业务执行情况。