软件项目实施方法论
最近一直想在思考关于项目的方法论,我所要叙述的方法论仅限于软件实施这个行业,小的软件产品可以,大的企业的CRM产品,再大如SAP 产品等等都可以试用。
我所理解的方法论,简而言之,就是一套行之有效的流程操作。跟着这个流程,可以很容易的达到一种目的,不至于跑偏。比如说我炒菜,该怎么炒?先做什么,后做什么?是先放油还是先放盐,放盐放多少,放油怎么放,放什么油等等。我们可以买一本菜谱,按照菜谱上面的描述一步一步的来。菜谱上对于某一种菜的做法就是一个做这种菜的方法论。这个方法是总结出来的最行之有效的通用方法。
记得在大学做论文的时候,老师教我们写论文。该怎么写呢?老师会给我么列好一个思考提纲,先介绍国内外的研究现状,然后分析这个问题的研究背景,从大到小,最后集中到这个问题上。这就是我们经常说的套路。对的,就是一个行之有效的套路。
那么对于,做项目来说,这个行之有效的套路是什么呢?
现在,假想我们要做一个项目,推演在从项目启动到项目完结的过程中的每个阶段我们要做哪些事情。
第一个阶段是项目的准备阶段
项目在开始之前,要进行一定的准备。准备工作包括人、钱、物。确定项目需要哪些人员,什么时候需要,需要多久。项目资金安排,项目人员的住宿安排,住宿地的选择要离实施公司比较近,又方便生活,不能离市区太远。人员的分配,哪些人住一起,性格是否相符,吃的习不习惯,办公室的设备如何等等都需要考虑。这个要提前找公司人资进行协调,因为一般公司人力紧张,需要提前安排。这个时候就需要一张《项目人员计划表》,做为人员申请用。然后,申请下来以后,要有一张《项目人员联系表》,方便项目组成员进行联系。然后要制定项目的《项目章程》,项目章程规定了项目的大体范围,项目经理的任命,宣布项目的合法性,是一个总体的规划。还要有一个仪式性的项目启动大会,制作《项目启动大会PPT》。除此之外,还需要提前计划好项目的整体实施过程中可能需要用到的文件,应该提前制定《项目交付模板》。这个项目交付模板,很多做过几个项目的公司都会有,比较容易找到,模板具有风格统一性,专业性,商务性。到这里项目的准备工作基本就完成了。
第二阶段项目的蓝图设计阶段
项目的设计阶段是很重要的阶段。这个阶段大约占据到整个项目的20%的时间。工作内容主要有项目的调研和业务文档的设计。调研是非常重要的一项工作,有计划,有目的,分布式的去调研。调研范围上一定要全,具体要细。大而全,深而细。很多的项目之所以在具体后期的实施过程中需求不断的变更,还有些可能会出现重大的变动,都是因为项目的调研不够详细深入导致的,所以这个阶段特别要慎重。调研的时候一定要有计划的进行。有一个调研的大纲,调研哪些人,什么时间调研,调研的时候需要问哪些问题,都要提前准备好。我相信在有着几个项目经验的人来说,这个会形成一个系统。心中会有一个自己问哪些问题和注意的事项。《调研大纲》、《调研详细问卷》,《调研记录》这几个要准备好。
调研完了之后,要进行业务蓝图的设计。业务解决方案需要多人进行讨论,确定解决方案,撰写《业务蓝图》,和甲方公司进行业务蓝图确认。根据业务蓝图,设计具体的系统蓝图,也就是具体的《蓝图文档》。项目蓝图文档展示了系统未来呈现的样子,是最直观的展示作品。到此,蓝图设计阶段完成。
第三阶段,项目具体实施阶段
这个阶段是项目的具体实施阶段,也就是把蓝图变为现实的阶段。开发人员进场,根据产品人员设计的蓝图和设计的整体系统架构,开始进行代码的编写。开发人员在模块开发完成后,测试人员进场,和开发人员同步进行,进行模块的测试工作。模块跑通了以后,进行接口的集成测试。看看各个模块之间的数据交互是否相通。这个阶段,关键用户也进场,关键用户和测试人员同步进行,关键用户作为一个测试小白,可以更好的从公司业务角度进行观察系统的功能是否满足其具体业务需要。测试人作为一个专业人员,可以更好的从系统角度来看问题,能够把握整个系统,全面的看问题,保证系统的运行高效,流畅。这个阶段产品所要做的事情有两个:一个是推进项目按照计划进行下去,另外一个就是和关键用户进行沟通,收集客户问题,解答客户疑问,同时和开发人员进行沟通,想办法解决项目中可能遇到的各种问题,包括技术问题和业务问题等等。
第四阶段项目上线和推广阶段
测试人员在通测和压力测试完成之后,系统按照预期并没有大的问题,基本上解决了所有的bug,这个时候,系统性能在基本达到上线要求,经测试经理签字,确认可以上线,那么系统才可以上线。上线前需要进行关键用户的培训和使用人员的培训,编写《系统操作手册》,准备培训资料。这个阶段有个很重要的工作,就是准备系统的数据,包括静态主数据,动态数据。如果说系统是一个骨架,那么数据就是血和肉。行业中有一句话,流传甚广:三分技术(系统)、7分管理、12分数据。这句话充分说明了数据的重要性。
不同公司的上线策略有所不同,有的公司比较谨慎,分步分区进行上线,先试运行一段时间,然后在一个片区进行系统的小范围上线,保证影响面小,遇到问题波及面小,但是比较耗时。有的公司采用全面上线,是对系统的极大信任。到此为止,项目就快结束,需要项目团队进行支持一段时间,待到没有问题,方可安排人员撤离。
项目的实施流程大抵如此,但是在具体的实施过程中,问题千变万化,管控和应变异常重要。拖死项目的往往不是技术,拖死项目的是无尽的需求变更和对于业务的不了解导致的不断变化。