史上最烂的项目:苦撑 12 年,600 多万行代码

这个项目的情况如何?这个项目怎么会像这样腐烂?那么,超过600万行代码的概念是什么?不可避免的结果

你看到最糟糕的项目多久了,完成需要多长时间?六个月?一年?今天推出的精彩项目不仅在开始时很无聊,而且在项目负责人被逮捕并投入监狱之前已经坚持了12年多。

有多糟糕?告诉你以下令人震惊的数据

●总共超过600万行C ++代码

●总共超过50,000个类别

●受编译器版本的限制,使用的C ++语法已过时,只能部署在操作系统上(尚未维护)

●基于CORBA

●使用的数据库软件来自一家早已破产的公司

●多层叠加层一起构成用户界面,原始作者

都不维护这些层

●运行用户界面需要启动40-50个子线程

●在32台并行机上编译需要48小时

●如果没有运行时的动态链接技术,可执行程序可以大到几百兆

●启动这些东西大约需要15分钟

●然后它通常会在30秒到30分钟内崩溃

a325ab86e0ba400c802578bf05207f04

你从未见过的“地狱等级”烂项目

十年前,在2008年,科技博客项目失败爆料。在过去的几年里,这位博主受雇于法国的一家大型科技公司。他参与了一个由政府机构委托的软件项目,并且是一名顾问。在那里,他目睹了峰会的愚蠢和疯狂以及他们在软件开发中的可怕角色。

十年之后,这个地狱般的项目又被重新调整,并且这种猜测再次升温,而且这个项目失败的博客甚至进行了一次特别的审查。

在文章中,他写道:“这不仅仅是一个缺乏专业能力的问题。在这个项目中对人类尊严的无情践踏是如此严重,以至于有时它会让我感到有罪。”/P>

嘿?但是只要写一些代码,除了失去你的头发,你还会进入它!这个项目太可怕了!

1996年左右,一家法国政府机构要求一家公司开发软件。一般来说,这些东西应该不那么复杂,但是有一些非常小的问题需要解决。

甲方预付了几百万欧元,计划建设期约为2至3年。因此,该公司招募了一些程序员并开始工作。随着资金继续存在,该公司开始疯狂招募人员,每三个月左右将团队加倍。

结果,七年后,这个项目还没有形成。因为延误造成的延误是每天几千欧元。因此管理层决定精简团队并减少项目费用。具体方法是开放工作,并招募一些没有软件开发经验的新人去上班。

项目开始十年后,整个项目陷入了灾难的泥潭,完全由纯粹的混乱组成。因此,该项目的中层管理人员最终决定招聘一些具有软件工程开发经验的人,将这个混乱拖出地狱。

再过两年,该项目仍然挥之不去。该公司通过发送一个不断增加到甲方的“设计变更”法案来弥补施工期间的延误。这一切都是在2008年!

01代码质量很糟糕

在语言选择方面,没有人敢说C ++是一种简单易懂的语言。事实上,就简单性而言,C ++可能是最糟糕的编程语言。你知道,即使它的创造者也足够复杂。 Bjarne Stroustrup我不敢说我完全掌握了这门语言。

当然,这不能怪开发团队。你知道,当时,像C ++这样具有无限复杂性的迷宫仍然是一个巨大的市场。许多想成为超级程序员的年轻人都渴望这种听起来太好的语言。事实上,大多数这些可怜的婴儿都被C ++苦苦挣扎。有多少美丽的年轻人花时间反复调试很多晦涩难懂的代码,这对于探索来说代价很高。像莫名其妙的崩溃。

那些头脑正常的人已经转向其他语言和其他项目。你必须知道生命太短暂。

然而,看起来这家公司还没有跳出这个圈子,或者急于进入C ++坑。

无论您使用何种编程语言,退后一步,维护庞大的代码库本身并非易事。该项目的代码库有600多万行。

与Linux 3.13内核代码相比,除了内核驱动程序和体系结构外,kernel /中的源代码只有大约130,000行;另一个例子是着名的编辑器Emacs,由于功能太多,它太大了。它经常被浪费为“缺乏优秀编辑器的操作系统”,但即便如此,它的总源数量仍然超过165万行。

即使你特别强大,你也可以在显示器前花7天时间,而且你必须经历所有600万行代码。

所以我们可以想象,为了维持如此庞大的代码库,有多少程序员可以疯狂。看看下面的两个例子,我想,如果我是程序员,我会生气。

有一次,项目中的程序员被要求修复一个错误“右键单击界面会导致整个应用程序死亡。”经过几天的仔细检查并消耗了无数的耐心,他发现实际上是右键单击响应事件工作。通常,这种“正常”过程要求程序在显示菜单之前花费45分钟从一些巨大的(静态!)内容库动态生成每个菜单项。如果您不幸在此时单击了右键,我很抱歉,再花45分钟重新生成菜单项.

另一次,用户报告了一个错误“无法从CD-ROM加载数据”。程序员花了几周时间测试分析代码,但最终将问题标记为“已解决”。因为他们发现从CD-ROM加载数据的能力实际上很好,问题是需要大约7天才能读取700MB的数据。

这真是对耐心的特殊考验。

