12306是一个很糟的网站,反应速度慢,错误率高,安全性差。随着它的代码被公开在网络上,关于这个网站是《程序员低级错误大全》的调侃随即出现。这里且不讨论这个网站到底有多么糟糕,也无意说它能够赢得招标这个事实背后是不是有什么别的问题。
我们下面讲个故事,和12306的故事类似,我们从里面可以看出一些问题:
国内某大能源集团曾有一个1.5亿的企业信息化方案,用IBM 90年代陈旧系统框架。投资中60%被硬件赚走,大部分是IBM等公司的服务器。技术授权又占20%,还有其它软件有10%-15%。产品效果类似12306,不过因为该集团内部访问流量没有12306这么夸张,所以也就捏着鼻子用了。这么一个不算复杂的应用,居然用70名开发人员,足足干了快两年。算下来平均每个员工的收入也就每年5万块钱。
这样的开发状况,是国内大型企业内部信息化方案实施的一个普遍情况。
考虑到12306售票系统涉及到比上面提到的信息化项目复杂得多的软硬件应用,要服务的人群更加庞大等等因素,金额达到3.3亿,按照国内业界的话来说:不是多了,而是少了。其中已经没有养活一只“硕鼠”的余地。
开发上面所说项目的公司,管理、策划、客户源都是清华出来的。这些人非常喜欢用IBM那些90年代的架构做东西,而IBM从那时到现在实际已经没有新的软件做出来。其中7成的钱IBM等公司赚走,实施公司拿一点人工费。
这里就要提到,IBM和微软常年与中国的许多重点大学进行“合作”,向这些大学支付大笔资金,让他们只教自己的软件框架。而大学为了提高“就业率”,也很高兴推荐自己的优秀学生去这些大公司。而在国外的大学,一般是不教微软的框架的。主要教学内容是数理逻辑和编程逻辑。这样的学生可以自行学习任何软件框架,这是国内的大学生目前所欠缺的。
近段时间“中国的超级工程”电视片很火,如果我们看一下12306的相关数据,就会发现这个项目,本应成为又一个让中国人自豪的“超级工程”的。
据网友统计,截至1月5日,互联网权威流量排名机构Alexa显示,元旦一周,12306网站的“一周平均排名”为339,日均IP为194万。而国内航空网络售票网站“travelsky.com”的“一周平均排名”为11340,日均IP为8万多。相比之下,火车票的需求为机票的25倍左右。
和普通的电子商务网站相比,12306的另一个关键的设计难题还在于其访问高峰是在每天固定时间投放客票后的极短的时间内爆发式增长的,对于网络流量提出了严峻的考验。
把这样一个系统做好,无疑需要强大的工程能力,做出一个软硬件方面都达到世界级水平的网站设计的。
然而最终12306网站却以现在的形象出现。
我们暂不考虑传闻中的高层人事变动带来的影响,从技术的角度说,到底出了什么问题?
如果我们用建筑来打比方的话,铁道部掏了3.3亿,说他们要造一个容纳全国乘客同时看比赛的运动场。合理的选择是造一个“鸟巢”,主体用钢结构,内部设计按照21世纪的标准确保观众有序入场退场,要设计厕所和服务设施等等。然而承建的公司却是一家小施工队,他们只有很少的技术人员,而且缺乏经验。由于不会用先进的工程机械,招了一大群刚刚进城打工的农民来当力工,然后拿出一张上世纪90年代的河北廊坊体育场的图纸。把主体结构改成木制,同时把规模放大十倍。经过漫长的施工,他们终于完成了一个摇摇欲坠、丑陋又巨大建筑物。最终这个没有经过测试的体育场在大批观众入场后轰然崩塌。
类似的情况,在国内的网络和软件领域屡见不鲜。
同样的情况也曾出现在高考查分网站上。国内的银行网站至今不能支持非windows操作系统电脑的网上银行业务。它们的投资,大多也不比12306少。
有人要开始质疑纪检监察部门不作为。然而在软件行业内,却对这种情况觉得“很正常”。
原因是什么?
一个让人很难相信的数字,在中国进行做网络开发,达到与国外同类软件相似性能,需要10倍的人力成本。中国程序员的收入明明才和普通产业工人差不多,为什么会出现这个10倍的成本呢?
软件业内人士指出,首先在于技术结构落后。
两个美国的周工资5000美元的程序员能够在2天内完成的工作,到了国内就需要40个拿4000人民币月工资的程序员干一个月,从生产效率上说,相当于人家开着铲车,而我们还在挥舞铲子。总成本合计,美国人需要1万3千元人民币,中国程序员总共拿了16万元人民币。从成本上来说,达到同样的效果,人力成本国内是国外的10倍还多。
国内的软件行业的通行标准相当于美国的90年代水平,以微软,IBM等公司的框架为基础进行开发,这就要向这些大公司缴纳高额的费用来获得他们的授权和技术支持。这些10多年前的软件代码执行效率以今天眼光来看非常低下,并且非常复杂,也只有这些大公司自己玩的明白,国内公司不可能掌握它们的核心技术。
这就是说,国内的软件业实际上是用上世纪的简易房的图纸修修补补来设计今天的摩天大厦的,而且它们多数还不掌握建筑学的基本知识,所以出现任何纰漏都不奇怪。
导致国内软件公司现状的原因是国内的开发者本身水平总体较低,大部分国内软件公司的开发者都是俗称“码农”的一批人,他们多只学过大公司软件框架的知识和一些电脑语言基础,由于没有学过数学算法逻辑和编程逻辑基础,所以学习新软件的能力很差。国际上,合格的程序员80%的知识和能力是依靠自学的。
我们还是用形象的语言来解释下这种情况。
国际标准的程序工程师应该是会自己炒菜的厨师,然后通过在饭店里自己掌勺逐渐提高水平,最后成为能独当一面的主厨,而国内的“码农”仅仅是简单的重复劳动,就相当于麦当劳里打工的学生,工作很辛苦,薪水很低,但是永远学不会如何炒菜。
一个更不合理的现象出现在那些被认为是“精英”阶层的名牌大学软件工程的硕士,博士们,他们中很多人都在大学中微软IBM等大公司组织的招聘会上被选中。尽管给他们的工资不低,但是他们实际承担的往往只是软件测试和外包程序开发等流水线工作。这类低级的工作和还不错的收入很快就会消磨掉这些精英的进取心和独立开发能力。
这就导致中国的软件行业人力资源的“金字塔”是倒置的。
顶尖的精英人才在外国大公司里从事应该由大量的低端人才从事的流水线作业,而设计工作交给了那些没有能力做好设计的“技术工人”。为了完成开发工作,软件公司往往用大量的“码农”采用人海战术。
这就是国内软件产业充斥缺乏开发能力,试图依靠数量庞大的非熟练工人取代工程师和技术人员的“山寨”软件公司的原因。
那么这就引出我们必须要问的下一个问题。
我们知道,一个正常的市场上,这种无法提供合格产品的公司,或者开发成本十倍于正常水平的畸形公司根本就不应该能够生存。但在国内市场上他们继续生存着,尽管并不滋润。
原因很简单,中国的软件市场,不正常。
众所周为了国家安全的原因,我国对国外的很多软件封闭了网络应用。于是,那些竞争力强大的国外“大鳄”无法进军国内。一些垄断大公司在国外早已因为21世纪初开始兴起的免费开源软件的风潮退出了商用软件市场,但它们却可以在国内培养一批“徒子徒孙”,他们只会使用这些垄断公司的的软件框架,垄断公司因此可以在国内大量吸金。正如我们前面第一个例子中提到的,在世界范围内已经不做软件的IBM公司,依然能在中国卖出他们90年代的老软件。顺便,由于老软件的执行效率低,他们又可以卖出高价值的服务器。再加上相关的授权,许可证,最终导致全系统成本加在一起要比国外的类似功能的商用软件高出十几倍甚至几十倍。
言而总之,外国垄断公司,利用中国的封闭市场环境,通过资助中国的教育机构,让中国的普通开发者只是一群效率低下,只会使用这些垄断公司提供的模块化开发工具的“码农”;把高端人才用高薪诱骗到自己旗下,让他们从事扼杀创造力的简单工作。中国的各路软件公司,犹如民国初年被各路帝国主义所控制的军阀们一样在中国这块战场上混战不已。而真正捞到大钱的,是这些外国垄断公司。所有中国人在这场阴谋中,都是输家。
在这种条件下,我们就可以理解为何12306这类的网站会屡屡出现了,因为国内的软件开发市场,基本上只有这类公司可以选择。
国内的银行业早年设立网络银行的时候多用微软的开发语言,当时中国的软件环境还是盗版为主,所以看起来似乎这个语言没有成本。并且有“微软崇拜症”的中国软件公司最为熟悉。但是这为将来有一天微软的“收网”留下了隐患。事实上微软目前还忙着在中国进行个人电脑装机市场的正版化环境营造。谁也不知道他们什么时候会开始转向政府金融行业。银行并非不知道这个问题。而且,这个古老的框架的安全性方面也是有隐患的。由于银行业的特殊性,他们不能停机,目前只能捏着鼻子继续。
国内目前已经有少部分网站开始努力摆脱大公司的束缚,比如著名的电商京东网。他们在去年遭遇“购买死循环”错误事件之前用的也是微软的开发语言,然而发生错误后,在京东自己无法解决的情况下,为了保住京东,微软先后派出四批工程师,依然无法完全解决错误。最后京东终于决定全面转向开源软件。但没有完全走出困局,因为它还在上面提到的这种模式中挣扎,不过是从虎口到狼窟而已。也就是说模式不转变,不能解决问题,即便京东雇佣了数以千计的开发人员也无法破局。
而一开始就采用国际开发标准的淘宝体系,不但从没有遇到国这方面的困难,还能向软件界反过来免费提供他们自己开发的开源软件框架。就更不要说国际电商龙头的亚马逊因为太过重视技术开发,以至于应对并发等问题能力过于优秀,反而富余大量服务器资源,反而又成就了其成为全球最大的云服务提供商的例子了。这是路线正确的结果。
恶劣的是,中国的市场由于封闭而又“富营养化”,就好像发生赤潮的海区,无数的低级生物的繁殖反而导致鱼类因为水中缺氧而全部被闷死。
漂亮整洁的办公楼和穿戴整齐的员工不能代表软件公司的技术先进,在光鲜的外表下,国内的软件公司大多是吱嘎作响到处漏油的中古手工工场。而国外的大公司还在拿他们过时的技术推销,尤其是推销到教育体系中。产生了恶性循环。国外公司希望国内处于封闭落后,消耗大型硬件资源的现状中。
在这种状况下,中国软件业要终结目前这种恶性循环的怪圈,有两种方向。
一是产业继续这样下去,但这种落后的技术状态迟早总要有玩不下去的时候的。等比12306更加恶劣的情况出现,就是开发成本达到连国内财大气粗如民航,铁路,石油,电商公司都承受不了,同时用户根本无法正常使用的情况迟早要出现。那时,中国的软件业将迎来一次全面的崩溃,随之而来的将是全面洗牌。这时候,那些隐身幕后的国外垄断公司将会走上前台,开始进行收割,向那些陶醉于“廉价”盗版软件的中国企业和机构挥舞起收割的镰刀。同时国内软件业天下大乱。不是像国外21世纪初开源软件崛起一样出现一次革命性的进步,就是如同今日的国足一样彻底沉沦,那时也许我们的政府也不得不向国外软件厂商开放国门允许他们进入国内市场。那时,缺乏掌握新技术能力的国内软件公司将会在这些无法抵抗的对手面前一败涂地,国内“码农”将会和90年代下岗工人一样集体失业。
当然,还有一种可能的未来,就是国内出现一批真正独立的软件企业,依托一些有远见,懂技术的软件工程师,好像20世纪20,30年代从江西到延安的火种一样,在中国大地上,最终燃起软件行业烧尽今日不合理秩序的熊熊烈火。