149. 来自地狱的项目 | 软件那些事儿

这篇文章之所以叫这个名字,是因为我这一期节目就是来自一篇国外相对来说比较出名的文章,你可以在Google上输入英文project from hell,就可以搜到这篇文章,我觉得这篇文章非常的丧,我很喜欢,这篇文章已经至少10年了,也是我非常喜欢的一篇文章。

大家在Google上搜这篇文章的时候,这篇文章是发在一个叫wordpress的网站上。在大概15年前,那个时候刚刚开始流行写文章,就是在网上写自己的东西。像写文章一样,现在写这个的人越来越少了,因为大家都开始发表情包了,连字都不用打。在发表情包流行之前,替代写博客的是写微博,因为写博客这事并不是很好写的,毕竟你又不是写诗,一篇博客至少得300-500字吧,这对很多人还是挺难的,后来这个微博就流行了,100来个字,或者一张照片就OK了,这样门槛就降低了很多。

其实,博客刚刚流行起来的时候,很多人都来写博客,我当时也写了一些,但是,最后都写不下去了。在当时很多人写博客的时候,一定会有一部分人特别的想与众不同,当时就有一些人会说,写博客这个东西太low了,毕竟你写博客不如写书好,所以,当时有一些能写书的人会比较鄙视写博客的人,后来写博客的一些人会觉得写140字的微博不行,没啥思维深度。当时在weibo刚兴起,有一部分玩twitter的人就会写文章分析这个twitter比weibo高级很多,反正是有个鄙视链吧,从信息流,从各种各样的关系来分析,一本正经的胡扯。当然了,现在这些人要么消声匿迹了,要么转战公众号或者新浪微博了。想来也是比较搞笑的。

其实这也是人不自信的表现之一,如何表现自己的自信呢?最简单的方法就是鄙视别人。比如我是80年代,因为独生子比较多,那时候我们被称为被毁了的一代。然后认为看小说是不务正业,后来认为看电视是不务正业,再后来以为玩游戏是不务正业,再后来你要是玩电脑上网就是不务正业,得电一电。然后认为读书写书还不错,比写博客强,然后再认为写博客比写微博强,然后再认为写微博比发表情包强,现在认为发表情包也还可以了,比发小黄图强。所以,我有个群,我都是在群里发小黄图,身体力行的给热心的听众示范,如果一个人发了20年小黄图,大概是什么样子,大概就是我这个样子,希望他们能够悬崖勒马。做一个对社会有用的人。

再回来说说博客这个事情,你写文章,总不能自己写整个发布的系统吧,所以,就有人做了一个叫wordpress的系统,专门给人发文章。这个有两个网站,一个叫wordpress.com,一个叫wordpress.org。先说后一个,wordpress.org,这个网站上有wordpress这个软件的源代码,你可以下载下来自己搭建自己的博客系统。如果你不想搭建自己的博客系统,可以用另外一个网站,叫wordpress.com,这个网站可以提供免费的或者收费的项目,这样你可以不用自己搭建网站了。世界上有两个wordpress网站,一个叫wordpress.org,已经被封了;还有个wordpress.com网站,也被封了。让我想起了鲁迅。这个wordpress是用php写的,php占了网站项目的一多半,所以说php是世界上最好的语言,只是阐述了一下事实。他就是最好的语言:)

管怎么说了,这篇来自地狱的项目一文就是在wordpress.com这个网站上,如果你搜不到,是非常正常的。更厉害的是,这个网站上有很多类似的文章,在这个网址上, projectfailures.wordpress.com 上,有一些失败的项目。我不知道是什么原因,可能外国人对待失败非常的宽容,在中国只有成功者的声音,比如什么历史是胜利者书写的,成者为王,败者为寇。这个网站上,都是一些怎么失败的例子,好像国内没有听说有这种网站,专门收集失败的项目。比如如何才能让编程挂了,如何让个好项目黄了,我觉得这个挺有意思的。这个不像是国内的一些分享,在我年轻的时候,我比较热衷于去听大牛去分享经验,比如参加什么什么分享会,然后,去听了几次以后,发现都是去听广告,就很少参加了,现在我不知道是什么情况了。好久不去听了,因为我已经放弃了,混吃等死算了,不去学习了。

我所说的这个项目,本身没有什么可以讲的,是一个法国的公司的项目,给政府做的。有兴趣的自己去看看,我觉得非常能说明一些情况。

这个项目开始的时候是打算做个2年多就结束了,现在已经出色的完成了任务,比2年多了10年,本来是预期2年的,搞了12年还是更糟糕了。更重要的是这个项目用C++写的,12年的代码,C++又复杂,最后搞了600多万行代码,还不能正常运行,谁都搞不定这些代码。我来还原一下这个项目,非常的有意义。国家做事情,都是这样,不信可以参考有些国家的政务网,做的非常非常的业余,钱没少花,做的跟屎一样。

这个项目先是搞到了政府一笔经费,就搞了个项目,用个2-3年做个事,把这些钱得花了,然后就开始搞项目,招聘。随后就拉了一个团队,然后,这个团队就开始以每三个月左右就要扩大一倍的速度扩张。然后,政府的钱也要以这个速度进来,法国政府么,肯定没有为人民服务的觉悟,就这样往里砸钱。

