在香港做Consultant

2001年六月起程去香港,去公司总部做JAVA Consultant。到那里第一天的上午,一个业务经理拿一张简单的图纸给我讲了一下项目的大概,下午就直接让我看Code,一头雾水。而组里9个成员 更复杂,香港大头是只听汇报的,香港业务经理只负责业务(Business Logic),一个外聘印度人做项目经理,一个来自新加坡分公司的印度裔工程师,一个来自马来西亚分公司的华裔工程师,两个外聘的香港工程师,和我们两个 来自北京的。

不知道为什么,北京的工程师和香港经理的关系有些紧张,之前已经有一个擅自回国而被公司开除的,而另外一个是和其它组交换过来 的。刚到香港,兴奋和新鲜感还没有过去,做什么都有些兴冲冲的,即使碰到了第一个下马威也没有打击我的热情。第三天的时候,印度项目经理走过来让我做一个 LOG的小模块,我开始看相关的文挡和源码,想着怎样比较好地实现,过了一会儿,项目经理走过来问进度,我说正在做,她满面笑容地问:”一个小时可以完成 吗?”我有些发愣,是这个地方的规矩吗?需要这么高的效率,不过自己刚来,怎能示弱,”OK,no problem”, 之后, 抛开什么好好设计的念头,直奔主题,开发工具Visual Age 也是第一次使用,笨手笨脚,不过我只要用基本功能就行,临时还找北京的同伴给我讲解一下。一个小时后,项目经理来检查了,依然是满面笑容,我也得 意,Show给她看LOG的结果,她点点头,让我发给她。事后很久,也没有看到我写的那个模块用在什么地方,才明白过来,那只是一次测验。

开 始以为这个国际化的团队开发水平应该很高,既然他们能花这么高的价钱外聘人员,然而深入进去,才发现很乱,尤其是项目管理,很长一段时间,竟然没有版本控 制,项目经理要求每个人把源码更新到某个目录,然后她在自己的机器上Build后,Deploy 到server上。很奇怪公司有PVCS VM,而项目组却不采用。至于需求,更是经常变,甚至UAT(User Acceptance Test)阶段,按照客户的要求,JSP页面差不多改动了三分之一。

一般来说应该项目经理负责进度和人员安排,但可能是外聘的缘故,也可能 是她是印度人和其他组员交流不畅的缘故,业务经理经常插手这方面的事情,于是一仆二主的事情经常发生。一次,我莫名其妙地被大头找去谈话,问我为什么不完 成项目经理给我的任务,我奇怪,说业务经理已经派给我任务,和项目经理的任务时间有冲突,而且我也告诉过她。心里很气恼,这个印度人为什么当面不对我说什 么Dead Line之类的话,却在这里告黑状,当时还是平静给大头解释情况,又问如果两人同时要自己做事情,时间都很紧,怎么处理,大头的回答也很乌龙,说给他们两 个人都发信,协商出一个轻重缓急的顺序。

出来后我就直奔项目经理去了,责问她为什么不直接当面给我交代清楚任务,我感觉一直和她交流得不 错,她一直对我也都是满面笑容,还是那种很真诚的笑,这么忽然被背后踢一脚,我可忍受不了。不料,项目经理显得很冤枉,说她没有那样对大头说,并且建议我 和她一起去找大头再谈谈,我同意了,和项目经理又一起坐在了大头的办公室里,这下论到我糊涂了,项目经理没有澄清什么,而大头也没有再就这个问题继续说什 么,扯到了其它问题,而且自始自终,大头也是微微笑着,笑容显得纯净而友善,大头很年轻,三十岁左右,听说是加拿大一个农业学院毕业,不懂IT方面的技 术。

发了这么一次脾气,印度项目经理对我的态度却友善起来,甚至有些讨好,我曾经给过她一个北京公司软件产品的试用光盘,让她看看是否对她 所在公司有用,也许能以此卖出几个License. 之后就没有了消息,却在吵架之后的某一天,她特意找到我说,她将软件推荐给了她公司的技术经理。是否如此,我不得而知,却想起三毛写的”西风不相识”。

我 到这个项目组的时候,项目开发已经进入Integration Test阶段,一时还不知道安排我具体做哪一部分的工作,所以在头两个月,一直处于打杂状态,做TEST,写用户手册,编一些边缘的小模块。如果是在北京 做这些,我早烦了,觉得是屈才,那个时候态度却很好,都认真去做,可能也是觉得毕竟这是第一次接触真正大规模的商业软件开发,什么事情都有一个熟悉的过 程。而且总觉得在香港表现应该不辱没北京公司派我来这里。