02版本控制非常混乱

令人难以置信的是,该团队在没有版本控制工具的情况下工作了几年,直到团队中仍然醒着的人突然想到使用版本控制工具来管理代码。初始试验的结果并不能满足每个人的需求,因此团队切换到另一个版本控制系统。这将是一年或两年,然后版本控制系统以某种方式再次风,并失去所有以前的变化。

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

首次从版本控制系统中检出文件需要向版本控制团队预约,一般来说在一周后才能获得授权。想修改文件必须经过中层管理人员审批。你需要提前列出需要修改的文件,把列表告诉你的经理,然后打报告给版本控制团队申请,后者大概两天左右会给你反馈。每次对文件的修改都会触发分支,这就意味着你得自己去合并这个文件收到的所有修改。也许你会觉得,项目里这么多文件,两个人改到同一个文件里的几率应该不大,然而实际上,绝大多数改动都集中在同样的大概100来个文件里,所以每次合并都保证让你痛不欲生。在提交修改(检入文件)之前,你还将经受一次精神折磨:你准备提交的代码将被交给一个所谓的自动bug探测程序进行审阅,通过之后还要拿给中层管理人员看过,才能成功提交。不用说,这根本无济于事,虫还是如雨后春笋一样不停冒,比大家除虫的速度块多了。更有甚者,对发现的bug数量进行分析后发现,这种“缺陷修正”方式带来的新bug数量是它所修复的bug数量的两倍.版本管理过于简单。旧的版本是1,今天的版本是2,之后的版本是3.没有人能确切地知道具体发给客户的是哪个版本。

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

XX

03团队组成更加难以理解

团队中充满了一大群没有任何软件工程经验的人。如果这个软件中没有很多错误,那真的是不合理的。

我记得如上所述,管理层决定精简团队。

按理说,任何一个有正常大脑的经理都会发现,对于这样一个仅限软件的项目,人员费用必须是最重要的费用。然而,这一发现并不妨碍管理层开放所有经验丰富的程序员,并用工资要求低得多的新手取而代之。相比之下,所有管理人员的工作都得到了坚定的支持,而且根本没有受到影响。

团队成为什么样的?在55人中,只有20名程序员,其余35名是管理人员。是的,你没错,这个阵容非常豪华,每个程序员都有1.75个经理!

很少有经理具有软件工程经验。那个时候,SCO有Unix版权的起诉Linux用户,即使整个事情只是虚张声势,但对很多人来说,当时的情况非常糟糕。如果突然你必须获得免费软件支付,它怎么可能是好的。

技术知识也很缺乏。它已经有200多年的历史了。这个群体中有不少人知道互联网。一些熟悉互联网的人正在上网看小电影。如果你提到你在互联网上看到一些尴尬,你只会从别人那里窃笑。

04变形行政管理模式

上面荒谬的情况可能会让人大笑,但如果你知道管理团队的法国蟋蟀群就像是奥斯威辛集中营中的德国魔鬼,那么你可能不会笑。让我们来看看这些官僚主义的病态规则:

禁止迟到,每个人必须在上午9点之前到达。有一天,人事经理早早地住在公司大门口,所有在9点01分到达公司的人当场被解雇。程序员,经理和销售人员都没有幸免。咖啡机不时断开连接,只有几天。原因当然是那些竞选咖啡的人不如那些坐下来处理代码的人那么高效。不仅如此,每当领导到开发部门进行检查时,咖啡机都会关闭,以免领导看到有人“不工作”。肮脏的厕所水平可以说是业内唯一的厌恶和恐怖。对于管理层而言,这也是一种“有效”的政策,可以避免花费时间和支付厕所费用。

苛刻的要点没问题。其中:缺乏经验导致效率低下,效率低下导致开销过高,节省资金并削减经验丰富的人员,进一步降低效率。

那么,为什么管理层仍然处于这种情况的恶化?归根结底,人们仍然担心失败。如果你削减了项目,就意味着项目失败了,负责领导的人就是你。如果项目仍然挥之不去,那么在你转移到帖子之后,这个混乱将自然地被接班人接收。

最后,负责该项目的公司负责人因贪污等原因被捕,并入狱。这个项目在地狱的火焰中挣扎了十多年,终于走到了尽头。

作为整个事情的见证者,projectfailures的博主们为刚刚进入编程世界的年轻人提供建议:

●珍惜生命,不要担心使用C ++来折腾自己;

●我宁愿选择一些不太稳定的小项目,但他们可以自由发挥自己的优势,并且不想感到舒服并参与看起来像是一个宏伟的项目;

●面向对象的数据库不是好事;

●CORBA应该在火焰中痛苦地死去;

●。

最后,如果你觉得你目前的工作很糟糕,我希望这个项目会让你开心。

: -D搜索微信号(ID:斜坡源),可以获得各种Java源代码分析,原理说明,访谈问题,学习指南。

: -D此外,在回复[Book]之后,您可以从作品推荐的Java中获得100本书,从入门到架构。

: -D此外,在回复[Technology Group]之后,您可以加入专门从事Java,后端和体系结构的技术组。

a9c90ac0178e426b8357329883822384

来吧,骚年