第1章 交付高质量的产品
1.“在软件开发过程中,为了保证质量始终如一,必须遵循以下8个步骤:
(1)确立质量控制的策略、目标和计划;
(2)正确训练、指导和支持开发人员及其团队;
(3)确立和维护软件需求的质量管理过程;
(4)确立和维护软件工程过程的统计控制;
(5)审查、检查并评估所有的产品制品;
(6)评估所有缺陷,加以更正并用以识别、纠正和预防其他类似问题;
(7)确立和维护配置管理和变更控制系统;
(8)持续改进开发过程。”
此处非常详尽有序地列出了保证质量的系统化步骤,在以后的软件开发过程中可以对照这些步骤来提醒自己。
如果一件产品提供了对用户而言是最重要的功能,那么这就是一件高质量的产品。
只有得到了清晰的需求,才可能开发出高质量的程序。
个人软件过程(PSP)提供了一些理解其中缺陷所需的技能和实践,这将帮助你有效地发现和修正绝大部分缺陷。它还提供了数据支持,以避免这些缺陷再出现。最后,一旦你能够有效地管理缺陷,就可以在其他影响程序实用性和价值的质量问题上投入更多精力。
过失(error)是指人做的不正确的事,不论是什么人在什么时间做的,而缺陷则是程序中的故障性因素。
第2章 为高质量项目制订计划
1.“最难以制订计划的时候,也是最需要计划的时候
当项目团队面临巨大交付压力时,他们一定不能让步,要坚持制订一份计划。”
当面临巨大交付压力时,很多人都会想到不做计划,直接赶紧写代码,以为节省了时间,殊不知其实正如一句谚语所说“磨刀不误砍柴工”,有了好的计划,就能事半功倍。
作两类计划:阶段计划和产品计划
第一种是基于时间的计划,阶段计划关心在这一段时间内你准备如何利用时间。第二种是基于行动的计划,比如开发一个程序或撰写一份报告。
2.3 为每一项主要的工作制订产品计划
产品计划会帮助你判断完成工作将需要多长时间,以及你会在什么时候完成。计划还可以帮助你在工作期间追踪过程。
2.4 与你的管理者共同审查详细的计划
问题是几乎所有的软件开发组织都没有一个计划过程来保证计划制订得完整并得到了全面审查和准确核实,但这些正是他们管理项目所必需的。
2.5 每个人都会因不恰当的计划蒙受损失
客户得到的是产品延期和开销加大,管理者不得不耗费更多资源,而开发人员则名誉扫地。
第3章 高效团队的基本要素
1.“有些团队没有设置截止期限或者确立目标及里程牌,有些则设置了永远也不可能实现的截止期限。类似这样的团队普遍无法追踪其行为,并且通常不能及时地、符合逻辑地做出决策。”
Deadline或者说截止期限是非常重要的,因为团队中很多成员其实会抱着这样的心理,一种是如果没有deadline,那么开发的进度、速度自然就会下降;另一种心理是成员总有一种惰性,他们会拖到截止期限前才开始搞,如果截止期限不合理,他们就会破罐子破摔,索性慢慢做了。
团队致力于共同的目标
没有一些共有的目标,人们就不会努力——他们只是投入时间。
3.2 团队合作会比个人独立工作表现更出色
没有一些共有的目标,人们就不会努力——他们只是投入时间。
3.3 团队遇到的七个常见问题
常见的团队问题主要涉及领导、合作、参与、拖延、质量、功能蔓延和评估等方面。
3.4 团队失败的四条原因
团队失败的四条主要原因:资金不足、领导问题、不可能的目标和士气问题。
3.5 凝胶型团队
一支得力的团队在他们所做的任何事中都体现出一种道德规范、一种态度和一种活力。
3.6 高效团队必备的四个条件
团队需要团结、富有挑战性的目标、反馈以及通用的工作架构。
第4章 做一位高效的团队成员
1.“令人吃惊的是,有相当多的软件工程师宁愿独自一个人去努力解决难题。”
虽然大家都知道很多时候遇到问题更应该去向大佬求助,很多时候能很快地解决遇到的问题,比自己去慢慢摸索效率高很多,但是,出于各种各样的原因,可能是不好意思,可能是觉得自己能摸索出来,很多软件工程师宁愿独自解决问题。我们如果能克服这种心理,虚心求教,就能更快地解决问题。
优秀的团队成员会做任何需要做的事
这支团队会去做任何需要的事情而不用要求和指示。
4.2 承诺是一项必须要学习的道德规范
只有基于计划才能作出负责任的承诺。
4.3 目标就是你想要实现的
目标确定了我们想要到达的终点,并且为实现它所需要做的工作建立了优先次序。
4.4 所有的新思想都始自仅有一人的少数派
你有责任与整个团队分享你的思想。
4.5 团队所有成员都应当奉献他们所知道的一切
飞行机组的经历证明了真正参与的重要性。
第5章 领导和指导你的团队
1.“用短期目标制造紧迫感
每周的状态追踪和定期的管理审查能帮助你的团队实现中间目标。”
短期的目标确实能增加紧迫感,这是我有切身体会的。当我刚到导师实验室工作的时候,并没有一个短期的目标,可能一个项目要过两个月交付;这样我可能时间长了就没有那种紧迫感,就开始拖拉了。但是一旦后面改为了每周开会,每周一般都要汇报一下进展,整个项目的进度瞬间不一样了,并且每周我都要保证自己实现一点小目标。
5.1 领导力决定成败
当开发项目失败时,几乎总可以归结为糟糕的领导。
5.2 三条最重要的激励因素是恐惧、贪婪和承诺
团队承诺似乎要比个人承诺具有更强大的激励作用。
5.3 作出并维护承诺
承诺必须是自愿的、可见的,并且要得到做此项工作的员工的承认。
5.4 用短期目标制造紧迫感
每周的状态追踪和定期的管理审查能帮助你的团队实现中间目标。
5.5 当选择新团队成员时要让整个团队都参与
团队成员可能比你更了解候选人,因此要仔细倾听。
第6章 讨论项目并捍卫你的计划
1.“当管理者说交付日期是9个月时,实际上他们是抱出了一个价格,而你没有还价就买下了它。确定完成日期的方法就是制订一份计划。“头儿,这看起来是一个极好的机会。请先让我把团队成员集合起来,在进行认真研究之后,我们会尽全力制订一个最好的计划,几天之内我们会把它提交给您。””
这部分很好地教会了我如何应对交付日期的问题,首先第一点是不要领导说什么时候截止就什么时候截止,就要买东西还要讨价还价呢。但是要注意,不要当场就想讨价还价,而是要制订详尽的计划后有理有据地去提出实际更佳的交付时间应该为什么时候。
6.1 项目从一开始就陷入麻烦
如果计划的时间不现实,请重新计划并与管理层沟通,据理力争。
6.2 让团队聚焦于优先级最高的事
在做任何改变之前,一定要弄清楚这种改变可能会对工作产生什么样的影响。
6.3 在作出任何承诺之前都要先制订一个计划
尽你所能制定一个最佳计划,而不要去管压力。之后,就是据理力争
6.4 让管理者与你进行商谈
如果管理者带给你一个巨大的、即使调整当前计划也无法搞定的变更,难题就来了。
第7章 控制你的工作
1.“改变工作方式所需的步骤:
·确定质量目标
·衡量产品质量
·理解过程
·调整过程
·应用调整后的过程
·衡量结果
·把结果与目标进行比较
·循环并不断改进”
这段话详细讲解了如何改变、改进工作方式,以后可以使用这种方法一步步来改进工作方式。
7.1 一个明确的过程会帮助你提高
莫里斯格林通过明确定义和精确衡量他的个人跑步过程打破了世界纪录。
7.2 做你自己的管理者,而不要像一个受害者
要想跳出受害者心态的陷阱,就要掌控你自己的工作并说服管理者让你管理自己。
7.3 如何提高工作质量
用一个海军的案例说明过程改进步骤。
第8章 学会领导
1.“然而在当时,英国陆军已经20多年没有使用马了。但老的作训手册从来没有修订过,炮班一直有个五炮手,去牵那匹已经不存在的马。”
这个例子很形象地说明了一成不变,墨守成规的坏处,因此我们在领导团队,领导项目开发时,一定要注意如果有些原先的习惯或规定已经不适合现在新的场景了,那么就必须赶紧做出改变。
8.1 你的所作所为会影响你的团队
最成功的团队都有精力充沛、富有热情、满怀信心以及严格要求的领导者。
8.2 领导者要为团队树立榜样
你不可能指望团队成员比你更有责任心、工作更努力或更仔细。
8.3 学会避免领导力低下的一些症状
你的团队需要领导,也想得到领导,而且会很乐于帮助你去提供领导。