要想一个项目,能够快速,准确的开发出来,必须有一套良好的机制来保证,从需求符合度,质量,进度等各个方面给予及时的控制,才能够符合市场的需要。当然,并不是说只要有了一套良好的机制,就能保证项目的成功,但是,如果没有一套良好的机制作为保证,那么项目成功的几率必然会降低很多。
什么样的机制,算是一套良好的机制呢?至少应该从以下两个方面进行:1)人;2)项目管理。下文将分别从这两个方面,进行阐述。
1. 人
不管在哪家公司,什么环境下,人才是至关重要的。没有了合适的人,即使有着世界上最先进的管理理念,都无处可施,跟别谈把一件事情做好了(最极端的例子,就是乔布斯同志了)。
那么一个项目中,到底需要哪些人员呢?分别作什么才是合适的呢?通过实际的经验可以发现,一个项目团队中,至少需要以下几种角色的人员:
1) 项目经理
2) 产品经理
3) 核心开发人员
4) 外围开发人员
5) 测试人员
如果你所在的公司,刚好有能力配置以上角色,那么无疑你是幸福的;如果没有,那么也别气馁,通过自己的努力,向这个方向发展。
假设能够按照上面的角色组建一个项目团队,那么按照什么比例进行组建比较合适呢?我建议是一个项目团队,不要超过7-8人(人少了,灵活性大,而且目标容易达成一致且容易实施),具体如下分配:
1) 项目经理一名
2) 产品经理一名
3) 核心开发人员一名
4) 外围开发人员两至三名
5) 测试人员两名
如果前面条件都符合了,自然就会有一个疑问,那么这些角色都是哪种类型的比较适合担任呢?都干什么呢?
1) 项目经理
该角色必须懂得技术,且一般建议由资深(技术能力)人员担任。主要负责整个项目研发的控制。
2) 产品经理
该角色也需要懂得一些技术,应由公司的服务部门人员担任。主要负责项目与市场的紧密结合。
3) 核心开发人员
资深技术专家担任,负责项目核心技术的开发。
4) 外围开发人员
技术人员,负责项目的应用开发,比如像API,界面等。
5) 测试人员
测试人员,负责整个项目的测试,文档的编写,项目的培训等。
好了,到了这里,项目的团队,就组建完成了,必备的条件,已经具备了,后面就是实际的项目管理过程了。
2. 项目管理
项目管理不能够直接套用很多公司的项目管理理念,比如像IBM公司的IPD流程。而是应该在这些流程的基础之上,根据实际的环境,重新整理出实际有效的流程,这样才能符合实际的工作环境。
一般情况下,应该都需要有以下几个环节(不同公司可以根据实际情况进行修改):
1) 项目流程
凡事必须有据可循,有章可依。才能在实际做的过程中,让一个项目能够合理的进行,不要因为一些小事而影响整个进度。
目前做的比较好的就是IBM的IPD流程了,其原理图大致如下(这个是IBM位华为做的项目管理流程):
至于每个阶段的具体含义,大致如下(更具体的请上网搜索吧):
a. 概念
对产品机会的总体吸引力及是否符合公司的总体策略作出快速评估。
b. 计划
清晰的定义产品及竞争优势,理解业务计划,制定项目计划及资源计划,确保风险可以被合理的管理。
c. 开发
设计产品,并将在经过批准的最终业务计划中的技术开发、制造及行销策略和计划进行集成。
d. 验证
进行必要的设计更改来使产品符合需求,验证产品,发布最终的产品规格及相关文档。
e. 发布
发布产品并制造足够数量的满足客户在性能、功能、可靠性及成本目标等方面的需求的产品。
f. 生命周期
在产品稳定生产到产品生命终结期间内对产品进行管理。
2) 项目监管
有了良好的项目流程,那么就必须要有人进行相应的监管,否则再好的流程,都没有用武之地了。
一般情况下,项目监管,应包含以下几个方面:
a. 流程管理
检查项目开发过程中,是否按照项目流程执行,并检查相应的资料是否齐全。
b. 进度监控
按照项目计划表检查每个里程碑,是否按照计划执行。
c. 变更管理
管理项目开发过程中,需求的变更记录。
d. 风险管理
在项目开发过程中,及时对可能存在的风险进行预警。
e. 考核管理
管理项目考核以及项目中的人员考核。
在项目监管的过程中,负责人需要定期向公司高层提交相应的项目分析报告,及时让高层了解到最新的项目进展。
3) 项目开发
一说到项目开发,大家很自然的就会想到是设计和编码工作,但实际上设计和编码工作只是项目开发过程中的一部分,而非全部。那么项目开发包含哪些呢?
a. 项目开发管理
a) 需求变更管理
用于管理在项目过程中需求的变跟,处理。基本上MainSoft就足够使用(不足就是收费的)。
b) 源码管理
用于管理在项目过程中源码的版本控制及备份。基本上SVN就足够使用。
c) BUG管理
用于管理在项目过程中BUG的记录,处理。基本上Mantis就足够使用。
d) 工作日志管理
用于管理在项目过程中日常工作记录,疑难问题记录及解决。基本上MainSoft就足够使用(不足就是收费的)。
b 项目研发
a) 设计
设计产品的架构,以及分析可能存在的风险。
b) 编码
编写产品的代码。
c) 评审
代码Review。
4) 项目测试
项目测试分为两种,一种为研发自测,俗称单元测试;一种为集成测试,由专业的测试部门对项目进行验收测试。这个部分说的只是集成测试部分。
关于测试的流程或者标准,大家可以参考以下几个文档,我这里就不再进行过多的描述:
1) IEEE Std 829-1998
2) GB/T 15532-2008
3) ISO9001
一般情况下,测试基本上分为以下几个阶段:
1) 测试计划
根据项目需求文档,编制项目测试计划。一般与项目产品设计同步进行。
2) 测试用例设计
根据测试计划,设计测试用例,至于设计用例的方法,测试项相关在此不进行描述(因为网络上一堆相关的文档)。
3) 测试编码
根据测试用例编写测试代码。
4) 测试执行
执行测试用例,这里如果有条件的话,一定要做自动化测试,而且市面上也有好多软件,比如LoadRunner,QTP等,当然了,也可以自己来写,比如使用C#的UIAutomation类就可以实现界面的自动化测试。
5) 测试报告
根据测试结果提交测试报告。
5) 项目改进
其实此部分就是项目的生命周期阶段,需要不断根据项目在市场上的表现,进行相应的项目改进,基本上项目改进需求的来源有几个部分:
1) 公司的服务部门
2) 公司对客户的调查
3) 竞争对手产品的变化
4) 市场销量的变化
如果一旦确认进行项目改进,就可以进入项目管理阶段重新评定项目。