简单之美—软件开发实践者的思考—故事场景5
2012-07-23 12:23 Patrick.Lee 阅读(333) 评论(0) 编辑 收藏 举报两周后。林峰正在和王蓉讨论问题,李小兵走了过来。
“快下班了,什么时候走?”李小兵打断了他们的谈话。今天是周末,他和林峰约好了几个同事晚上到阳天KTV去Happy的。
“快了。下班就走吧。”林峰头也没回地说。
“在忙什么呢?看你们讨论了一下午。”李小兵没有要离开的意思,他坐到了林峰的身边,看了看电脑屏幕。
“结对开发,呵呵。”林峰笑道,“Ralph说,要把我们的数据模型和ACORD标准之间做个映射。”
李小兵看了看林峰,又看了看王蓉,有点纳闷地说,“你们也可以结对?”
“照Ralph的说法,两个人一起做事就是结对。”
“Ralph说,我看你已经被洗过脑了,哈哈。”李小兵打趣道。
“喂,等我们讨论好,你们再聊好不好。”王蓉有点不耐烦了。李小兵扭身跑掉了。
孔如之做了一个大胆的决定。在TFC项目中,将使用ACORD标准作为领域模型。这意味着,核心系统的数据模型被抛弃了。而为了要继续使用核心系统提供的各项功能,必须要在这两个模型间做一个映射。
孔如之和林峰做了大量的沟通。起初,在林峰看来,这件事是多此一举,不但增加了工作量,而且降低了程序的性能。另外,这是一件枯燥乏味的事情,要了解两个模型的业务含义,还要考虑业务含义上的差异。林峰对此一点兴趣也没有。
“核心系统的数据模型不能满足TFC项目的要求,所以,将来的变化会很频繁。”孔如之是这样解释的,“相比而言,ACORD是一个标准,它已经经过了很多领域专家和实践的检验。这是一。ACORD标准的领域问题抽象比核心系统的数据模型更加灵活和全面,标准本身也提供了扩展能力。这是二。我们在ACORD标准上的努力更有可能成为有价值的知识积累。这是三。最后,标准总是更有利于我们进行数据交换,无论是企业内部还是企业之间。”
“标准化永远是我们工作的方向。”孔如之总结道。
林峰和孔如之争论了很久。他提到了标准的滞后性,标准的版本问题,以及模型映射对性能的影响。争到后来,他发现自己简直是为了争论而争论。他心里渐渐明白,孔如之讲得是有道理的。自己讲的所谓滞后性和版本问题,在任何一个采用标准的场合都存在。难道因为这些问题,就永远不要使用标准?
林峰最后接受了孔如之的决定。
于伦仍然是TFC项目的TPM。所谓TPM,只是上海办事处内部使用的一个职务名称。对IL全球来说,只有孔如之和宗方才刚刚够得上一线PM的职位。很有意思,自从有了上海办事处,亚太区总部(新加坡)里的所有技术人员都成了各种各样的经理。
孔如之经常外出会见客户,就算留在Office,也有不少事务性的工作需要处理。因此,他把一部分组织和管理方面的工作交给了于伦。比方说,主持一些技术方面的会议。在这种技术会议上,主要是讨论一些设计思路和解决方案。
于伦过去也经常主持这类会议。他喜欢开会,如果说有点成瘾也不为过。这种瘾是在他转到管理岗位后才产生的。他自己也没有想过原因。其实,原因很简单。在他还是AD的时候,他可以发表意见,但是意见会受到无数的阻挠。而转变成管理者角色以后,他在会上可以充分表达自己的意见,而且大多数意见都可以落实。这种感觉很不错。
职场上有一个潜规则,就是尽量不落文字。所以,很多人都不喜欢通过邮件来表达自己的观点,而会议是一个很好的替代品。在会议上,大家可以天马行空,热烈讨论,不需要成熟的观点,不需要明确的想法。最终的决议,如果有的话,都成了大家的意见。作为会议的组织者,于伦,可以轻松地释放责任的压力。
可是最近,于伦发现气氛有点变了。孔如之一直在强调责任问题,主持这类技术会议开始变得艰难起来。在一次讨论模块间解耦方案的时候,他甚至和林峰发生了冲突。
“为什么要用ID做参数?”林峰的声音很尖,于伦听起来感觉格外刺耳。
“模块之间要解耦。我们只传对象ID,这样耦合性最低。”于伦说。
“所有的模块都基于一个统一的领域模型,用对象不是更好?传递对象ID,还需要去访问数据库。就算缓存里有,那也要多一个步骤。另外,对象ID的业务意义不清晰。”林峰说话有点咄咄逼人。
于伦觉得林峰没有看得更远,他说,“以后这些模块都可能单独包装销售,它们都有自己的数据模型。你传过去的对象,可能在另一个模块中没有定义。”
“有ID就说明有这个对象。”
于伦想了想,说道,“两个模块中的对象是不一样的。比方说,在理赔模块中,理赔相关的对象很复杂,在其他模块中,可能只用到理赔对象中很小一部分信息,所以会有一个轻量的理赔对象。”
“也就是说,不是使用统一的领域模型?”林峰感到有点困惑了。
于伦看着林峰,缓慢而坚定地点了点头。
“这样会有问题的,你能负责吗?”林峰大声说。
于伦感到林峰的目光中带着挑衅的味道。自从林峰担任助理架构师以后,于伦就发现他变了,变得爱挑刺,爱找茬,而且自以为是。想当初,林峰刚进公司的时候,是自己手把手带他上路。于伦感到一股无名火窜了上来。
“我负责。”他高声说。
林峰自己也觉得自己发生了很大的变化,这不是他主动追求的结果。自从担任助理架构师以后,他感觉自己的地位在发生变化。比方说,同事们对他的意见更尊重了,也更爱找他请教问题了。
发生在别人身上的事总是很好理解,发生在自己身上的事却总是有点奇妙。
林峰已经有点醉了。A9包厢里灯光幽暗,音乐很吵。一箱啤酒和两瓶黑方下肚,同来的六个兄弟已经完全放开了。
“快快快,帮我点那首上翠花。”李小兵冲着点歌的小妹直嚷嚷,其他几个人哄笑起来。有人高声喊,“小妹,别听他的。你慢慢来,再急也要先走前奏的。”
高声喊的那个人是个二十六、七岁的小伙子。他名叫成实,中等身材,很胖,戴一副黑框眼镜。
“成哥,你,等会去和小妹走前奏吧,我,已经急了,等不及了。”李小兵贼贼地说,“话筒都被我抓热了,快快快。”
“一看就知道没喝够,话都说不清,喂,小心把话筒喷了。小妹,再来一箱啤酒。哈哈哈。”成实大笑道。
成实真的很开心。他最近偷偷在外面找到了一份待遇丰厚的工作,新公司同意他两个月以后再去上班。他现在就像躺在玻璃房里看暴雨,心里别提那个爽。不过,他还没有和同事们提起这件事。
“林哥,不痛快?怎么不去点歌?”成实提着一瓶啤酒,一屁股坐到林峰的身边。
“没事。我五音不全,你们点。”林峰揉了揉太阳穴,没精打采地说。
林峰在成实眼里算是一个高手。他每天基本上都是靠着问林峰干活的。成实和林峰碰了碰酒瓶,喝了一大口。
“你觉得Ralph这个人怎么样?”成实突然问道。
“还可以吧。我就是觉得他对创新不太感兴趣。”两天前,林峰曾经向孔如之提过一个建议,让他自己来写一个框架,解决Hibernate的性能问题。但是被孔如之拒绝了。林峰觉得自己的能力没法完全施展开,这让他很郁闷。
“怎么回事?”成实对这个话题很感兴趣,或者说,他对关于孔如之的话题都很感兴趣。他的心里其实有那么一点点的小矛盾。自从孔如之开始领导项目之后,AD的加班很少了,大家做事都有了方向感。这种感觉很微妙,可是影响很大。成实很清楚,以前经常加班,往往是因为在解决方案上的摇摆不定,导致一件事情要返工几次,这就像市政部门成年累月在同一条马路上折腾一样。现在,方案保持稳定了,无用功少了,工作自然也轻松了。成实的技术不行,可是在这种事情上很敏感。有时候他想,如果工作轻松一点,有更多时间出去泡马子,每个月少拿2000块钱也值得,再说,跟着牛人多学点,将来还有机会赚回来。
“我想做个框架。分三层,最下面一层是VO,中间一层是BVO,最上面一层是BO。调用的人和BO和BVO打交道。VO是透明的。”林峰头有点晕,可是谈起技术来还算清楚,“业务关系和逻辑都放在BO里面,BVO会根据业务需要暴露一些VO的属性。这么做,就不会把VO直接开放给开发人员了。”
“想法不错啊。”成实赞叹地说,其实他什么也没听懂,“后来呢?”
“Ralph说,你考虑过缓存机制了吗?考虑过分布计算场景了吗?”林峰不服气地说,“是的,当时我是没想过这个问题,可是这个问题很简单,加个Context,用个Map就解决了。Hibernate也是保存在Map里的。结果你猜他说什么?”
“说什么?”成实很想知道。
“他说,我只要最简单的方案,只用最成熟的技术。”林峰一口气喝完瓶中酒,说道,“你说,要这么说,还要创新干嘛?”
成实茫然地看着林峰,附和着说,“就是,那他也太保守了。来,再喝一口。”
一帮人闹到凌晨1点才散了。