项目管理要说起来没完没了,不同公司,不同团队,甚至同一个人不同项目的管理都不一样。个人也没打算长篇大论,因为国情所致:客户今天签合同,明天就想要看结果,各级领导压缩开发时间,结果交付日期定出来一看,周末和下班的时间都是“工作时间”。甚至人员的配置,技术的门槛,客户需求变化不属于风险控制的范畴了,(这年头有风险控制的概念?),反正一个要求:按时完成任务。言外之意:早点收钱。客户呢?一个人一个标准,不研究软件特点,觉得花了点钱,就以为软件公司什么都能做了,结果时间给的少,要求却很多,更夸张的是,在项目开发过程中,客户情况变化了,可能是部门调整了,业务发展了,需求变更反反复复,注意是反反复复,从A角度看这样做比较好,过两天发现从B角度看改成另外的样子比较好,再过两天想起了A角度又要改回来,特别是客户方项目负责人测试的时候,他可不会一直有统一统筹的概念,想到什么就要强制要求什么,这样,一个项目成功与失败,不是什么技术的问题,而是项目控制的问题。反正国企,私企,外企,事业单位,国家机关,接触多了,就知道这不是在一个教科书上能学到的,而是经验。一个只能意会无法言传的中国式管理方式.....哎,等经验丰富了的人,却又不做项目了,去干别的去了。培养了自己能力,却浪费了本应该带来更多社会价值的影响。
这样,还是回到效率的问题,如果脑子记不住那么多细节,就只能拼技巧了。
在开发一个项目,就把过程记录一下。
写需求:
要模板,套官话是第一步,介绍一下客户情况,为什么用这个软件或技术,这个软件或技术使用后会给客户带来什么好处,自己公司怎么在这个软件或技术上有建树,最后软件和技术需要软硬件条件等等。最好有个做文书的,学理工科的很少文笔好的,最好有学美工的,因为一图顶万字。
第二步:写模块,需求里都有哪些要完成的功能,这个时候便是客户给你一堆的表单,word的,excel的,图片的。这样服务器的文件夹要开始建了:01客户文档。为什么要01,因为排序好找,如果项目很大,就分类放,如果项目不大,就都放在一起。但表单会经常看的,每次双机查看太麻烦了,我就用OneNote来整理,开一个项目的Notebook,一个Section就是一个模块,一个Page就是一个模块的相关的内容。第一步先把各个模块都建一个page,叫:客户表单,然后把这些文档中的表单,贴到客户页面上。这样下次做设计的时候一目了然。
一边看客户表单,一别写自己对这个表单的字段的理解和需要问客户问题,这个放在每个模块的第二个Page里:叫业务理解,等差不多写好了,便可以在和用户开会的时候一起问用户了,而这个过程中,字段也可以设计出来了。虽然这个是详细设计的部分,但我还是自己定义了一个Excel,每个Sheel一个模块,上面写字段,因为Moss用的是List,所以和数据库的定义列差不多,但这个只是初稿。我把需求说明放在了“02需求说明”的文件夹下,我把这个数据字段的Excel放在了“03整理文档”文件夹下。
客户的表单接下来就是“用例说明”,就是理解业务,也是在和客户会议的时候,客户讲出来的东西要画一个用例图,这个就得用Viso画了,说白了,就是流程图:哪个角色的人,什么条件,做什么动作,对什么操作,出来个什么东西。这个用例图也放在“03整理文档”文件夹下,一个模块一个Page。画好了,这个用例图和刚才字段excel里的列表可以粘到需求里,然后再粘分别到OneNote的Page里:客户需求,列表。
剩下的就是谢谢系统能用什么方法来呈现出客户要的这个功能。如果写需求给的时间少,写到这里就可以了。需求说明书是干嘛滴,就是给客户看我理解业务没有。如果客户要想看得更多,那么就是画UI了。当然这个UI也可以画在详细设计里。也可以画在需求确认书里,个人觉得画需求确认书更好。
这个时候开了一堆的会议,会议记录要写吧,写在一个“04会议记录”文件夹下:20110301会议记录,这个是给领导看的,会议记录的每个要点写在Onenote的“需求变更”的Page里,为什么要写?就是防止频繁变化,每次对方对某个模块提出来的要求,什么时间,谁说了什么,都有记录,这样每次给客户看这个页面,客户就会在提出需求变化的时候要多考虑一下了。
需求说明书还有一个,其实也可以写在详细设计里,就是客户的关系表,客户的部门,用户,客户的角色,这就是所谓的组织结构图,这个东西也挺有用的,因为人事一个组织结构,IT域里面一个组织结构,每个系统都有一个这个东西,会非常混乱的。这些东西很可能自己的系统也要导入,所以理出来一个组织结构图,定义角色,角色相关人员是必须的,这个东西画在Viso里,弄一棵树来表示。这个东西会很耗时间,但对做流程有好处,这个东西最后你会发现,最后会关联到每个用户上,所以,最好你有一个这么一个软件:自己开发好了,1棵树:部门,角色,下面挂人,然后定义一个excel模板,让客户根据这个模板做出一个Excel表格出来,这样以后数据导入就用这个模板了。我这个模板的excel有3个sheel,一个是部门上下级关系,一个是角色表,一个是部门,角色,人员表。把这个贴到需求说明里,有助于对业务理解,也有助于UAT的时候你能认出来谁是谁。
需求确认与详细设计
需求写好了,当然最好是让客户签需求确认了,但往往这个时候开始详细设计和进度表了,那么刚才用到的几个文档,和客户确定好了,就可以确定下来,根据用例图画新的标准的“Viso流程图”,放到“03整理文档”文件夹下,完善列表的excel,画web UI,Viso画WebUI没有默认的模板,这个时候网上找一个支持Viso画UI的Shape就可以了,但我找的竟然没有多行文本框的样子,还是不够智能,当然用Dreamweaver画也可以。画好了,可以喝客户讨论页面了。把它们粘到详细设计里,再粘到OneNote里,这样开发前要准备的东西都差不多了。如果你要写详细设计里面编码的逻辑关系,那个就另当别论了,毕竟程序员只要看到表单和业务关系清晰就都会开发了。
开发
接下来服务器上给项目人员开放这些文档,其实他们只要看OneNote就可以了,前提是Onenote要和文档内容同步,这是项目经理需要做的。这样,编码人员也不需要打开一堆的文档找来找去。然后就搭建软件项目,建TFS,建虚拟机,开发用到的工具,开发用到的环境,技术解决的小程序,开发过程中的参考的文档,项目管理的好,多一些技术讨论会,让程序员写周报,写日报,没这个时间就多叫叫,多问问。一边整合一边测,搞不定的技术问题要么自己搞,要么请教。
客户部署和测试
接下来就是准备提交给对方IT部门人员测试,把公司服务器上开发的东西打包的打包,部署文件配置写好,要导入的数据准备好,工具也都准备好,客户服务器一般也会有一个开发环境,“一期上线”内容部署到客户的开发环境上。IT测要提一堆的意见,改还是不改,看进度,然后就是UAT,写UAT脚本,IT要在原来的域上建一堆的测试账户,UAT结束后,又是一堆的意见和要求,有很多是不合理的,有很多是要花很多时间的才能作的,改还是不改,看谈判技巧了。
对方UAT的测试环境最好自己也有一份在虚拟机上,因为指不定什么时候出错了,要改,公司有个环境也好,还有就是换个LOGO用来演示也是不错滴。
正式上线
接下来便是上生产环境。交付使用,项目维护,二期开发,需求变更。当然做到这,有时间总结吗?没有,一般就是新项目来了,要么就是维护以前的项目了。