作为技术人员,总想采用最合适的技术将事情做的完美。
作为客户,总想花费最少的钱,忍耐最少的等待去将事情做的恰到好处。
视角的不同必然产生矛盾,而往往胜利的是客户,由此产生的代价由客户和技术人员共同承担。
本项目是一个金融项目,基本上要求一周7天每天24小时不停,既要保证普通客户的交易的顺利进行,也要保证对银行交易的顺利进行。系统一天的负载还是比较均衡的,同时也是比较高的,需要一直从银行接收外汇牌价,同时要把这些价格经过加工发送给PC画面。
项目所采用的技术语言是这样的,PC用的画面使用AJAX,手机画面使用PHP,连接部分使用Java(RMI),这些都没太大问题。问题在核心业务处理部分。客户现有一个VB做的处理系统,客户的想法是核心业务部分不做重新开发经过简单接口修改之后直接使用。我们讨论觉得Java和VB之间的通信实现起来虽然可能,但是VB不适合做这种高负载系统的核心业务处理,不如用Java重新写,同时我们也预想到了以后可能会发生内存,线程处理等一系列问题。(非常不幸,这个预想后来成了现实)
但是,经过项目负责人和客户在一起讨论之后,决定使用客户的方案。理由很简单,成本控制。在客户可以承受的成本限度内,这个方案是唯一可行的。
我们也曾经把提高系统可用性的期望放在服务器架构的加强上。可惜,成本决定一切。这样的一个金融项目不采用集群来保证系统的可用性是我一直到现在都耿耿于怀的。
之后出现的一些问题都让我很后悔当初没有坚持让客户再稍微付出一点成本,即使再增加一台服务器也会让项目有很大改观。
这件事情给我的教训是一定要有勇气去跟客户进行项目上的讨论甚至是争论。最重要的是要用客户所能理解的语言将采用某种技术的利弊阐述清楚。同时要弄清楚客户最关心的是什么,将自己的视角首先和客户的视角调整到一致,然后继续延伸,在相同的视角下继续按照自己的想法去进行。
描述的比较抽象,简单说来就是一要站在客户立场考虑问题,二是要学会在客户的利益和技术架构之间保持平衡。
posted on 2007-10-05 17:33
KnowNothing 阅读(1423)
评论(5) 编辑 收藏