好久不在这里写文章了。先祝各位六一儿童节快乐!
我是一个从野路子上一路走来的程序员,现在主要用.net做方案。选.net不选jave并没有什么特别的原因,只不过是因为我自己从C开始学起,一直学到C#, 很熟悉这个平台罢了,从业15年了,C#是最方便的一个语言,而VS是最方便的一个工具,因此就很自然地用C#来解决我的一切问题,而这个工具也没有让我失望过,基本上还没有遇上过解决不了的问题。
但是在现在的这家公司里,我却发现了一个很明显的选择倾向,就是90%的项目,都会选择J2ee的平台,.net平台基本上没有什么机会被引入。更有一段时间,公司里甚至规定了:禁止使用.net技术!
这是一家金融公司,一直以来都是以甲方的身份出现的,不知道为什么居然会出现这样的规定,甲方应该关心需求,不知道为什么还会做技术平台的这种要求,而且用上了“禁止使用”这样的字眼,无论如何,都是一种很不客观的做法。
前几年我还有些单纯,看问题总是从技术角度出发。这个规定让我相当不满,于是我做了一些测试和调查,证明了几件事情:
1. 无论在小负载和大负载的情况下,.net都比j2ee的效率要高。
2. 由于第一条,对于相同的应用程序 .net比j2ee的所需要的硬件投入小得多。
3. .net与j2ee相比,前者学习的成本低得多,开发用的人力成本也更低。开发周期也短得多。
4. 收费的.net与“免费的”j2ee相比,产品许可证成本要低廉得多。这是花了我最多时间来扭转人们看法的一条。
5. 以公司里的大多数项目的规模来看,.net比j2ee更合适于我们公司的情况——你真得不必为每一个项目都购买oracle和weblogic,大多数系统每天只有几个用户,登录不到1个小时。
我拿着这些得到的事实,去找一些参与了此规定制定工作的人理论,在讨论过程中,我又发现了以下几个事实:
1. 这些人没有一个人熟悉.net平台。
2. 这些人中,绝大多数人也不熟悉j2ee平台。
3. 这些人懂具体技术的人也不多,但有一些高层,是IBM的忠实信仰者。
大型企业的决策者们的心理是这样的——我们金融公司基本上资金充足,明白吗?我们不需要节省费用,上市之后,有几十亿的定向募集的资金要用于IT建设,这笔钱必要花出去的。如果不花干花净,投资人是不答应的。因此最小的项目,也常有几百万的预算,这其中一半是开发费用和数据库、中间件等服务器产品费用,另一半是几台IBM的小型机硬件(这也是被认死了的东西),用于支持每天个位数的访问量。
如果项目太省钱,是没有办法操作的。
既然钱不是问题,那么我们公司在项目投入方面的心理诉求是什么?是做一个“高档的”项目,一个标杆项目!谁能抓到这个点,谁就能得到项目。
IBM的营销人员非常强大。他们向人们暗示:只有j2ee才是“高档”的,而微软的平台是“小孩子玩的”东西。后来,我有机会参加一些项目的工作,于是亲眼看到IBM的营销能力在公司里造成的影响:如果在项目规划的会议上有人提出是否考虑一下MS的平台,他们会通过轻蔑的笑容让提议者无地自容。请注意,技术决策者基本上都是一些对技术一知半解,或是完全不了解的人,人都有下意识,都有虚荣心,不愿意让人认为自己在技术上很低档,没有见识,于是一个个就很羞愧地住了口。有些情况下,即使一个心存怀疑的人,也会自动加入鄙视MS的行列,与之划清界限。
另一方面,MS却一直不知道为什么自己总是在营销上失败,他们的营销人员很单纯地向我们说明,.net平台的优越的性能、便宜的开发成本、低廉的产品费用……,但是他们不知道我们的心理诉求,他们所讲的一切,都是在证明MS的东西是个“玩具”,“低档平台”,他们在背道而驰,最后的失败也是当然的了。
这是就是我的第一层认识。