第一次的机会来了,用户忽然要求增加一个报表的功能,还需要使用一个公司内部的工 具来开发。业务经理要求项目经理和我一起来完成这个任务,真到实际接触中,发现项目经理有些空架子,一起听了两次讲座,我已经有了概念怎么入手,需要那些 流程,而且开发一个报表的工作量要多少,而项目经理却依然糊涂。由她来给我制定Schedule,可以肯定的是, 她肯定是按照她的理解制定了一个很紧的进度。看到Schedule表时,我已经清楚了大半,心里也有底,但是不动声色,她以为是又给我制造了很大的一个麻 烦,说了很多时间很紧,任务重之类的话。我只回答”I will try my best”.

主要是用Stored procedure 完成,而之前,我从来没有做过。但是信心满满,有什么东西是难学的?有参考书,有做过的人可以咨询,不耻下问精神我还是有的。一个星期内,我就将第一个报 表的Stored Procedure完成了,而调试却花了快两个星期,其余的报表速度就快多了,基本上是三天一个,而当初计划是12个报表给了12个星期,也就是三个月。 我不到两个月就做完了。

这是一个比较独立的模块,组里也只有我一个做,错过了开始的了解和学习,项目经理已经根本插不上手,而业务经理也不再找她来讨论这个模块的问题,而是直接找我。

可是这么做下去,心里有些着急,我是以JAVA技术专长派来的,却做着和JAVA基本上不相干的开发,而且我半年的合同就要到期,回北京后,在香港的经历对我的技术增长有什么帮助呢?

项目开发快结束了,我已经开始准备回北京。项目上线后,用户反响不好,结果在我们这批开发人员意料之中,这么混乱的管理下,怎么可能有高质量的产品,不过我对自己负责的那个模块还是有自信,因为直接和用户沟通过,他们对报表还挺满意。

不 料大头忽然找到我说,因为进入维护阶段,我有一半的工作量转到另外一个组,一个叫K的经理会派给我任务。几天后,K找到我说要完成一个任务,读出JAVA CLASS文件中属性的值,我已经认定这又是一次测验,用了最简单的字符串搜索办法,做出结果给他,却说不合要求,必须是适用于所有有相同属性的JAVA CLASS文件,并且要求我第二天给他答案。这可是道难题,我从来没有接触过,甚至不知道如何下手,用Google狂搜,找到一条线索,应该和 Classloader有关,最终又找到几个例子,开始从这方面着手,以为找对了路,写了N长的代码,却怎么运行都有错误,已经是深夜了,我第二天怎么说 出我没有完成任务的话。可是再熬下去也没有用,我打印出来几张认为有些参考价值的文档,回酒店再研究吧。回去后睡不着,还是看看文挡,不知道怎么发现一个 refelect的包,正是我要找的答案,第二天早早到公司,马上就写出了这段小程序,测试一把,感觉简直太好了,总共只用了六行代码。等K到公司后给他 看,他很高兴,而且马上发给了VP。以为事情结束了,不料一个星期后,VP急火火地叫我去他办公室,运行结果给他看,而且叫来公司里的一个技术行家。再后 来,公司就推出了一个和我做的东西有关的JAVA版本控制的小工具,到现在,我也不清楚那是一次测试,还是真的一项比较紧急的任务。如果是后者,那就太可 笑了,这个MIS部门据说在这个全球性的大公司里还算开发能力比较强的,而我用到的reflect包是JAVA中很基础的东西,自己以前不了解,心里已经 有些汗颜,可是这个100多人的部门难道就找不出来几个懂行的?

不久,北京公司来信说祝贺我,我的和约又续签一年。这时对我来说,留在香港已经不是一件美差,补助一直在降,刚去时是每天45美金,而那个时候滑到了25美金,住处也从四星级酒店搬到了普通的公寓。

项 目最终都移交给K管理,除了我和业务经理,其他的开发人员合同到期都陆续走了,项目维护本来也不需要那么多人。我全面转到了K手下做事情,他是一个典型的 技术型管理人员,对Code有一种近乎偏执的态度,也是一个我觉得很有趣的人,不少人说他苛刻,难相处,在香港的时候,他对我却一直还不错。

