五千年(敝帚自珍)

主题:【原创】好吧,给一个铁道部订票系统的正确答案 -- 布老虎

共:💬185 🌺732 🌵9
全看分页树展 · 主题 跟帖
家园 我老集中批判一下

前段时间工作实在太忙,只能抽空零零星星地反驳。铁手说少骂人,以理服人。今天周末,我老作为国内青年码工的思想导师,对当前的一些现象深恶痛绝。我觉得这些丑恶现象集中体现在了红黑客的帖子里,好吧,我老以理服人,特批判如下。

首先要提的,就是技术水平的低下。 我估计此人是.net程序员。

作为一个码工,居然能说出 "事实上,根据我在开源世界十多年的经验,开源产品虽然创意足够多,但真正能够保证质量,懂得业务的产品几乎没有。"这样的话,这一听就是从来没有干过正经开发的,估计此人平时工作就是堆业务逻辑。软件开发(懂这个词吗?)和做应用写业务逻辑程序完全不一样。铁道部的问题,是需要进行软件开发,而不仅仅是应用开发。你明白这里面的区别?

别的不说,你知道不知道Java就是开源软件?你平常写程序应该不是用的Java,估计应该用的是.net之类拉拉控件的弱智玩意。你如果用java,不可能不用Eclipse,不可能不经常下载升级,不可能不知道Eclipse就是开源软件,基本上是Java开发的唯一工具(netbeans不提了)。你对开源毫无概念,所以应该是做.net的。

开源软件对于闭源软件的优势,是无可比拟的。你TM到底知道不知道开源软件的优势在哪里?为什么那么多的公司偏好开源软件而不是闭源软件?(以下培训,我老就不收费了)因为开源软件免费,有无数的用户使用,错误发现快,纠错快。公司里的高手还可以Code Review,跟踪JIRA,甚至提交patch和feature来影响软件方向,这和自己开发没区别,省了很多力气。你到底懂不懂?闭源软件,你要是大公司还差不多,小公司的就免谈了。即使像微软这样的大公司,数千码工,做出来的东西(IE为例)还是跟狗屎一样,没法和FF/Chrome比。Java如果不是开源,有那么多的高手在JCP,根本无法取得现在的地位。就这样,还闹出来很多笑话,比如EJB之类。

不要神神秘秘地拿什么Java先进技术没法解决高峰响应问题来举例子,这明显是隔行如隔山的提法,你以为这说明了.net比java厉害?5分钟能发现的问题你们拖了两年多没法搞清楚,这就是技术低下的证明,并不能证明.net比java性能好。Java在大数据上的应有是微软无法相比的。

.net程序员普遍存在的问题,就是微软把很多底层的东西掩盖住了,结果对系统理解的水平差很多,把问题简单化到了极点。有一个猪一样的队友(或者干脆就是马甲),说“免费方案中,红黑客会选开源中最好的PostgreSQL”。你就那么肯定? 先不说这哥们根本不懂开源软件是什么意思, 你以为铁道部问题的解法(或者“方案”,就是简单地数据库存取?你以为就是简单地选哪个数据库的问题,结果全国人民都搞复杂了,就你一针见血?选对了数据库,得永生?选错了,就完蛋?你以为这就是一行程序的问题?

那我TMD写那一大篇干什么?Google搞MapReduce/Spanner是吃饱了撑的?Amazon做Dynamo是为了好玩?java的解法是绕过数据库解决流量瓶颈问题,这点你是完全没有办法理解的,因为这需要对transaction(国内叫事物,应该翻译成交易)有深刻的理解,知道很多情况下可以放松ACID的限制,不会出现问题。你的问题就是不知道ACID到底要达到什么目的,不理解ACID也可以放宽,只知道简单地机械地套公式。存钱取票?好,那就数据库,才能保证ACID。至于为什么一定要ACID,不知道,洋大人说的,那还有错?

我老指出了message queue的方法,你终于理解了这个challenge,赶紧补上一个什么spooling。我不知道你从哪里google来的什么spooling,从来没听说过,是不是又是microsoft .net的shit?

其二,技术水平的低下,只会简单机械地套公式结论,导致了不可知论,和因此引致的恐惧,自卑,讲政治不讲技术。

你的主要论点是政治责任,只要用了开源,出了事就有责任。这几句稀里糊涂的话,我老听了,也是稀里糊涂。这软件的东西,我老给各位小的们介绍一下,是deterministic的,知道这个词吗?就是确定性。出了事?具体说说,这个系统会出什么事?啥时候出事?你连这个都没搞明白,你敢把系统放上线?尼玛人吓人,吓死人。

任何一个,注意,任何一个,有一点SLDC经验的程序员,都可以随时指出这个问题。最基本的常识步骤,是这样的大系统,应该有QA和release的计划,很简单地举个例子,比如首先可以只卖郑州始发,观察系统性能,然后加上北京始发,然后加上广州始发,然后一步一步推广到全国。哪里有什么不可预见的事件?哪里来的恐惧感?这恐惧感,完全是愚昧导致的,除此没有别的解释。你提到的那些big bang release的做法,倒是很像铁道部的傻叉们的手笔。老实招了吧,铁道部的那个down机的系统,是不是就是你那一行程序连到数据库干出来的?

我还不明白的一点,就是推给厂商为什么就可以没有责任?这里面的潜台词是不是,你看,洋大人都没有办法解决的问题,我当然也没有办法。这样的说法也能过关?我老真是服了。国内那么多年了,还是那套第三世界国家的自卑思维。美国这里,可没有什么洋大人,Oracle down机了,你一样要负责,怎么可以推到厂商就可以免责?厂商也是你选的吧?你选了一个问题厂商,你可以不用负责?或者这个厂商的系统没用好- 比如只能支持几百个并发,你给老子搞了几十万个并发,你可以没责任?这边trader一句话,老子blow off tons of dollars on techology,你他妈的就得给我保证好。老子不听excuse。

最后,对铁道部业务的错误理解,导致了错误的技术选择。我老看来看去,就是铁路票控计划部门每天把票输进系统,大家抢票,有啥滚过来滚过去的事务难题?你为什么会觉得这是个难题?这么基本的业务流程都能搞错?

我老的结论,就是国内程序员要有自尊心,要研究底层技术和上层系统技术,不能满足只是堆代码。要脱离.net,加入java, 不要有偷懒依赖,天塌下来有高个子挡着的第三世界国家的心理。另外就是微软实在害人不浅。

最后,在你的帖子里隐隐约约,但是反复提到我老的建议价格,也就是2000万美刀,太低。要不,你就是那个铁道部选的供应商?说吧,你报了多少?一个亿美刀?给我老一点回扣,我老就高抬贵手了。

通宝推:墨虎,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河