从测试经理离职看软件项目管理
前言
最近一段时间写的日志全是技术细节上的问题,我们在做开发的同时,不断积累,不断总结才能在一个项目的过程中得以提高自己,要不然一个项目结束了,我们脑子中可能迷迷糊糊的记得好像是做过了什么,又好像忘记什么。马上快到春节,想写一篇关于项目开发过程的总结,也是对今年做个总结吧。
事情概况
之前由于工作关系,公司前任测试经理离职了,临时有公司一位比较资深的架构帅aaron担任,经过一段时间招聘,新的测试经理上任了,新人到一个地方,对业务的了解可以说是为0,想展开工作可以说是一筹莫展。还有即便业务了解了,想把测试环镜搭建起来就也可以说是一道难题,拿我手上的手机充值业务来讲,系统就分为前台Web程序、收银程序、后台WCF程序、平台Windows 服务程序,每个程序里的配置都非常麻烦,之前aaron之所以在不了解业务情况下能够把这件事情扛下来,凭借的也是他深厚的技术功力。时间不长这位测试经理就离职了。
原因分析
测试经理的离职只是一个项目开发过程的一个外在表现,而为什么离职却是我们该思考的,大家都受过良好的教育,脑子都不笨,智商都差不多,甚至说人家的智商比我们都高很多,但为什么接不下来公司的事情呢?
记得这位测试经理刚到公司就被安排来测我手上的手机充值业务,对此我也是很苦闷,因为我无法去告诉他该测试什么、怎么测。原因有两点,1:项目开发过程中无任何文档,2:他在上海,我在苏州,这不在同一地方工作也增加了沟通成本。我也在思考我能为测试人员做点什么,后来我利用空闲时间写了份充值系统概要,里面写了系统的架构图,数据库表关系,以及表注释。
系统架构图目的在于想让测试人员先对整体上进行了解,而不是一下子钻到一个点上,再怎么研究都是做无用功,我们给别人讲事情就应当是这样,先从整体上告诉别人这件事情是什么样的,然后再一点一点的解释,这一点我体会很重,在一个没有好的项目管理的情况,这种情况到处都是,包括我之前呆的公司,我在前任东家做项目的时候也出现这种情况,在报行关的项目当中,我作为系统设计的人,需要了解整个业务,其中费用结算部份是整个系统的核心,每个地方都涉及到,而当时的项目经理,告诉我你不用想那么多,先把流程第一步的UI画出来吧,说时间比较紧急,无耐之下于是我只能照着说的去做了,结果在以后的开发当中,不停的返工,我说这些想表达的是有时候我们做事情的方式方法错了,心时想着把项目做的更快,结果会把事情搞的更遭、更慢。
数据库表关系图我是这么想的,测试人员,目前还是技术人员,在业务了解到一定程度以后,需要考虑一下我们的数据库表关系是什么样的,我深有体会,在了解了表设计以后,会在很大程度是帮助你了解系统为什么设计成这样。再之后的表注释只是帮助别人更深一步了解数据库表关系图。
尽管我尽我微博之力了,也无力回天。前段时间,像我手上同时有几个业务需要开发,银联转账的,新增一家游戏产品的接口开发、以及手机充值部份业务需要改善。这些业务都是不到一周的任务,谈不上需求了解,概要设计,详细设计了。我作为这些东西的开发者,在了解一下相关业务,和接口供应商沟通一下以后,脑子里构思一下就直接coding了。根本就没办法去培训其它相关人员。
以前在CS的时候,在John的帮助下,有幸负责过两个项目,同时吸收了许多Ed身上那些美国人身上的开发方式。虽然那时候一直都在吵,开发过程过于死板,太过固执等等,但有一点是好的,我们要项目能够持续发展,过程有跟踪,不因个人的离职或者其它什么的而让项目陷入瘫痪,很明显,比如说你要做项目交接的时候,你能站在接收者的角度来想,人家最希望看到什么,你能把人家需要的东西告诉人家,这一点,必要的设计文档是需要的。可以说大部份程序员都不愿意写项目设计文档,因为都说,那东西没用,其实不然,我们在写项目设计文档的时候,会发现很多脑子里思考不到的地方,会发现很多设计上的不足,在写文档的过程中就会及早发现,当然了,我比较反对那种教条式的写文档,把写文档当成一件死任务来做,最后把写文档变成为了文档而文档,忘记了我们写文档的目的是为了帮助他人来了解项目的初衷。
项目管理设想
每个公司的情况各有不同,业务领域,技术体系,人员构成都不相同,当然不同的公司采用的开发过程方法论也不相同,大了需要CMMI,小了提昌敏捷,但是有一点核心的东西不能忘,那就是无论什么样情况,我们做事情,需要让别人,并且需要有更好的方式来告诉别人,要不然恶性循环的过程将不断延续。要达到一个理想的情况,需要一个好的公司文化,然后需要一个好的PM来平衡CMMI和敏捷开发之间的取舍,以让整个团队发挥最有效的战斗力。
记得天王 迈克.杰克逊有个舞叫云什么漫涉的,名字不太记得了,为了能让身体达到前货45度而不倒的效果,竟想出来了在鞋子上挂个钉,从这可以看出,一个人如果真的喜欢一件事情,能够想方设法去把事情做的更好,世间的道理都是相通的,就是在我们这软件开发这件事情来讲,我们也都时刻需要思考如何才能把事情做的更好,项目过程怎么样对达到最优,当需要文档记录一下的东西就要花点时间先记录、当需要大家一起设计的时候就是需要共同来头脑风暴、当需要建立完善的测试体系时就需要建立完善的测试体系、当代码需要审查时就需要审查、当系统需要优化时就要不断的优化……,并且不断完善,这样才能保证项目可持续发展,这样对于公司来讲是最有利的。
-----待续