项 目的响应速度一直受到用户的抱怨,K对此研究了很长一段时间,忽然找到我,让我姑且看看是否有改善的地方,问题最大的那个JSP页面有三千多行的代码,而 且里面包含了这个项目中核心的业务逻辑,我统计过,前前后后一共有六位开发人员在上面做过编码,所以我最后看到的是一个大杂烩。无知者无畏,我只看到了那 么多罗嗦的代码和逻辑,觉得如果我写,肯定能精简很多,这么烂的东西不如重新写,在原来的基础上改简直不可能。可是半年在那里呆下去,已经知道经理们最喜 欢提到的词就是”risk”,要想让K接受重写的建议,我必须先拿出一个他能立刻看到效果的方案。

白天我研究源代码,让他们看到我一直在 做,而下班后就开始设计方案,建原形,也很快,第一个原型三天后出炉,我在自己的机器上搭了一个环境,让K和业务经理连上来看效果,K果然非常感兴趣,而 不懂技术的业务经理甚至着急问我下个星期能不能把改好的文件放到Product 服务器上。

K让我给他解释原理,但是好象听不懂,还问我怎 么想出的解决方案,我画图给他看,讲解整个流程的原理,从中间找出瓶颈等等,但是他似乎不满意,后来我才感觉到他认为可能是我背后有人,才想到了这个方 案。不过他已经看到效果,即使不很了解,也决定放手让我继续做下去,我终于可以按照自己的想法来编上一阵子程序了,那一个多星期,干得热火朝天,因为马上 该回北京休假,我尽力想在走之前实现一个更完善的原形,临上飞机那一天,更是做到了凌晨五点,反正飞机上可以睡一觉。

有了K的支持,下面的工作就都好安排了,不过我原来打算的重写还是被否决,方案做了一个折衷。真到实际中,就出现了很多意外,从开始实施改进方案到真正全面实现,整整用了半年。但是结果也很让人高兴,原来出来一个页面需要一分多钟,而改进后只需要十几秒,不到半分钟。

这 个时候,我已经在部门里混得很熟,可是刚到香港时的激情也在逐渐消退,说起来,和K有很大关系。K身上有很天真的性格,这使他四十多岁的年龄却显得象二十 出头,在这个公司里,他的职位已经很高,却每天能抽出大量时间一行行审核组里开发人员所写的代码,代码被他打回来重写是家常便饭。对Coding效率的追 逐达到了痴迷的程度,他曾经让我对一段JavaScript程序改了三天,仅仅是将循环时间从0.08 秒降低到0.03秒。其实这样也没有什么不好,不过我总觉得用的不是地方,象我们所做的企业应用软件,他更多应该关注的是架构和设计,这种质量控制方式用 在实时系统中还差不多。他喜欢和属下讨论技术问题,鼓励你发表见解,可是最终的方案还是要听他的,顶多是他吸取了你的意见,但是肯定还是按照他的方法做。 有时候,你不想说也不行,他还挺喜欢听到你有自己的见解。到后来,一听到他打电话来去他办公室,我都要扮苦脸,又练英语去了。

我都盼望着北京公司什么时候能把我叫回去,已经得到许诺,回北京后,会安排我做项目经理之类,应该比在香港做这样的Programmer有意思多。

我 对K表露过几次同样的意思之后,K也对我说以后会给我机会做设计等比较高级些的任务,而且和北京公司又要了一个外派人员。有一个男开发人员没有通过他的电 话面试,北京公司的头头打电话问我,如果和K打交道要注意些什么?下一个安排的面试人员是一位女生。我照自己的观察给了一些反馈,K很自负,也喜欢提问 题,看你技术掌握的程度,我还经常接到此类的小测试,比如他发给你一段代码,问有什么问题,之后看你用了多长时间反馈。这种事情防在别人身上,会让人很讨 厌,可是K却总让我觉得挺有趣,有时候也挺可乐,因为他做什么,你都觉得他并不是出于恶意,而只是他的风格。

当人员确定之后,K找我谈话, 问我希望是男同事来还是女同事来,我已经从北京那里知道结果,当然就说女的好了,我可以和她聊天,一起逛街什么的,我一个人在香港挺闷的,之前的那几个北 京男同事已经一个个都回去了。K听了就笑得很开心,虽然我有时候觉得他让人烦得不得了,可是从心底里还是很喜欢这个头头。

2002年十月底,公司忽然发生大变动,几个地方的员工(上海,香港,吉隆坡,汉城)都连线到北京,听董事长宣布公司解散,员工可以选择补偿金或合并到另外一家公司,而我们这些外派的人员全部返回北京,再签合同,听候发配。

在香港做了16个月后,我又回到了北京。

Advertisements

关于 李力(Ada Li)
Entrepreneur, Community Leader, Software Engineer

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: