The worst in the world development: struggling for 12 years, more than 600 million lines of code ...

"Have you seen the worst of the project, how long it stays finished? Six? Year? Today introduced this wonderful project, not only let in too bad a start, but also their teeth more than 12 years, until project leader caught up and thrown into prison did not finish
in the end how bad? data next set of shocking tell you ↓↓

A total of more than 600 million lines of C ++ code

A total of more than 50,000 classes

C ++ syntax compiler version limit, are used by the obsolete, can only be deployed on a (long unmaintained) Operating Systems

Based on CORBA

The adoption of database software from an already bankrupt

Several layers stacked together to form another layer user interface, but none of these layers is maintained by the author

The user interface needs to start running a sub-thread 40-50

32 compiled on the parallel machine 48 hours

Did not use the runtime dynamic linking technology, an executable program, there are several megabytes so much

Start this thing takes about 15 minutes

Crash then typically within 30 seconds to 30 minutes

You have never seen "Hell class" rotten project

2008 years ago, the technology blog projectfailures broke the news, blogger those years I was employed in France, a large technology company, involved in a software project commissioned by a government agency, a consultant positions. There, he witnessed the pinnacle of stupidity and madness, as well as the role they played terrible in the software development work.

Ten years on, this hellish project has been turned out, once again swirling speculation, but even this blog projectfailures out a special review.

In the article, he wrote: "It is not just what the lack of professional competence, this project ruthlessly trampling on human dignity, have been serious enough to sometimes make me feel being in the prison."

Sha Sha Sha? But it is to write the code, in addition to lose hair, can be even life, too it! ? The project ye so terror ah!

Here Insert Picture Description

This project in the end Han situation?

About 1996, a French government agency requested a company to develop a software. Overall this stuff should not be too complicated, but there are some slightly unusual small problems to be solved nothing.

Party paid millions of euros, the planned duration of about 2 to 3 years. So the company recruited a few programmer, began to work. With the funds gradually put in place, which the company began to frantically recruit people, put the team doubling every three months or so.

Here Insert Picture Description

As a result, seven years later, the project would not formed. Fines because delays are up to several thousand euros per day. So management decided to streamline what team to reduce project costs - which would be put to work, people are open, and another recruit some of the novice lacks experience in the development of the software to work.

10 years after the project began, the entire project has been bogged down in the quagmire of disaster, entirely by pure chaos composed. So middle managers project finally decided to hire some people with experience in the development of software engineering, to put this mess dragged out from hell.

It took another two years, this project actually still linger. This company sent to the party by increasing the amount of "design changes" bill, to make up for the delay period generated daily fines. This are the 2008 Hey!

Here Insert Picture Description

This is how the project could be so bad?

01) code quality appalling

In the language of choice, no one would dare say that C ++ is a kind of easy to understand language. In fact, in simple terms, C ++ may be regarded as the worst kind of programming language instead. You know, but it is complicated to even its creator Bjarne Stroustrup I do not say that they are completely mastered the language.

Here Insert Picture Description

Of course, this is not entirely to blame the team. You know, at the time, such as C ++ has endless maze of complexity thinking is a great market. Many young people want to be super programmers have this door sounds super-fast hardware language in droves. In fact, these poor baby who was miserable most of the last C ++ abuse, how beautiful youth, spent all over again in a large section of arcane code spent exploring why this program would have no reason inexplicable collapse on such a thing.

The right mind, then have turned to other languages ​​and other projects go up. You know, life is short ah!

However, it seems that the company did not jump out of this circle, or a C ++ suddenly plunges into the pit.

Even so, no matter what you use a programming language, maintaining a huge code base itself is not an easy thing - and this project's code base is actually more than 600 million lines is huge.

That, more than 600 million lines of code is what the concept?

对比下 Linux 3.13 版内核的代码,在除去内核驱动和架构之外,在 kernel/ 里的源代码也不过就 13 万行左右;另一个例子是著名的编辑器 Emacs,它因为功能太多太庞大,常被人吐槽成“缺乏一个好编辑器的操作系统”,但即使如此,它的总源码规模也不过就是 165 万 9 千多行。

就算你特别厉害,一目十行,你大概也要在显示器前面不眠不休花上7天,才能把全部 600 万行代码全部过一遍。

于是我们可以想见,维护这么大一个代码库,可得逼疯多少程序员呢。看看下面这两个例子,我想,如果我是程序员的话,我也会先疯为敬吧。

Here Insert Picture Description

有一次,项目里的一个程序员被要求修复一个“右键点击界面会导致整个应用卡死”的 bug,经过连续几天的仔细检查,消耗无数耐心之后,他发现,这个右键响应事件其实工作的很正常,只不过这个“正常”过程需要程序花上 45 分钟,从某种巨大的(静态!)内容库中动态生成每一个菜单项,然后才能把菜单给显示出来。如果这时候你不幸又点了一下右键,不好意思,咱再花 45 分钟重新生成一下菜单项吧…

还有一次,用户报了个“从 CD-ROM 载入数据失败”的 bug 。程序员们花了好几个星期来测试分析代码,最后却直接把这个 issue 标成了“已解决”。因为他们发现,从 CD-ROM 载入数据的功能其实是好的,问题在于,读取 700MB 的数据,这程序要花上大概 7 天时间罢了。

还真是特别考验耐心呀。

Here Insert Picture Description

02)版本控制全都是乱来

令人难以置信的是,这团队在完全没有版本控制工具的情况下也搞了好几年,直到团队里一个脑子还算清醒的家伙突然想到该用个版本控制工具来管理代码。刚开始的尝试结果并没有让所有人满意,所以这个团队就换到了另外一个版本控制系统。就这么将就了一两年,然后这个版本控制系统不知怎么又抽了个风,把之前所有改动的记录都丢失了。

Here Insert Picture Description

最后这个项目选定的版本控制工具,是一团带有图形用户界面的祸害,一坨从瑞典直接进口的数字化电子垃圾。他们不得不安排了4个人组成一个“版本控制团队”,全职负责维护这个版本控制系统的正常运行。而这直接导致下列情况的出现:

首次从版本控制系统中检出文件需要向版本控制团队预约,一般来说在一周后才能获得授权。

想修改文件必须经过中层管理人员审批。你需要提前列出需要修改的文件,把列表告诉你的经理,然后打报告给版本控制团队申请,后者大概两天左右会给你反馈。

每次对文件的修改都会触发分支,这就意味着你得自己去合并这个文件收到的所有修改。也许你会觉得,项目里这么多文件,两个人改到同一个文件里的几率应该不大,然而实际上,绝大多数改动都集中在同样的大概100来个文件里,所以每次 merge 都保证让你痛不欲生。

在提交修改(检入文件)之前,你还将经受一次精神折磨:你准备提交的代码将被交给一个所谓的自动 bug 探测程序进行审阅,通过之后还要拿给中层管理人员看过,才能成功提交。不用说,这根本无济于事,bug 还是如雨后春笋一样不停冒尖,比大家除 bug 的速度块多了。更有甚者,对发现的 bug 数量进行分析后发现,这种“缺陷修正”方式带来的新 bug 数量是它所修复的 bug 数量的两倍…

版本管理过于简单。旧的版本是 1,今天的版本是 2,之后的版本是 3。没有人能确切地知道具体发给客户的是哪个版本。

某些时候,管理层会定下一个所谓的官方交付时间,而这个时间安排跟团队中的任何一种工作计划都毫无关系。当预定的交付日期到来的时候,客户实际上收到的是一张带有安装教程的……空白CD,因为已经有好几个星期没有人能构建可执行程序了。于是,客户发现自己收到的是空白光盘,然后正式投诉,然后收到一个旧版的程序光盘作为应付。而客户之所以会发现程序是旧版的,是因为软件的“关于”页上还写着跟去年那个版本一模一样的日期…

Here Insert Picture Description

