1 为大任务制定计划工作表
如果你的组经常承担某种特定的通用任务,你需要为这些任务开发一个活动检查列表和计划工作表。每个检查列表应该包括这个大任务可能需要的所有步骤。这些检查列表和工作表将帮助小组成员确定和评估与他必须处理的大任务相关的工作量。
2 把任务分解成“英寸大小的小圆石”
“英寸大小的小圆石”是缩小了的里程碑。把大任务分解成多个小任务,帮助你更加精确地估计它们,暴露出在其他情况下你可能没有想到的工作活动,并且保证更加精确、细密的状态跟踪。
3 计划中,在质量控制活动后应该有修改工作
几乎所有的质量控制活动,如测试和技术评审,都会发现缺陷或其他提高的可能。你的项目进度或工作细分结构,应该把每次质量控制活动后的修改,作为一个单独的任务包括进去。如果你事实上不用做任何的修改,很好,你已经走在了计划的前面。
4 为“过程改进”安排时间
你的小组成员已经淹没在他们当前的项目中,但是如果你想把你的组提升到一个更高的软件工程能力水平,你就必须投一些时间在“过程改进”上。从你的项目进度中留出一些时间,因为软件项目活动应该包括做能够帮助你下一个项目更加成功的过程改进。不要把你项目成员可以利用的时间100%的投入到项目任务中,然后惊讶于为什么他们在主动提高方面没有任何进展。
5 管理项目的风险
如果你不去识别和控制风险,那么它们会控制你。在项目计划时花一些时间集体讨论可能的风险因素,评估它们的潜在危害,并且决定你如何减轻或预防它们。
6 根据工作计划而不是日历来估计
人们通常以日历时间做估计,但是我倾向于估计与任务相关联的工作计划(以“人时”为单位)的数量,然后把工作计划转换为日历时间的估计。这个转换基于每天我有多少有效的小时花费在项目任务上,我可能碰到的任何打断或突发调整请求、会议,和所有其他会让耗费时间的地方。
7 不要为人员安排超过工作时间80%的任务量
跟踪你的组员每周实际花费在项目指定工作上的平均小时数,实在会让人吃惊。与我们被要求做的许多活动相关的任务切换的开销,显着地降低了我们的工作效率。一个员工一周理论上工作40小时,但不要只是因为有人在一项特定工作上每周花费10小时,就去假设他或她可以马上做4个这种任务,如果他或她能够处理完3个任务,你就很幸运了。
8 将培训时间放到计划中
确定你的组员每年在培训上花费多少时间,并把它从组员工作在指定项目任务上的可用时间中减去。你可能在平均值中早已经减去了休假时间、生病时间和其他的时间,对于培训时间也要同样的处理。
9 定义项目成功的标准
在项目的开始,要保证各方对于判断项目是否成功有统一的认识。通常,跟紧预定的进度是唯一明显的成功要素,但是肯定还有其他的因素存在,比如,增加市场占有率、获得指定的销售量或销售额、取得特定用户满意程度、淘汰一个高维护需求的遗留系统等。
10 把握各种要求之间的平衡
每个项目都需要平衡它的功能、人员、预算、进度和质量目标。我们把以上五个项目方面中的每一个方面,综合成一个约束条件,你必须在这个约束中进行操作;你也可以定义成与项目成功对应的驱动力,或者定义成通向成功的自由程度。可以在一个规定的范围内调整。
11 公开、公正地跟踪项目状态
创建一个良好的风气,让项目成员对准确地报告项目的状态感到安全。努力让项目在准确的、基于数据的事实基础上运行,而不是从因为害怕