文章目的一方面是为了把自己的想法和大家交流。也是想劝劝大家,不必太介意技术那点小小的差别,目前大家遇上的项目,大多都没有什么技术困难迫使得你必需要选用什么平台,或是不能选择什么平台。因此,技术平台的选择往俗了说是一个政治问题,往好听了讲,战略问题。战略选择的原则,也在第三层认识”里总结过了只要选择得当,就可以使项目更容易成功—那才是这些人的目标。
一直以来都是以甲方的身份呈现的不知道为什么居然会出现这样的规定,这是一家金融公司。甲方应该关心需求,不知道为什么还会做技术平台的这种要求,而且用上了禁止使用”这样的字眼,无论如何,都是一种很不客观的做法。.net都比j2ee效率要高。1.无论在小负载和大负载的情况下。对于相同的应用顺序 .net比j2ee所需要的硬件投入小得多。2.由于第一条。前者学习的利息低得多,3..net与j2ee相比。开发用的人力利息也更低。开发周期也短得多。产品许可证利息要低廉得多。这是花了最多时间来扭转人们看法的一条。4.收费的.net与“免费的j2ee相比。.net比j2ee更合适于我公司的情况—真得不必为每一个项目都购买oracl和weblog大多数系统每天只有几个用户,5.以公司里的大多数项目的规模来看。登录不到1个小时。
对于大型公司项目平台选择J2EE第一层认识,现在主要用.net做方案。选.net不选jave并没有什么特别的原因,只不过是因为我自己从C开始学起,一直学到C#,一个从野路子上一路走来的顺序员。很熟悉这个平台罢了从业15年了C#最方便的一个语言,而VS最方便的一个工具,因此就很自然地用C#来解决我一切问题,而这个工具也没有让我失望过,基本上还没有遇上过解决不了问题。却发现了一个很明显的选择倾向,但是现在这家公司里。就是90%项目,都会选择J2ee平台,.net平台基本上没有什么机会被引入。更有一段时间,公司里甚至规定了禁止使用.net技术!
1.这些人没有一个人熟悉.net平台。绝大多数人也不熟悉j2ee平台。2.这些人中有一些高层,3.这些人懂具体技术的人也不多。IBM忠实信仰者。明白吗?不需要节省费用,大型企业的决策者们心理是这样的金融公司基本上资金充分。上市之后,有几十亿的定向募集的资金要用于IT建设,这笔钱必要花出去的如果不花干花净,投资人是不答应的因此最小的项目,也常有几百万的预算,这其中一半是开发费用和数据库、中间件等服务器产品费用,另一半是几台IBM小型机硬件(这也是被认死了东西)用于支持每天个位数的访问量。没有方法操作的如果项目太省钱。那么我公司在项目投入方面的心理诉求是什么?做一个“高档的项目,既然钱不是问题。一个标杆项目!谁能抓到这个点,谁就能得到项目。
有机会参与一些项目的工作,IBM营销人员非常强大。向人们暗示:只有j2ee才是高档”而微软的平台是小孩子玩的东西。后来。于是亲眼看到IBM营销能力在公司里造成的影响:如果在项目规划的会议上有人提出是否考虑一下MS平台,会通过轻蔑的笑容让提议者无地自容。请注意,技术决策者基本上都是一些对技术一知半解,或是完全不了解的人,人都有下意识,都有虚荣心,不愿意让人认为自己在技术上很低档,没有见识,于是一个个就很羞愧地住了口。有些情况下,即使一个心存怀疑的人,也会自动加入轻视MS行列,与之划清界限。
这些大厂商的总结能力真不是盖的听了咨询师的课之后,不过说实话。大部分会感觉自己醍醐灌顶,狠不得把自己的所有的系统都推倒了重来!甚至狠不得把自己的业务方式都来个大变革。不过另一方面,这些高瞻远瞩的规划,一般也会与现实社会有很大的距离,要么是客户不接受,要么是监管不接受,要么是现实不接受。无论如何,听听绝对有好处,就当开阔了思路了
选择SOA ,既然远景做不到那么近景能做一些就做一些也是好的首先就要听这些大厂的话。或是SA A S,或是别的什么概念来做这些项目,当然,听IBM说,这些项目的都需要J2ee来支持,而最好的J2ee应用中间件,当然是IBM自己的webspher什么的其实都没所谓.net好还是Java好,无关乎技术。对于厂商来说,这都无非是一件武器,用来对抗微软的武器罢了因为MS真得太令人害怕了需要这么多厂商来一起对抗它
为什么MS令人害怕?因为以下的几个原因:
而IBM一个营销员的公司。MS有实实在技术,MS一个程序员的公司。但是明显在市场头脑方面差人一等,因此总是战略上慢几拍,但是后发的产品很强大。
就是主导技术基本上不到三年就要整个推掉重来一次,2.MS一直不停地研发。相信学MS技术的人都有感觉。比如从adolinq再到现在那个什么Ado.netentitiframework东西。每一代技术都更强大,但是翻新得让人追不上。这种技术创新的能力,十年不变的java阵营很害怕的而且下一代的WPFWCF等平台的高度和技术能力是其他厂商难以达到从操作系统到游戏,3.MS有着令人难以置信的软件产品线。甚至是机器人仿真和开发包!每一个战线上,都有产品(可能是原型级的可以用来对抗全世界厂商。
java联盟必需努力抗击MS,因此。其实对java低效率心知肚明,但是已经选择了这个武器和这个招牌,因此只好做足文章,把数据库、应用服务器全部用java写成—当然可以用。这就够了无论懂不懂技术都能看出来系统慢。那么也没问题的只要几台P590上线,但是效率太低。也就快多了少用户的情况下,技术上也对此准备了解释:j2ee用于对付大批量用户的应用平台。效率上不明显。但是当用户量上升到海量级别时,这个系统的响应曲线一定是平缓的而“.net一类”响应曲线必定是陡峭的这叫做“吞吐量”
为我预算支出找到解释。每个人都满意了至于什么时候我会用上百万并发的吞吐量?也许永远也不会,得到抚慰。不过备着这个能力也好。
实际上的情况如何?有个例子可以参考:公司里有一个系统很关键,用户并不是很多,一度我也很相信这个含义不明的吞吐量”指标。这个系统由IBM规划,orcal实施,运行在一个oraclcluster上,数据库的存储用的HP11000应用服务器用两台单独的590全部资源都划为一个分区来跑。每个月初会有几百人在里面干活,系统要把上千万条数据做转换、抽取和导入(ETL每到这个时候,系统就会慢得几乎不能干活,登录页都需要十几秒才会响应。听说硬件组的人为了加快效率,都把这个数据库的存储移到最快的硬盘条带上了还是很慢。每次登录这个系统,都能感觉到IBM和oracl庞大重量全部压在鼠标上。
认为这个系统的慢一定出现在软件的设计上,这个例子并不是为了证明j2ee很慢。相反。那种级别的慢法,一定是要有数量级上的性能提升才会有用,java与C++相比,也不过是10倍以内的效率之差,不会慢到二十秒出现登录页,再过二十秒才干登录进去。因此,一定是与软件、数据库的设计很有关系,也就是与开发者的水平有关系,只有那样才会导致几百上千倍的效率区别。
用什么技术效率高什么的只是一个建立在完全相等条件下进行比较”这个前提下的一种说法而已,因此。现实中,没有方法忽略具体设计人员的个人水平造成的影响。就算是有严格的数据证明说什么技术比另一个什么技术快,也不能保证“这个项目”就一定会“吞吐量大”其实这就是一个营销手法,遇上巨额费用支出是否合理的问题时,提供自我心理抚慰的理由。
就用这个项目做例子,既然说到这个项目。继续说我第二层认识吧。
这个项目有很大的技术难度,公平地讲。开发的风险很大。一开始是个烫手项目,倒不是因为有政治方面的问题,高层都肯定是下了决心来做的但大家都已经算计过了这个项目的技术难度这么大,有50%可能性是会做烂掉的公司里没有多少人敢接手负责。但是这个项目又必须做,最后就指定一个项目负责人来强迫他来做这个项目。
但都是技术方面的难度,其实这个项目虽然难。最少50%可能性是会很成功的于是负责人就会硬着头皮上马,开始招标什么的然后,各种厂商也都立即拥过来,各种营销手法来来往往的也不用多说了只说这个负责人在最后定标时的心理。
虽然只有50%但这50%对于项目责任人来说就是100%风险。这样重要的项目,前面说了这个项目有一定的风险。负责人也都会是很高层的领导,对政治方面非常敏感,一般情况下是会给自己留足后路的资金不成问题,请厂商不要节省,节省你就输了这个投资的范围之内,如何保证自己的政治风险最小?
就一定是要选择一个最大牌的厂商,选择最高档的技术。最好为了分散政治风险,把几个大厂商都拉进来一起做才好,比方我说的这个项目,数据库用最贵的orcale,很明显。一个cpu授权都在30万人民币。打折?不必了只要给我最好的服务就行!软件的实施请BEA 来做,BEA 连应用服务器都能做,做这个还不是小菜?IBM做咨询与规划,还有硬件当然也是IBM最好的机器给我来两台做热备!
MS却一直不知道为什么自己总是营销上失败,另一方面。营销人员很单纯地向我说明,.net平台的优越的性能、廉价的开发本钱、低廉的产品费用…但是不知道我心理诉求,所讲的一切,都是证明MS东西是个“玩具”低档平台”南辕北辙,最后的失败也是当然的
对于大型公司项目平台选择J2EE第二层认识
还有其他很多操作上的考虑,如前面所述的由于很多人已经被洗过脑。大家都会很自觉地配合IBM营销攻势,而且我也衷心相信:IBM等软件和硬件的支持下,一个个系统步入了高档系统”行列。把.net平台留给了孩子们玩去吧。
IBM以及其他一些高端厂商(Oracle,其实。BEA 等)做承接的项目,大部分的活计是直接再转包给其他国内的小厂商的自己所需要做的基本只限于“规划、咨询、建议、项目管理方法论”等一些又高端又阳春白雪的工作。
这不是加大了技术风险么?这么多大厂商来一起做,有懂技术的说了慢着。谁会听谁的那不是增加了沟通的难度吗?最少也增加了集成的难度呀!这样一来,技术风险从50%成了75%做烂掉的风险加大了
这样的但是一直说的政治风险,说的没错。从技术角度上来看。没说技术风险的事情。这个项目的政治风险是对项目负责人能力评价的影响。如果做成了当然最好,但是还有一半可能性做不成,这种情况下影响就很负面了这就叫“市场定位”对于大型公司项目平台选择J2EE第三层认识
cnblog告诉我一个小时里不能发两次精华。可是写一千来字都花不了一个小时。今天思路比较快一些,刚刚第三篇的发布时。呵呵。
再聊聊我新近观察的一个项目的运作,最后。来分享一下我第三层认识。坚持了这个认识水平有一段时间。当然我也无法左右公司高层的选择,达到第二层关于政治风险的认识水平之后。反正有钱就花吧!只是有些系统自己要用的难用成那样实在不爽,有时候也难免发发牢骚。新近管着一个项目,这个项目也是由IBM指导实施的但听说最初决定这个项目由谁来做时,也是某个领导一番深思之后决定的但那位领导不说什么理由,有一个哥儿们混得挺好。只是思考之后做了这个决定而已。
技术实施的胜利率是很高的按道理不需要什么政治安全。一开始我那哥儿们做方案时,这个项目没有什么大的技术难题。也的确没有选择IBM而是以他评估,选择了资质不错,但是价格是IBM五分之一的一个厂商做为给领导决策的推荐。对于一个项目负责人,因此。决策思想一定是这样的如果选择了一个小厂商,项目做坏了时,就有决策失误的嫌疑了因此一定要选择最好最贵的厂商,这样的话,就是做烂了项目,也可以向领导汇报:您看,选择了最好的产品,最好的硬件最好的服务,最好的软件开发者,这都是业界一级棒的乙方,联手做这事情,但是还是做成这个样子。言下之意就是这不是决策问题,这个项目真得真得太难了换了谁也不行。
最后项目也不会一无是处,当然。对付着还是能用的这就叫成功了但项目做得很差是人人都看得出来的于是这个后着就用上了政治责任就推走了,选择最大牌的厂商是最“政治平安”战略。这就是对这个选择的第二层认识:从政治上讲。于是把自己包装成很高明、很抽象、很HighLevel样子,这就与很多大项目的责任人的心理就切合上了而MS因为后起,就有心理定势,以为自己的技术比他人来得晚,生怕甲方对他技术能力有怀疑,于是总是技术的可用性、本钱的节约性上努力,IBM这些厂商深知这个秘诀。很有南辕北辙的意思。
就是这个项目虽然没有技术风险,有一点我都没有多想。但整体上有一个政治风险。这个系统所要支持的一个业务模式很创新,公司里有很多人出于各种原因,对这个项目比较抵触。项目立项时,这种反弹还没有表示进去,大家估计也都没有反应过来这个项目是做什么。等做到一半时,很多人开始明白过来了回过味来了发现这个项目再做下去,可能会出一些对自己“有利”情况。但如同郭德纲的那句话一样,这个说是有利”其实也没有什么“有利”无非是高层的注意力会有一些转移、政策优惠会有一些转移、资源的倾斜会有一些转移什么的业务上的竞争与冲击还远远说不上。对于很多中国人来讲,只要自己不得益就算是吃了亏了
一会儿停下了一会儿继续了一会儿又被人重新设计目标了反正摇摇欲坠,于是这个项目就受到冲击。挺危险的,这个项目还是挺住了继续!为什么?因为有IBM最后。这个项目自然就延期了项目一延期,当项目因为上述问题出现方向争论、资源争抢时。而且看劲头甲方一帮人还要继续这么乱下去,IBM不干了第一、工程师、咨询师天天白瞎在这里,那工钱是按小时出的流水一样。第二、IBM做的项目,怎么能做烂掉?以后让业界说起来,某某某公司的某某平台是IBM做的做烂了这IBM脸往哪里放?IBM也是个官老爷公司,能力固然是很强的但是内部政治也很复杂,说不定比我更复杂,可丢不起这人。第三,IBM已经在财务计划里把每期工钱的应收预算做好了又延误了不交支票了这可不行!突然之间,于是IBM通过自己临时已经建立的人脉对甲方开展了攻势。上上下下都有IBM营销团队在活动,这个项目的责任人正好得到助力,项目目标很快确定,争论平息,项目继续。
都对这位项目负责人的高明手法佩服无比,后来我聊天时。早看到这个项目未来的风险所在于是就采用了与大厂商绑在一条船上的战略,危机出现时,借力向公司的决策层加压,最后才得险胜。而如果一开始就决定另一个较小的公司来做,出现这种事情时,小乙方只能闭嘴苦等,听人发配的份儿了
但项目终究可以继续,虽然请IBM而支付了5倍的费用。多出的那部分,就算是管理本钱”好了,那么从项目决策都角度上出发,一定要用看起来最HIGH配置,因为技术实施困难导致的政治风险,可以通过不等式的传送性而推脱:乙方如此强大,还没有办法,◆ 如果一个项目有技术风险而无政治风险。因此此项目确实超出我以及现在业界的技术能力”而自己又没有信心独自搞定这些问题的话,◆ 如果一个项目有政治风险而无技术风险。无妨拉上大厂商,接用他力量来在关键时候做推动。
又没有政治风险的情况下,◆ 只在有项目即没有技术风险。才可以考虑采用一家务实进取的小公司来做,快速小成本地用“低端方案”搞定。大家应该明白我说的意思了很多企业里,说到最后。项目技术的选择已经基本上与J2EE和.net技术自身没有什么关系了这两个技术只是两大阵营碰巧选择的武器而已,可能会有一些小小的优劣差别,但是根本不重要。MS和反MS这两大阵营各自采用不不同定位,因而各自占据了市场的两端,谁是高端谁是低端,并不能说明这两种技术自身哪种就“高级”而哪种就是低级”技术。
客观上为了迎合两端不同客户的需要,当然。这两类平台都发明了相应的附加品。比方Java就发明了J2ee这种相当有点阳春白雪的东西,还有很多无比笼统复杂的实现模式,而.net则发明了服务器控件、viewstat和数据绑定这类速成工具。