1.定义项目成功的标淮
在项目的开始,要保证各方对于判断项目是否成功有统一的认识。通常,跟紧预定的进度是明显的成功要素,但是肯定还有其他的因素存在。比如,增加市场占有率,获得指定的销售量或销售额,取得特定用户满意度,淘汰一个高维护需求的遗留系统等。
每个项目都需要平衡它的功能、人员、预算、进度和质量目标。我们把以上五个项目中的每一个方面综合成一个约束条件,必须在这个约束中进行操作,可以在一个规定的范围内调整。
在项目早期,要决定用什么标准来确定产品是否准备好发布了。你可以将发布标准基于:还存在多少个高优先级的缺陷、性能度量、特定功能完全可操作或其他方面表明项目已经达到了目的。不管你选择什么标准,都应该是可实现的、可测量的、文档化的,并且与客户所指的“质量”一致。
尽管可能无意中承诺了不可能的事件,但不要做一个明知不能实现的承诺。坦诚地与客户、管理人员沟通那些实际成果。任何以前项目的数据都可能成为你说服他们的论据,虽然这对于不讲道理的人来说没有真正的作用。
困难的部分不是写计划,而是做计划——思考、沟通、权衡、交流、提问和倾听。你用来分析解决问题花费的时间,会减少项目以后会带给你的意外。
“英寸大小的小圆石”是缩小了的里程碑。把大任务分解成多个小任务,帮助你更加精确地估计它们,暴露出在其他情况下你可能没有想到的工作活动,并且保持更加精确、细密的状态跟踪。
如果你的团队经常承担某种特定的通用任务,你需要为这些任务开发一个活动检查列表和工作计划表。每个检查列表应该包括这个大任务可能需要的所有步骤。这些检查列表和工作计划表将帮助团队成员确定和评估与他必须处理的大任务相关的工作量。
几乎所有的质量控制活动,如测试和技术评审,都会发现缺陷或其他需要提高的可能。你的项目进度或工作细分结构,应该把每次质量控制活动后的修改,作为一个单独的包括进去。如果不用做任何修改,很好,你已经走在了计划的前面。
你的团队成员已经淹没在他们当前的项目中,如果你想把项目组提升到一个更高的软件工程能力水平,就必须花一些时间在“过程改进”上。从项目进度中留出一些时间,因为软件项目活动应该包括帮助下一个项目更加成功的过程改进。不要把项目成员可以利用的时间100%地投入到项目任务中,否则你会惊讶:为什么他们在主动提高方面没有任何进展。
如果你不去识别和控制风险,那么它们会控制你。在项目计划时花一些时间集体讨论可能的风险因素,评估它们的潜在危害,并且决定你如何减轻或预防它们。
人们通常以日历时间做估计,但是我倾向于估计与任务相关联的工作计划(以“人时”为单位)的数量,然后把工作计划转换为日历时间的估计。这个转换基于每天我有多少有效的时间花费在项目任务上,我可能碰