做项目就是学习
不管我们做什么,同样的事情如果总是反反复复做的时候,我们总会去寻找一些做事情的规律,以帮助我们把事情做得更快、做得更好。软件、项目也是如此。软件或者项目其实都给人提供一种服务。在给客户提供服务的时候,如果我们把提供服务的成本降低了,或者让客户更满意了。那么我们就算是把事情做得更好了。那么我们如何能做到了?个人觉得最关键的因素就是我们要会学习。
大家都知道,做项目从大体上可以分为需求调研、设计开发、系统维护三个步骤。对于整个项目来说,三个步骤都是同等重要的,缺一不可。而对于做项目的人来说,需要掌握两个东西,一是技术,二是需求,这两个东西是缺一不可的。
显而易见,技术是做任何软件项目的基础,如果在一个项目组中没有任何人掌握该项目所需要的技术,那么自然就没有办法做这个项目。对于一般的项目来说,技术是存在着普遍性的。那就是很多项目都使用相同的技术,有相同技术背景的人可以参与所有的使用该技术的项目。比如说,一般B/S结构的项目大都可以用java来实现。也就是说,如果一个技术人员对java已经掌握到一定的程度,那他就参与这些项目。至于项目的大小、涉及范围以及项目所在行业都与技术没有直接的关系。当然,如果技术人员有过类似项目的背景,做起来自然会更好一点。
即使在某些特定的项目需要使用一些特殊的细节,可能这个开发人员恰好在以前的经验又没有接触这个细节,这也不要紧,只要开发人员在项目的开发过程中通过进一步的学习,肯定都能掌握该项目所需要的技术。比如有一个项目需要使用到hibernation、spring,即使技术人员从来都没有接触过hibernation、spring也不是问题。在技术方面的学习,对于开发人员来说,他们不仅有学习能力,而且大都还有着非常浓厚的兴趣。
这里强调一下,不管是怎么学习,是基本上掌握一门语言后进一步精通这门语言,还是学一门语言后再学另外一门语言,学习的过程总是免不了的。虽然并不是一件很难事情,但是也是需要付出一定的时间和精力的。
掌握做项目所需要的技术以后,剩下的事情就是对需求的理解与掌握,这也是做好项目的重中之中。对于技术人员来说,需求可以说是千变万化,不仅是不同的行业项目所需要解决的问题相差很远,而且即使相同行业的项目所需要解决的问题也可能大不相同。所以在组建项目团队一般可以要求团队成员必须有相同的技术背景,但是不可能要求团队成员有相同的业务背景。因为各种各样的项目实在太多了,相同的业务背景实在很难,另外实践证明也没有必要。
很多的项目经理或者技术人员对于技术的学习都是十分的重视,但是对于业务的学习与理解往往很容易被忽略。有人甚至认为只要掌握了技术,剩下的事情就好解决了。忽视客户需求往往很容易就导致客户不满、项目出问题甚至整个项目失败。
本人曾经接触过一个招标管理系统。系统用.net做的,其中用到一个类似于nhiberntion框架。整个系统无论是整体框架还是具体的代码风格都非常好。但是这个系统在试运行时问题就很多,导致客户非常不满意。主要是软件功能与客户要求相距甚远,客户这个时候又提出来,原来需求发生了新的变化。但客户的要求几乎没有得到过及时的回应,甚至技术人员还疑惑,客户怎么会有那么多这样那样的要求啊?最后这个系统停止使用,项目失败。回过头来想想,如果足够重视客户的需求,多花时间去理解和领悟客户的需求,对于项目的每一个细节、客户的每一个想法开发人员都予以积极的回应。即便开发人员是刚入门的新手,开发进度即是延长一点,整个项目也不至于最终失败。我们也知道,项目所使用的技术,客户几乎是不关心的。
因此。对于一个技术团队或者一个项目组来说,要做好一个项目,其实关键因素不是团队的技术实力有多强,而是对需求的理解是否透彻,正确的理解、把握需求才是项目成功的关键所在。
如何理解、把握好项目的业务,个人感觉也是一种学习,是一种领悟。客户的业务对于技术人员或者项目经理来说都是一个未知领域。我们所做的项目一般来说都来自不同的行业。一个项目来自医院的,而下一个项目可能就是来自银行的,项目与项目之间的需求一般来说都没有任何相似性。这是我们技术所经常需要面对的问题,也正是因为我们所的项目之间相距遥远,所以这就要求,我们技术人员在面对各个行业的业务时,必须具备一种快速的学习和领悟的能力;理解和掌握能把客户的业务后,通过技术手段来实现客户的业务。
就拿医院的管理系统来说吧,我们知道,一个普通病人去医院看病大体流程都是挂号、看病、检查、拿药。所以我们在需求调研我们需要掌握不仅整个流程,而且我们还应该知道每一个环节的细节。比如在病人挂号的时候,挂号员应该了解病人的哪些具体信息,病人第一次去医院与第二次去医院又有什么区别。这都是在做需求调研所必须了解的。只有理解医院所有环节以及每个环节的详细细节后,我们才能做相应的系统设计。至于系统设计好以后,如何保存挂号信息,如何查询挂号人数等等,那只是基本的技术手段而已,无非是数据库的添加、删除、修改等。
不管是项目经理还是做调研的技术人员,每把一个项目了解得差不多的时候,总是有意、无意的对这个项目所在的行业就已经有了深刻的理解。记得小学时候有篇课文叫----钢铁是怎么练成的,大家都知道,课文内容与钢铁并没有什么关系。当我在一个钢铁厂做一段时间的项目后,就真正的知道钢铁是怎么炼成的了。不仅明白什么是巴西球,而且也明白烧结厂是干什么的。当理解各个炼铁工序后,某些报表含义自然就明白了。无非是各个工序中的各种原料投入与成品产出比例之类的。
如果所做的项目总在一个行业中,那他就很容易的成为行业专家。在一定的时间内去理解和掌握一个完全陌生的领域,当然绝非一件易事。其中的道路自然是漫长而曲折。其实做任何事情都是这样。不经一番冰霜苦,哪得梅花放清香。
因此,当我们总是面临不同行业的项目的时候,我们就需要培养和提高我们对陌生行业的学习能力和领悟能力。
罗罗嗦嗦写了这么多,对我自己来说是算个总结,也希望能给同行的朋友带来一点点帮助.还有文章内容仅仅是个人感受而已,或许里面还有许多不尽正确之处,请不吝赐教。