周:那这个项目能不能应用?
邓:我找了一个有经验的人来,帮我完善了一下,我觉得应该是能用的,不过还存在一些安全方面的问题。另外,系统应该整体配套,如果没有一个数据库,没有一个系统与我的这个环境搭配,是不行的。但当时公司也不可能找出一个人与我配合做这件事。
点评:在做毕业点评项目的时候,邓旭根据公司保险业务的需要,带着同班的四个同学完成了这个项目。因为他们都是初次开发项目,而且时间也比较紧张,只有一个星期的时间,所以想要项目达到实用的程度,还是非常有难度的。但是如果给他们充裕的时间,同时再有一个有项目经验的人作一定的指导,他们肯定能做出来。邓旭做这个项目还有一个优势──他对保险业务非常熟悉,因此作需求分析和设计就容易多了。可惜,当时我们在培养的学员的时候,只是培养他们编程的能力,而不是培养需求分析和设计能力。
七、重归故里
周:你学完了这个就业班以后,参加实习了吗?
邓:没有。我又回到原单位了。
周:当时那个主任已经走了吗?
邓:他已经走了。他几乎成为公司的焦点了,已经待不下去了,下面反对他的声音非常大。你想,我在公司已经干了六年了,都被挤走了,其他人还怎么过呀?我想很多年轻人一般不会干那么长时间,我自己觉得在公司里的人缘还是不错的,我能很好地与大家相处,除非这个人欺人太甚,实在让人无法忍受。我记得当时在大会上,那个主任口口声声地说,像我这样的人坚决不能留,一定要开除。不过第二天,我们总部的人也说了“像他这样的人我们也不留”之类的话。当时公司领导对我很信任,他们都很理解我,很支持我。但是在实际工作中遇到的很多困难,却并不是他们能够解决的。比如说,我开发的这个项目的主要目的是应用,但有很多现实问题阻碍这个项目的顺利进展……他们考虑的自然有道理,而我考虑的也有道理。那么究竟是谁的问题?是谁的错?谁会去寻找这个答案呢?
点评:邓旭一直想在公司里推广计算机应用,但是一直障碍多多,进展缓慢。这里有认识的问题,有管理的问题,但最主要的问题,还是公司并没有将其当作一项“任务”来抓。当初摩托罗拉曾为他们提供方案,想必是因为价格太高,领导没有通过。也许在领导看来,信息化并不是燃眉之急,如果靠人工一样能维持工作,又何必花那么多钱上信息系统?而扩大收入,创造业绩,才是公司的头等大事!
周:你回原单位以后做开发了吗?
邓:做了几个测控软件,是用VB做的。
周:VB是你自学的吗?
邓:完全是自学的。当时我认为自己做得已经很成熟了,因为软件实现的功能已经很强了,完全可以作为一个商业软件来卖。因为我觉得像VB这种东西的实用性比较强,稳定性很好。我还做了一个数据转换的软件,现在有几家公司还在用。我也做过BS结构的软件,是自己用JSP做的,比如说我们现在用的MIS项目。
周:当时你们班并没有学JSP吧?
邓:是的,没学过。JSP是我在清华学的。当时我自己觉得我的自学能力很强。JAVA我也没有全学,只是学过基本的东西,其余大部分都是自己看书学的。
周:开发项目的时候有什么感受?
邓:我主要感觉做出来的项目很难和他们的实际要求相衔接。我不属于电脑部的正式成员,我属于业务部门的技术支持人员。我在业务部相当于主任级的待遇,但没有头衔,只是技术人员。这样做事情的时候就会遇到很多问题,由于很多东西都是我一个人做,包括测试、需求调研、软件规划,还有最后的软件安装等等,但业务部门追求的毕竟是业务,所以我不可能完全按照规范来开发,而我对规范的程序开发又不是很熟,所以碰到了很多困难。比如一开始的应用,我反反复复地询问客户需求,反反复复地向他们解释,给他们提示,但当软件开发进行了一半的时候,客户还是会告诉我,这和他们想的不完全一样。而这时候,我就得推倒重来。那么,怎样才能避免这种错误?为什么我做的软件和客户想象的不一样?我认为,实际上这是因为客户在最开始的时候就没有清楚表述自己到底想要什么东西。另外,在软件开发的过程中,客户也总是不满意,总在告诉我如果这样就可行,如果那样就不行,而且提出了很多要求。作为一个开发人员,也许我不应当这样说,但我的确无法忍受。客户昨天告诉我的一个想法,到第二天就可能完全改变!后来我学了软件改进以后,才明白这个过程需要有合同的约束,不应信口开河。还有后来的测试,当我把软件做出来以后,每个应用的人都希望一点毛病都没有,因为所有的测试都由我自己来做,可是我一个人不可能完成测试──因为项目是我开发的,我会按照自己的想法去测试,而如果用我自己的思维来测试我自己开发的项目,岂能测出错误?!
点评:很多作坊式的软件开发公司都存在邓旭所说的这种情况。用户通常并不知道自己的需求,也不知道应该做成什么样子,一上来就编程序,一边编程序,一边提出修改意见。在这种环境下,程序员根本无法正常工作。
周:这些是不是你在学了MSE以后才明白的道理?
邓:以前不是很明白,但有一些模糊的认识。我有这样一个特点,当我对一件事情不是很熟的时候,我就喜欢到论坛上和大家讨论,我很喜欢看别人的文章。
周:你喜欢上哪个论坛?
邓:比如说电脑报的天极论坛,还有国内的开发者论坛。这几个论坛里面,高手很多。我经常和他们讨论一些问题,向他们请教。我主要是看他们都在讨论一些什么样的问题。对照我在实际应用中遇到的困难,更进一步坚定了我要学MSE的决心。
周:MSE是用业余时间学的吗?
邓:是的。我白天还要上班。
周:单位同意你上MSE吗?
邓:同意。
周:那单位给你出钱吗?
邓:没有,是我自己出钱。
周:这样是很辛苦的,你现在工作忙不忙?
邓:白天上班的时候还是比较忙的。
周:学完了MSE以后,是不是想给公司建立一个团体险的管理系统?
邓:这就要看有没有机会了。其实我希望做的就是这件事,就是让客户感到满意。我相信这个系统做起来以后,客户或者公司都会感到满意,因为这能极大提高他们的工作效率。前一段时间我们公司开办了医疗保险,但因为没有计算机系统的支持,全部由手工来做,所以即使招了很多人还是忙不过来,还特别容易出错,容易产生纠纷。如果采用计算机做这些事,第一非常规范,第二出错很少,第三效率会非常高,第四用的人也很少。
周:你有没有和负责团体险的领导提过这些想法?
邓:包括副总我都提过。
周:那副总同意你的意见吗?
邓:应该说,他很赞同。
周:因此,他也就同意你去清华学MSE,同意将来把这个系统做起来。
邓:同意我学,但未必同意由我来做。我只是有这个想法,有这个良好的愿望。
周:你认为你们公司欠缺信息化管理,是因为领导没有这个意识,还是因为领导不懂技术?
邓:他们并不是没有这种意识,因为他们也在做电子商务。但他们理解的程度有限,我觉得我作为技术人员,更理解业务的应用,因为我毕竟来自业务一线,我更理解客户的感受,所以我觉得我更有发言权。
周:也就是说,这些领导主要按自己的想像去定,而不是根据实际需要?
邓:我的意思是说,最起码参与这件事的人,应当是既懂业务又有IT经验的人,或者说又懂技术又懂业务的人,这样才有更大的发言权。
点评:有时候,事情需要靠自己争取,因为别人并不一定理解你的想法,或者不一定重视你的想法。在这种情况下,如果自己仍然坚信自己的想法是正确的,就一定要坚持下去,想尽办法实现这个想法。因为领导迟早会明白:你这样做是在为公司着想,是在替领导分忧。当你历尽艰辛说服领导,最后又通过自己的辛勤工作完成整个系统的时候,你不仅为公司创造了巨大的效益,你的功劳也一定会得到认可。
周:我同意你的观点。你们领导现在持有什么观点?
邓:我感觉他还是没有十分理解我的意思,或者说他等不及我来做这件事。
周:他还是更看重业绩,看重做了多少单子,收入了多少钱?
邓:这是每个人都没法回避的,首先要生存。这个我很理解。
周:但我觉得这里存在一个问题。把你们的业务IT化,就像你说的那样,可以节省成本,提高效率,降低出错率,还可以减少人员开支。这是非常划算的,领导应该能理解这个道理,那他为什么不找几个人组成一个小组,专门来做这样一套软件呢?做完以后,再培训所有的人来使用这套软件,这样公司的运作不就越来越好了吗?为什么领导不这么做呢?
邓:我感觉好像领导还没有精力做这件事情。主要是生存的压力过大,领导要做出更多的业绩。
点评:的确,当公司尚处于生存阶段的时候,不得不集中所有精力于收入和效益等方面。如果收入上不去,便无法承担工资、房租等成本,公司也许将面临倒闭。很显然,在这种状况之下,将精力集中于创造收入上,要比投资建设信息系统重要得多。
八、而立之年的困惑
周:谈谈你在学习IT技术的过程中遇到的困惑吧。我觉得,由于你纯粹依靠自学,尽管你目前正在读清华的MSE,但一定还有些东西不能完全理解。你有什么问题,我们可以探讨一下。我在这个行业做了将近20年时间,国内的、国外的,管理的、开发的,我遇到过很多问题,也许我能帮你解决一些问题。
邓:我还不是很了解国内开发一个项目,究竟要经过一个怎么样的过程。我们马上就要学软件项目管理课程了,由微软的人来讲。但微软毕竟是一个全球知名的大企业,他们做得很规范,而国内的企业是不是也在这样做呢?如果我以他们的标准去应聘国内企业,会不会又出现眼高手低、高不成低不就的问题?这是我一直担心的一个问题。
周:这个问题我是这么看的。微软研究院是一个很大的机构,大概有几百人的规模吧,而且微软做的软件也都是非常庞大的软件,这里面每个人的分工都很细,有做需求分析的,有做整体设计的,有做编程的,还有做测试的,最后还有做文档编写的,他们的这种流程安排得非常规范,完全按照软件开发的那套流程来做。为什么呢?因为他们做的软件非常庞大,必须有很多人配合着来做,所以微软不得不采取这样一种方法。现在中国的企业是不是也这样呢?不是。就拿你们保险公司的团体险这个业务部来说,把你们的业务全部搬到计算机上,整个工作量也不会太大,只要有一个项目小组,一共8、9个人做上半年,就可以开发出来。另外,微软做的是系统软件,而中国最需要的是应用软件。微软做的是开发工具和开发平台,提供给客户的是一套工具性的东西。而你们是在利用微软的工具开发自己应用的东西。那么相对来说,你这个应用系统要小得多,你们几个人就可以完成需求分析、结构设计和编程,甚至你一个人就有可能全部完成。而测试则可以让一些不懂的人去测试,让最终真正使用这个软件的人去测试。不过文档还是要由你来写,比如用户说明书、用户操作手册等等。所以,现在中国应用软件还没有做到很庞大的地步,所以开发方法和微软就会有区别。当然,将来也会有很大的应用系统,那究竟会大到什么程度呢?比如,美国有一个超市叫沃尔玛,他的数据量已经达到几十个T了,而中国能上T的数据库还比较少。等到那个时候,就需要按照软件工程或者CMM这种标准严格进行了,否则根本做不出来。但中国目前的应用还没有发展起来。所以说,你学的MSE以及微软给你们讲的东西,可能在几年以后才能用上。你毕业以后如果到小公司,可能不会马上就用到这些知识,你要有这个心理准备。
邓:原来如此。另外还有一个相似的问题──国内企业的软件项目经理平时做哪些具体工作?比如我,几年以后也可能要向这个方向努力,否则就真的高不成低不就了。我听说现在拿项目都是凭关系,如果没有关系就拿不到项目。我非常困惑。
周:你这个问题提得非常现实。中国的项目经理和国外的项目经理存在巨大区别。国外将项目经理称作“Project Manager”,他的作用是组织几个项目小组共同完成一个项目。要真正做一个大的项目,其中包括许多环节。第一个环节是销售,就是在前期告诉客户,你有实力做这件事情。只有销售做好了,才能派系统分析员过去做前期分析。一旦客户认可,项目组长就可以接过来做详细设计,了解用户的详细需求,再把需求一步一步全部写出来,让客户看是不是他所希望得到的结果。用户认可了以后,签署合同。然后才开始编程序、测试、写文档。之后是QA(质量保证)做质量把关。QA在国外是一个非常重要的部门,产品最终交给客户使用的时候,是需要QA经理签字的。如果没通过测试,QA经理绝对不会签字。就像会计师事务所的会计师一样,QA经理担负着重大的责任。总之,国外的项目经理是一个“协调人”的角色,他协调销售、开发、测试,而这三个环节都有相应的项目组,项目经理不会每天都直接去和客户打交道,也不会直接去编程序、作测试。项目经理都是公司具有资深经验的人,他们级别很高,甚至还有直接调动人事和财务的权利。但在中国就不一样了,中国企业的项目经理是需要带头干活的,因为目前中国企业的项目规模相对还比较小,还没有细分。在国外三个部门才能做的工作,在中国一个部门就能做。所以,我觉得在中国要真正达到规范化的软件开发,至少还需要五年的时间。这不仅仅和技术和管理有关,还有意识和社会环境等方面的原因。
邓:对。看来在中国做项目经理,还需要付出很大的精力和努力,因为一切还都不规范。
周:中国的项目经理需要自己做很多事情,别人不做的事情他都得做,非常辛苦!你学的这个软件工程硕士将来可以做系统分析员、结构设计师、开发工程师,或者软件开发项目经理,但要真正做到项目经理的位置,你必须要有非常丰富的经验。首先你要做过客户需求分析,然后你还要做过开发,你还要懂得测试,否则你站在这样一个位置上根本无法统领一个团队。所以,你下一步首先还要在底层做一段时间,把基础打牢。如果从底层做起,我的建议是最好去一家大公司做一年到两年的时间,你学一学他们是怎么做项目的。鉴于你的特点,因为你比较喜欢跟客户打交道,又学了MSE这个专业,我建议你毕业以后从事系统分析,也就是做用户的需求。你从系统分析做起,紧接着再了解一些结构设计、开发、测试等方面的知识,你对整个流程就比较熟悉了,你就可以尝试去做项目经理。等做了一段时间的软件项目经理以后,可以向CIO的方向发展。另外,我还建议你一边学习,一边做项目,这样可以把你学的东西用在实践之中。
邓:这个建议非常好,我也在考虑。
周:你不要单纯地学习,因为课堂里学到的那些内容,只是表面的东西。你一定要参与到一个大的工程项目,一边上学一边做项目。你可以找一家软件开发公司,公司对你的时间要求不能太严格,给你的工作量也最好不要太多,你只是作为一个普通的开发工程师就可以了,不要担当主角。以你现在的水平到一个公司做开发,4000块钱的工资应该没有问题。当然,工资少一点没什么大碍,只要得到一个实践的机会,能与你学的东西互相结合,你对所学知识的理解就比较深刻了。等你拿到MSE学位之后,你就有实力去做系统分析。到时候,你尽量到保险公司做项目开发,因为你IT和业务都很熟,这样工作起来比较顺手,而且也比其他人更有优势。
邓:您能不能再多谈一些系统分析员方面的事情?
周:中国目前很少有专职的系统分析员。但随着中国应用软件的普及和大型应用软件的实施,必将催生一大批系统分析员的出现。系统分析员的意义在于了解客户的需求,比如了解政府里的文件如何传输、如何批阅、部委和部委之间如何交换文件,等等。你刚才说的税务总局和财政部颁发的文件政策互相矛盾的例子,其实完全可以避免。那么,这么大的一个系统就需要很多系统分析员,税务总局的需求是什么?人事部的需求又是什么?二者糅合在一起,这个软件应该怎么做?这就是系统分析人员要做的事情。只有系统分析清楚了这些事情,才能开始搭建应用软件的整体框架,否则无法做结构设计。如果用户的需求经常改变,你将根本无法开发,即使开始开发了,最终这个项目也不一定能完成,就因为系统分析没有做好。系统分析的工作和你的性格正好相吻合,以前你总有这种想法,就是尽量满足用户的需求,让用户更加满意,而做系统分析也是这个意思。用户系统分析是做好软件项目的前提,也是最重要的一步,要花整个项目的2/3的时间。如果用户需求分析做得不好,后面的事都将无从说起。
邓:我觉得今天的谈话让我明白了很多问题,解决了很多困惑,启发很大!非常感谢您,周老师!
很多人都需要别人的指点,这样他可以少走许多弯路。如果当初他来北京的时候,就下定决心进入IT行业,只要在中关村“转悠”半个月,他一定能找到一个电脑公司的工作,哪怕是扛机器的工作。之后,他可以渐渐摸索技术。事实上,很多在中关村卖电脑的人,连26个英文字母都识不全,很多攒机器、搭网络的人,只是初中毕业的水平。而他是一个有三年工作经验的大学毕业生,怎么会输给他们呢?
然而,邓旭并不了解这些,否则他也就不会去卖保险了。如果他当时选择了中关村这条路,也许6年的磨练早已让他成了一名电脑技术专家,他也就不再需要花3年的时间去清华读软件工程硕士了。邓旭是那种比较踏实、平稳的人,这固然是他的优点,他做一件事情能善始善终;但这同时也是他的缺点,他在做事的过程中不够灵活,缺少打拚和冒险的精神。
我觉得邓旭应该多交一些朋友,一些能够在一起交流思想、切磋技术的朋友,这样不但可以提高自己的综合素质,还可以为自己创造更多的机会。这些朋友不一定见过面的人,邓旭可以直接写Email给那些素不相识的人,或者到BBS上发帖子,或者参加各种各样的研讨会、交流会。这些都是认识新朋友的方法。有时候朋友的一个建议,可能会对自己产生深刻的影响。
邓旭小学时代的梦想是成为一个天体物理科学家,很显然,这个理想是不切实际的。读了4年大学,毕业后到冶炼厂工作,在北京做6年保险,邓旭直到现在才把自己的职业定位放在IT方向,真正开始了自己喜欢的职业生涯,而他现在已经年界而立。当然,多年的颠簸,让他获得了丰富的社会经验,但在自己的职业生涯上,他却并没有取得丰厚的成果。
事实上,邓旭完全可以避免走这些弯路。他有几次定位前途的关键时刻:第一次是在上大学之前,他需要有一个通过一番奋斗走过来的好朋友,给他一些忠告和指点,告诉他自己应该选择什么专业,如何定位职业,然后朝着一个大概的方向去发展。或者,他需要阅读一些成功人士的文章或传记,从中思考自己的一个方向。第二次是大学毕业以后,如果自己的理想还是想做一名天体物理科学家,可以去中科院地球物理研究所,或者省一级的地球物理研究单位做一名临时工,哪怕是打扫卫生都可以。这样,他就可以直接接触那些从事物理研究的人,可以学习相关的知识,感受相应的气氛。长此以往,只要他具备相关的能力,就完全有可能向研究室的助手、正式研究人员、助理研究人员、研究员的方向发展。如果他能做出一些成绩,可能真的会成为一个科学家。第三次是到北京的时候,如果他认识一个电脑行业的朋友,如果他仔细咨询一下向IT方向发展应该怎么走,也许两年的时间他就可以成为电脑方面的行家。凭着邓旭踏实肯干的精神和他的素质,相信他很快就会得到老板的赏识,他也就可以做他喜欢做的技术工作,然后发展成为部门经理。如果当时他选择了一家电脑公司,而且一干就是6年,我想现在邓旭应该已经做到副总经理的位置上了。现在,邓旭到了第四次做出选择的时候──MSE毕业以后,做系统分析员,然后做项目经理。如果他能按照这个方向坚定不移地向前发展,我相信几年以后他应该可以做到一个中型公司的CIO(首席信息官)的位置。
可以说,一个人的成功,其本身的素质和能力只会占一半的因素,而另一半的因素则取决于他在关键时刻的选择。
文章来源于领测软件测试网 https://www.ltesting.net/