03)团队组成更是莫名其妙

团队里充斥着这么一大群毫无任何软件工程经验的人,这软件里要是 bug 不多就还真没天理了吧?

还记得上面提到过,管理层曾经决定,要精简一下团队的事吧。

按理说,任何一个脑筋正常的经理都会发现,对于这样一个纯软件工程的项目来说,人员开支必定是最主要的开支。然而,这个发现,并不能阻止管理层把所有稍微有点经验的程序员都开了,换上对工资要求低得多的菜鸟。相对的,所有的经理们的饭碗倒是都捧得牢牢的,一点都没受影响。

看来《21天自学C++》这样的书一定被他们奉为经典了吧。

Here Insert Picture Description

不,你太天真了,还有《3 天学会C++》呢。

Here Insert Picture Description

这团队后来变成什么样了呢?55 个人里面,只有 20 个程序员,剩下 35 个都是经理。对,你没有看错,这个阵容真是豪华,给每个程序员配备了 1.75 个经理!

没几个经理有软件工程方面的经验。那时候,刚好出了 SCO 拿着 Unix 版权起诉 Linux 用户的事情,就算这整件事不过是虚张声势,但对许多人来说,当时这事还是挺可怕的 —— 要是突然有天你不得不为自由软件付费,那可如何是好啊。

技术知识也相当缺乏。都 200x 年了,这群人还没几个了解互联网的,少数几个熟悉互联网的,也不过就是拿互联网看看小电影而已。要是你提到你在网上看了些啥,得到的都只会是别人的窃笑而已。

Here Insert Picture Description

04)行政管理模式变态的发指

上面的荒谬情况也许会让人捧腹大笑,但如果你知道管理层的那群法国佬对员工发起狠来就像是奥斯维辛集中营里的德国鬼子,那你估计就笑不出来了吧。来看看这些官僚到病态的规定吧:

禁止迟到,所有人必须在上午9点前到岗。有一天,人事经理早早就守在公司大门口,把所有9点01分及之后才到公司的人都当场开除了,程序员、经理和销售,都不能幸免。

咖啡机时不时就断供,一断就是好几天。理由当然是跑去喝咖啡的人效率不如坐着干活敲代码的人。不仅如此,每当有领导来开发部视察的时候,这台咖啡机还会被人关掉,免得让领导看到有人“没在干活”。

厕所的脏乱差程度可以说是业内绝无仅有的恶心与恐怖。想来这也是管理层避免大家花时间蹲带薪厕的“高效”政策使然吧。

Here Insert Picture Description

You may want to ask, this metamorphosis company, how there are people fought to come to work? The main thing is, that time in France's economy is struggling on the verge of collapse (Until now, France has not completely out of this quagmire), enough to get a job to make ends meet had was not easy, no problem working under harsh conditions point .

Foregone conclusion

As users comments above, the entire project caught in an infinite loop of the chain: the lack of experience led to inefficiencies, resulting in inefficient spending too much, save money and cut experienced people, further reducing efficiency.

So why management also sit back and watch this situation continue to worsen it? In the final analysis, or fear of failure. If you cut the project, it means that the project failed, and the leadership responsibility of the person is you. If this project still linger, waiting for you after that promotion was transferred, this mess by the natural successor to clean it.

Eventually, the company responsible for the project leader was arrested because of misappropriation of funds and other reasons, into the prison, the project struggled for more than a decade in the flames of hell, finally announcing the termination.

Recommended for young people as a witness the whole thing, projectfailures bloggers to just entered the world of programming is:

Cherish life, do not toss their own right with C ++;

Would rather pick up a little less stable, but free to play to our strengths of small projects, do not covet what looks very easy to go to high-sounding project;

Object-oriented database is not a good thing;

CORBA should be painful death in the flames;

Those stupid product manager, please refer to the article.

Finally, if you feel that your current job bad heart Wohuo hope that this project can make you happier.

Here Insert Picture Description

Guess you like

Origin blog.51cto.com/14186420/2417728