[转载]项目管理之我见
导读:项目失败只有一个原因:就是项目经理不合格。
不注重code人员,其实这是一个严重的错误。
问题不应该由测试人员来发现,而应该由开发人员来发现。
软件的质量是由程序员来保证的,而不是测试人员。
不要说项目的失败是因为新需求引起的,一个没有新增需求和风险的项目是不存在的。
代码阶段还有一个重要的工作就是做code review代码公开评审。
项目管理之我见(原创)
chendiy @ sohu.com
http://www.chinablog.com/user2/4009/archives/2005/projectManager.shtml
项目为什么会失败?为什么发布日期会一拖延再拖?
项目失败只有一个原因:就是项目经理不合格。除非这个项目经理在项目开始阶段就已经提出来了这个项目会失败,或者是完全属于项目之外不可抗拒的原因导致失败。
看到这儿项目经理也许不服,您请继续…
新增需求的原因导致失败?客户会让你新增100个需求而要你二天交货吗?必然是分析设计阶段没有充分考虑好可扩展性和新增需求导致现在不可控制而失败的!
程序员人力不足导致?人都没有到位,怎么会失败,多少人做多少人的事,多少人做多少人的计划,不会有失败。
程序员技能不够?项目经理是如何面试的?怎么在项目失败了才发现是程序员技能不够?有问题早提出来嘛。
测试人员没有做好?少来了,测试人员只是加了一道保障证明。程序很多流程都通过不了,程序还属于开发调试阶段,与测试人员有什么关系?
我在国内参加个大大小小好些项目,有日本外包,华为外包的,公司自主研发的。发现有这样一个概念很多项目经理都没有搞清楚:什么叫开发阶段?我认为开发阶段最多只能包括单元测试这一部分。综合测试绝对不能属于开发阶段了,也就是说不能到了最后验货阶段还有程序流程走不通,程序随便正常操作都会失败。程序随便正常操作都出现好多bug属于开发还没有完成,绝对还没有过单元测试阶段,离综合测试和验货阶段还早着呢。说明白点,还属于代码code阶段。
不懂程序设计的项目经理,往往不注重code人员,其实这是一个严重的错误。软件的质量来源于什么?由谁来保证?有的项目经理说是由测试人员来保证,就算测试人员的测试用例写得很详细,把需求中的每一个功能点都测试到了,那最后就没有问题了吗?当然不是,很多逻辑上的东西要程序员来保证不出问题的,而测试人员只是起一个验证的作用,问题不应该由测试人员来发现,而应该由开发人员来发现。也就是说,我们尽量不要让测试人员来发现问题。如果第一次测试有至少25%以上的用例通不过,那说明质量监控出了问题。这样的版本根本就不应该拿出来进行测试。由此分析,软件的质量是由程序员来保证的,而不是测试人员。
细细说来!
一个项目的成败与否,与项目的各个阶段皆有关系:需求都不清楚,开发起来
肯定是南辕北辙;分析设计不够好,会让编写的难以维护,随着新增需求的增多,
会导致整个系统混乱不可控制;编码不好,整个系统不稳定是必然的,Bug也是抓不尽的;测试不做好,系统是没有保证的,少了哪个环节都不行。
项目管理,我认为重点主要放在 项目计划(plan),进度监控(),质量监控(quality),风险预测这三个方面。不要说项目的失败是因为新需求引起的,一个没有新增需求和风险的项目是不存在的,承认这一点之后,我们就不会有很多怨言了。
以下从上面提到的几方面进行详述:
项目计划:没有项目计划,那失败还有什么话好说?大家都知道凡事预则立,不预则废。项目计划一定要包括这几方面的内容:各阶段里程碑时间点,各个里程碑的输出结果,风险预测,意外应对。计划一定要提前于交货时间计划,风险意外是否留下时间和应对处理方案?
进度监控:对每个阶段把握好,每个阶段要完成的任务一定要完成,如果完不成,是什么原因导致的?我们的应对策略是什么?我们要信任别人,但是不要忘记锁门。同样的,别人说完成了,你不能就认为别人完成了,要看到结果才能证明完成了。有的项目经理说,我也进度监控啦,他说完成了就完成了,谁想到没有完成?到底是程序员不诚实还是项目没有管理好?你没有锁好门,能怨别人偷你东西吗?还有一种情况就是不懂如何锁门――根本就不知道这一阶段的输出结果是什么?当然进度监控就是一句空话了。
质量监控:也应该是分阶段进行的,每一个阶段的质量监控内容有所不同。
需求分析阶段的质量监控就是完整而又正确的理解用户需求,需求是否清楚可懂,写用例的测试人员是否明白需求?
分析设计阶段的质量监控就是设计是否完全满足需求?这个设计方案是否满足以后新功能的扩展?以及是否有考虑到新功能的意外和设备环境,运行平台的变化?
编码阶段的质量监控就是变量命名是否规范?代码是否可读?是否有详细的注释?是否有重复代码?要知道重复代码是必然会造成系统不稳定,bug成群的。可变部分的代码和不可变部分的代码是否分离。要知道上面讲的每一部分如果没有做好,都会导致后期的产品出现大量问题。代码阶段还有一个重要的工作就是做code review代码公开评审,你自己发现不了的问题别人也许就看得见。
单元测试阶段的质量监控任务就是单元测试代码是否测试通过?代码覆盖是否完全?单元测试报告提交情况如何?单元测试用例有没有做好?
综合测试阶段质量监控任务当然就是看用例是否完全?是否全部真正执行?测试报告有没有写好?
回归测试当然得看以前测试的Bug是否还在,如果还在,当然是无条件打回去重新开发。
测试阶段最主要的监控就是看用例是否真正执行,是否有安全性测试?破坏性测试?异常测试,压力测试?
项目管理表格略.
以上的每个阶段要完成了才能进行下一阶段,否则会造成混乱出现问题的。想并行进行节约时间反而浪费了时间!
欢迎就此课题进行讨论,发表你的任何观点(赞同,反对),