然后这样进行了多久呢?7年!钱越花越多,员工也是越来越多,最后连做啥项目都没人搞的清楚了,反正有钱拿,就做呗。这个还是花纳税人的钱,你不花他不花,谁花?如果你不靠这个拉动消费,法国人民不答应!然后就砸了7年钱,终于发现,这个大坑,搞到了几乎所有法国的老油条,只拿钱不干活,公司也好,政府也好。怎么说呢,毕竟法国政府是个民选政府,虽然说也是脸皮厚,但是还是要脸的,不能是直接不要脸了。毕竟这玩意还是要向有选票的人说说情况,然后,就把所有的参与项目的程序员都解雇了。在7年的时候,这个项目要从0开始做,不要老油条了,要没有编程经验的人来做。这也可以说是打烂一个旧社会,创造一个新社会的软件开发版。要注意一点,只解雇了编程人员,并没有解雇管理人员。这个结果最后导致了这样一个状况,一个软件公司,项目经理比程序员多两倍,也就是说,两个经理才能分到一个程序员干活!

结果怎么样呢?大家也可想而知了,为了能少给干活的一点钱,就雇佣工龄比较少的人。可能在法国,超过三个月,就算是有工作经验了。这样,公司就雇佣了大量只有三个月工作经验的程序员。法国政府也真是自信,三个月能干啥?要知道,在一些效率不怎么高的政府,3个月可能连工位都没有分配下来呢!

然后从第7年又干了3年,我的天!这个项目又要黄了,干活的越来越少,经理越来越多,已经失控了,但是,所谓百足之虫,死而不僵,反正有政府输血,别的事做不了,活下去还是没问题的,这个项目又继续做呢,在第12年年头的时候,这个哥们受不了了,写了这篇文章来吐槽!当然了,我还是挺佩服这个哥们的。白白拿了这么多钱。

这个项目最后搞成了什么样子呢?

代码有600万行,用C++写的,总共有5万多个class,因为众所周知的原因,这个C++编译器每家做的都不太一样,因为C++太难了,所以,这个公司锁定了一个过时的编译器,而且还要锁定一个操作系统,这个操作系统是12年前的,所以即使这个项目能编译通过可以布署了,还得找用一个早就过时的操作系统来运行。可能大家觉得这个太荒谬了,其实真的不荒谬,因为我经常给老家一个钢铁厂的亲戚做的事情是,把一台新电脑上,默认操作系统是windows 7或者windows 10的电脑,给换成windows xp,为什么呢?因为这个钢铁厂的发工资系统很先进,只支持windows xp,而且还要插上个U盾,非常的强悍。

这个法国公司还用了好多开源库,也想跨平台的,用了好几个UI库,但是,没有一个UI库还在运行,没有人在维护这些库了,大家都是能用一天算一天。

这个软件还用了数据库,但是,这个数据库公司没能撑到法国政府项目成功的那一天,数据库公司先倒闭了,但是,这个项目又写死在了这个数据库,也只能继续用下去。

每次编译一次需要用48个小时,还是用的32个CPU的电脑,两天两夜编译一次。一般人还买不起这种电脑。而且这么复杂的软件,光用户界面就有40-50个进程同时操作,而且没有用到现在的动态链接,因此运行库要先加载起来,光运行库就有几百M。启动这个软件要用时15分钟,但是启动起来你说能用也就算了,但是,平均30秒到30分钟一定会死掉一次,只好再花15分钟再启动一次,再用30秒到15分钟。

这个作者说他曾经debug过两个bug,每一个是右键不管用,不弹出菜单。后来他花了好长时间来debug,发现这根本不是bug,就是慢,你只要点了右键以后,不要多点,只点一下,然后等45分钟,这个菜单就能弹出来,如果你点了两下,就要等90分钟了。

他还要修复一个bug就是从光盘里读数据出来,但是他查看了源代码后,发现这个功能没问题,已经有个修复了,还打了个already solved的标,只是读700M的数据只需要做这等7天就可以了,要有点耐心!不要急!

这个项目好几年后才开始使用版本管理系统,但是,没几个能管理这么复杂的软件项目,于是,从这个版本管理系统换到另一个系统,挺搞笑的。最后成功的把所有的代码变动记录给搞丢了。那为啥不用传统的版本管理系统呢?因为管理层要掌控一切,程序员没有权限查看代码,如果程序员想看代码,要先发很多邮件申请,只有管理层同意了,程序员才能查看,如果要修改代码,麻烦是查看代码的10倍。

其实在看这篇文章的时候,我想到的是两个公司,一个是Nokia,一个是育碧。只说说Nokia吧,在Apple之前,Nokia是如日中天的。当年我还是学生,我试图写点软件赚点点钱,比如你装了我的软件,我给你发点小黄图什么的,我当年也没啥创意,一想到要改变世界,就想如何让人更方便的看小黄图。现在也是这样。然后,我们三个就真的开发了一个小软件,赚回了Nokia的授权费,我非常讨厌Nokia的开发,当时S40和S60是完全不一样的两个软件,我当时配置编程的环境,三个人到处找资料,足足用了两周,才写出一个hello world。还有签名系统,这个要提出书面申请,要签字,给钱,然后用EMS快递到NOKIA中国分公司,NOKIA的大爷再抽个心情好的时候,给你批准,你就能写Hello World让他运行到你手机上了。就这样,这种公司不死谁死?

刘延栋 wechat
欢迎扫一下关注我的公众号:软件那些事儿
欢迎收听我的电台,你的支持将鼓励我继续前进