10、项目计划没有突出重点
软件开发涉及到方方面面的工作,有些是主要的,有些是次要的,项目计划应当反映有价值的工作任务、环境条件。项目计划不能写成一个大杂烩,也不能写成一个包罗万象的百科全书。在项目计划中要简洁精确地反映对项目有价值的事情、任务和活动,避免罗嗦。项目管理的理论方法、成功的项目管理经验都是在实施项目时应该参考的。但是,每个项目是特殊的,具有“唯一性”的,一次需要为每个项目做专门的计划,选择适合的项目,适合的团队的方式和方法。
11、忽视次要工作任务对项目的影响
软件开发项目计划不仅要安排需求分析、概要设计、必要时的详细设计、系统实施和测试与维护等实际的重要工作,而且还应该安排项目中的支持性辅助活动,这些支持性辅助活动虽然不能成为关键活动,但是它们却对项目的进展又作重大的影响。这些辅助活动包括:体系结构定义、文档评审后文档编写的返工甚至是需求调研的返工,测试之后的编码返工、系统交付、与软件复用相关的活动、项目组内沟通交流、休假和法定假日、培训和教育、团队成员的生活(如饮食、住宿、交通等)、项目规划、人员管理等管理活动、会议和回复电子邮件,等等。做项目计划时应当尽可能完整地列出这些影响项目的活动,或者按照固定的模板进行计划的制订,免得遗漏必要的计划内容。有时候,小的疏忽会带来大的问题,次要矛盾会成为或引发主要矛盾。例如,加班安排不当,会引起员工的厌倦甚至离职,造成软件项目的人力资源问题,从而影响项目的进度,甚至导致项目失败。
12、工作任务的分解不便于人员分工
在确定了系统构架之前应该考虑在编写文档的同时是否有些其他基础性的工作可以先做,如是否在需求分析的同时进行部分的系统概要设计;是否可以先进性技术预研,环境架构搭建、后台数据库框架搭建、软件系统框架搭建等等。迭代法使得在上一阶段的部分任务完成后,下一阶段的对应工作就可以投入进行。在确定了系统构架之前之后工作任务的分解都要考虑模块编码独立性、开发编码工作的负载均衡、编码进度安排优化、预防人员流动(如生病、其他更紧急的任务、离职等)对开发的影响:一个好的项目计划同时应有助于减少项目组的压力和紧张,提高软件开发效率。
13、不了解项目成员的工作能力
项目成员的工作能力多种多样,需要根据项目的岗位角色来分配。如软件开发的编码人员至少需要编写代码的能力、单元测试的能力、跟踪查找问题的能力、解决问题的能力。而需求分析人员就至少要有业务理解学习能力、业务分析能力、沟通表达能力、建模及文档能力等等。这些能力很难量化,不过项目经理最好是心里大致有数,能够大致估算出每个项目成员在正常情况下完成不同目标要求的各项任务所需要花费的时间。