开发12年,整整6百万行代码,史上最烂的开发项目长这样

article/2025/9/14 11:42:06

程序员(ID:imkuqin)猿妹编译

原文:https://projectfailures.wordpress.com


640?wx_fmt=png


最近有个史称世界上最烂的开发项目在朋友圈刷屏,这个项目到底有多烂呢?


这个项目拖了整整12年,造出6百万行代码,最后负责人还进监狱.......


其实这个项目发生在十年前,当时科技博主projectfailures发表过一篇博文,讲述自己亲身经历过的一项“地狱级”的项目


十年后,这件事突然在美国的社交媒体上再次被翻出来,projectfailures也发了一篇名为“地狱级项目”的后续的博客,下面我们一起来看看这个“地狱级项目”到底有多可怕


这个“地狱项目”长这样:


● 600 万行C++代码

● 50,000多个类

● 代码中使用的C++方法早已过时,而且受限于一个编译器版本,该编译器版本仅支持一个不再维护的操作系统。

● 基于CORBA

● 采用一家倒闭公司提供的数据库软件

● 多层的叠加共同组成了用户界面,但却没有一个是实际作者在维护的。

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

● 运行一个用户界面需要同步启动40~50个子进程

● 没有动态库链接:可执行的文件大小一个就有几百兆

● 启动时间需要耗费15分钟

● 平均崩溃时间:30秒到30分钟不等



“地狱级项目”怎么来的


大约在1996年,法国政府机构想要开发一款软件,复杂程度不高,然而过程却有些曲折:


当时,政府预付了几百万欧元,计划开发周期为2~3年。该公司立马就聘用了几个开发人员来开始这项工作,并且随着资金的不断流入,开发团队的规模每3个月左右就会扩大一倍。


7年过去了,这个项目竟然还没成型,由于工程延误,公司每天要缴交的罚金高达几千欧元。于是,管理层为了降低成本,决定把所有有经验的开发人员都开除了,然后雇佣一些压根没有编程经验的新手进来接盘


10年后,这个项目依然深陷泥潭这时中层管理人员终于醒悟,决定再聘请一些具有软件工程经验的人员,让项目重回正轨;然而,招进来的工程师基本3个月就待不下去了(法国法定入职后最短可离职时间是3个月)。


640?wx_fmt=gif


12年后,该项目还在苟延残喘。该公司通过向政府提交越来越多的项目变更请求来弥补每天的处罚。一晃这都到2008年了


然后又过了几年,这个项目老板据说就因为欺诈而被关进监狱了,这个“地狱项目”总算结束了



项目烂成这样是有原因的


1、项目采用C++开发


首先,这个项目采用C++开发,没有哪一个程序员敢和你说你C ++是一种简单的语言。实际上,就复杂性而言,C++可能是最糟糕的计算机语言之一。复杂到什么程度呢?复杂到就连他的创造者都承认自己还没有完全掌握这门语言


这个项目选择用C++开发,也不能说是团队的错,要怪就怪当时人们都听说过C ++,并且都自认为自己完全掌握它了。于是毫不犹豫的选择了它,最后耗费了大量的时间不说,程序还无休止地崩溃。


聪明的人,在接触C++之后,果断就转向其他语言了,毕竟人生苦短呐~


640?wx_fmt=jpeg


再者,无论你选择何种语言开发,维护这么庞大的一个代码库本就是一项艰巨的任务,想象一下,一个团队必须维护600多万行代码,这在软件领域是多么疯狂的一件事。600多万行的代码是什么概念?就算你以每秒一行的速度读取代码,需要不眠不休70天才能把这些代码读完


再来看看下面这两个例子,相信你会更加深有体会:


当时,一位开发人员负责修复一个“在界面单击右键单击会导致整个应用程序冻结”的Bug。经过几天的耐心仔细的检查后,他发现右键单击并不会导致程序异常,只不过右键单击到弹出菜单栏这个过程需要45分钟。每次右键单击主窗口时,菜单都是从一个庞大的内容库中动态生成


还有用户会反映“从CD-ROM加载数据失败”。程序员花了好几个礼拜的时间测试这个Bug,最终啥也没做就直接把Bug标记为“已解决”,因为从CD-RO 载入数据的功能其实没毛病。唯一问题就是加载这700M的数据,需要花7天的时间


不得不说,耐心真是一种美德。



2、粗犷的版本控制


难以想象,这个项目进行了好几年以后,团队中才有人提出了使用版本控制工具的想法。而且第一次的尝试并不是很满意,因此团队就切换到了另一个系统,然后在几年之后,这个版本控制系统不明原因地每次更改都会丢失所有历史记录,于是,团队又换到了另一个系统。


最终选择的版本控制系统简直就是个灾难,它从瑞典进口,带有图形用户界面,当时还专门组建了一个由四个人组成的团队负责在版本控制软件上处理大多数维护问题,其中包括如下内容:


 首次提交需要与版本控制团队预约,通常在一周后批准。


 首次checkout需要向版本控制团队申请,通常在一周后才能获得授权。


 未经中层管理人员授权,不得编辑文件。你必须提前告知您的经理你要编辑哪些文件,然后发送请求给版本控制团队,该请求也需要几天时间才能得到反馈信息。


 代码的每次修改都会触发分支,这意味着你必须合并所有修改。你可能会认为存储了这么多文件,两个人改到同一个文件里的几率应该不大,然而事实证明,大多数改动都集中在那100个左右的文件里。


 Checkin(提交修改)仍需要经历一个痛苦的过程这个过程里,你的代码需要经过一个自动化的Bug检测软件的检测,最终还要由中层管理人员审查你的代码。毋庸置疑,这样做并不能减少程序的Bug数量。更夸张的是检查数据发现,每一个修复完一个Bug都会换来两个新的Bug。


● 版本控制太过简单。旧软件是版本1,今天的软件是版本2,未来的软件是版本3,没有人能够确切地知道哪个版本已经交付给客户。


虽然有时候也会制定一个交付计划,但是计划的这个时间点完全不考虑团队的工作进程。当交付的日子来临时,客户就会收到一张名为安装教程的空白CD,因为没有人能够在几周内构建软件。等到客户发现自己收到的只是一张空白的CD,就会投诉,为了应付了事,团队就会再发送一个旧版的CD。那客户又是怎么发现这张CD是旧版本的呢?因为关于软件介绍的日期显示的和去年那个版本一模一样。


640?wx_fmt=jpeg


3、乱七八糟的团队


团队中55人:20名开发人员,35名经理。是的,你没有看错,管理人员比开发人员还要多


管理人员不断组织会议,不厌其烦地展示相同的PPT文件,而开发人员则在开放式的办公室里面打发时间,毕竟这35名经理里面没几个有软件工程方面的经验


640?wx_fmt=jpeg


当时恰逢SCO起诉IBM滥用Linux版权。即使整个事情是虚张声势,但它确实对这些人起到一定的作用,他们都意识到可能需要为自由软件付费了。


他们都没有提到“自由软件”,但他们都知道“免费软件”。这个项目到处使用GNU库,并且完全没有意识到这会把整个项目变成一个巨大的、不兼容的GNU项目。但是,考虑到这个项目真的很糟糕,没有人会坚持要他们发布源代码。


还有一个很致命的问题就是技术知识相当薄弱,几乎没人知道互联网,少数几个知道的人,认为互联网就是为色情而生的东西。当问及在互联网上看到的东西时,他只会给你一个微笑,你自己体会


640?wx_fmt=jpeg


如果这些最高管理层没有像纳粹一样,那么上面这整个经历可能会很有趣。举几个例子让你看看有多变态:


● 禁止超过九点打卡。有一天,经理早早就在大门后面等,当场解雇九点一分以后进来的人,包括一些经理和销售人员。


●管理者试图强制所有人停止吸烟,因吸烟的人在工作的时候,时不时可能就得来一根。


● 因为喝咖啡的人效率低于不喝咖啡一心敲代码的人,所以,每当领导前来视察的时候,咖啡机就会被关闭,给领导留一个每一个人都在努力工作的印象。


● 厕所绝对是你从未见过的那种恶心。想来这可能也是管理层为了避免员工在厕所蹲太久,从而多挤出一点工作的时间


你可能想知道为什么这样的工作环境竟然还有人为他们工作。最主要原因还是当时法国正经历着经济危机,当时的人们有工作有钱拿就不错了,谁还会考虑工作环境。


另一个原因是,对于许多人来说,这份工作可能是他们的第一份工作,没有对比,就没有伤害啊,初入社会的工作者甚至还以为九点过后打卡的人被开除是理所应当的。


640?wx_fmt=jpeg


至于政府如何会让这些事情发生呢?我们都清楚它的运作模式。负责预算的人很多都是公司的高层管理人员。在法国这样的国家,这种的腐败并不罕见,只是大多未被发现,很少被起诉。而且这样的情况也不只是法国才有。在欧洲和美国也有类似的事情。


不过,好在几年后,听说负责这个项目的负责人因为欺诈罪被捕,进了监狱,这个地狱般的项目,才终于宣告终止。


这位博主长篇大论说了这么多,主要是想告诉我们以下几点:

● C++有风险,选择需谨慎

● CORBA就应该被淘汰

● 采用面向对象的数据库是一个非常糟糕的做法

● 最后,远离贪得无厌的项目管理者


最后,我想说的是如果你觉得你现在的项目真是糟糕透了,不妨想想这个项目……



精彩回顾  点蓝字即可  

 有个厉害的程序员女朋友是什么体验?

 多年来,程序员经常加班的真相终于揭开了…

 如果编程替换成中文就会怎样? 程序员看了表示头疼

 为什么一定要给孩子找个程序员爸爸?

♡ 程序员不要去这样的公司

 程序员究竟能干多少年?

 程序员吃的是青春饭?本质上取决于......

 最霸气的程序员辞职理由,阅后即焚!

 程序员面试神回复,最后一个“过分”了!

♡ 老码农冒死揭开行业黑幕:如何编写无法维护的代码

640?wx_fmt=gif


http://chatgpt.dhexx.cn/article/qShQ2JZk.shtml

相关文章

“低代码”抢走程序员的饭碗?没有的事

编者按:眼下发展势头正猛的低代码,承受着两种截然不同的声音。一种声音觉得低代码是“减负”神器,可以帮助减轻开发工作量,大幅提升开发效率;另一种声音却觉得低代码非“善类”(主要是程序员群体&#xff0…

程序是如何跑起来的

一个简单的11?的问题对于我们而言就是脱口而出,而对于计算机却不是这样。 那么当我们用从c语言或者其他高级语言来写的时候计算机是如何工作运算加法(其他原理类似)的呢? 当c语言由编写到运行程序需要经过 1.预处理 2.编译 …

据说程序员写完代码是这个样子,99%的人都中枪了

点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达! 1、当你改错一行代码的时候 2、当你想要重构别人的代码时 3、当你尝试想要修复一个bug时的样子 4、当你凌晨4点还在工作时的样子 5、星期五下午项目经理给你分配任务时的样…

祖传代码千万别动

IT程序猿 微博网友评论: 洞侠X:祖传 爱因斯坦老道士:这是傻啊 砸自己脚下的 前端折腾小能手:嗯 sunnysab:想要改进代码的时候 精彩回顾 ♡ 程序员究竟能干多少年? ♡ 互联网公司各岗位真实工作内容起底 ♡ …

泡着枸杞写bug的三流程序员凭什么逆袭到一线大厂?

大多数互联网的从业者都有一个梦想:进大厂。 因为不仅可以享受较好的福利待遇,也能与更优秀的人一起共事,获得更专业、更快速的成长。 最近经常有朋友提及想要入门编程学习,该如何学习? 关于编程学习,各…

刚进公司就把祖上十八代单传的代码优化了是什么体验?

刚进公司就把祖传代码优化了,让公司的APP稳定性提高一半,大幅提升了用户体验是什么体验? 一个字!爽! 这不比斗破里面萧炎“三年之期”打脸嫣然来的爽?不比博人传燃?爽文小说都不敢这么写。 关键,没人信啊。 扮猪吃老虎的大佬 去年金三银四帮公司面试的时候认识了…

百行代码手撸扫雷(下)c/c++

在上一篇文章中已经带大家如何搭建开发环境了 需求分析 这里是一个8*8的地图 地雷随机分布数字表示周围一共有多少颗雷 数字1表示红色区域内有1课雷,2表示有两颗 如何显示数字 右上角没有如何判断呢?行加1或列加一不就越界了吗,所以为了帮面条件判断我们把8行8列改成10行1…

面向祖传代码 Debug,我挽回了一位准备跑路的程序员

交流群的风格突然骤变,没有了往日的灌水扯淡,居然聊起了技术。 看了大家的全部的聊天记录,发现问题并没解决。群里难得这么多人聊技术,抱着问答不断,必有回响的原则,主动勾搭一起看看是什么问题。 大概了解…

第一次敲代码的感受

上图 打了2遍才成功,吐了🤮 第一遍错了好几次,最后还是不知道那错了,发给同学都可以运行,我这电脑确不可以运行! 最后第二遍终于成功了 ,花费一个小时,也不知道还行不&#xff1f…

程序员想知道代码是怎样跑起来的

某一天&#xff0c;程序员使用Java语言实现累加求和的方法&#xff0c;将文件命名为Sample.java。 public class Sample {public static void main(String[] args) {System.out.println(sum(10));}private static int sum(int n) {int res 0;for (int i 1; i < n; i) {res…

从前有一个程序员,成天写代码,后来。。。

之前这里是网易云音乐 的外链&#xff0c;许巍演唱版本的《执着》&#xff0c;我们搞IT 的多少都有些执着&#xff0c;后来网页没有了版权&#xff0c;我只好放上来歌词了。 如果对文章没有太多兴趣&#xff0c;可以只读一遍歌词&#xff0c;或者听一遍歌&#xff0c;哈哈。 每…

开发10年程序员,坐标北京,今天我硬气一回把老板炒了!!!

我的情况 随着越来越多的零基础非专业跳槽人员以及大学计算机专业学生越来越多,导致程序员找工作门槛也越来越高。虽然有着三年的开发经验,也自认为自己能解决很多问题。但是从找工作的这段时间才发现,自己的解决问题的能力是有,但是技术深度不够扎实。 通过对比自己和中…

低代码起势,程序员闷头开发的日子结束了

对于“低代码”的宣传其实已经很久很广泛了&#xff0c;但是争议从来都没有停止。“低代码将会取代程序员”的说法也很荒谬&#xff0c;今天系统整理了低代码&#xff0c;希望能对大家有启示&#xff0c;同时也欢迎各位在评论区指正探讨。 何方神圣&#xff1f; 所谓的低代码开…

程序员的炫技代码写法

程序员的炫技代码写法 程序员&#xff0c;这个职业总是让人感到神秘而又充满魅力。他们手中的代码常常充满了令人惊叹的炫技操作&#xff0c;让人不禁感叹他们的技术能力之高。在这篇博客中&#xff0c;我想和大家分享一些我所知道的程序员的炫技代码写法。 一、代码美感——…

一串代码让你成为机房最靓的仔

1.创建一个记事本文件 2.编辑文件内容 语法格式 color 背景色字体颜色 echo 输出的内容 %0&#xff08;无线循环&#xff09;例如在文件中输入以下内容并保存 color 1a echo 666666 color 2b echo 666666 color 3c echo 666666 color 4d echo 666666 color 5e echo 666666 c…

我爸嘲讽我,写破代码一年才挣十几万,他在工地带50个工人,一个月仅人头费就挣3万多,让我滚回去跟他干工地!...

现在码农的地位有多低&#xff1f; 一位程序员讲述自己被父亲鄙视的经过&#xff1a; 我爸嘲讽我&#xff0c;说我天天写这破代码有啥用&#xff0c;一年就拿十多万死工资。他在工地带 50 个工人&#xff0c;一个人一天抽 20 块钱人头费&#xff0c;一个月都能抽 3 万多&#x…

电视剧中的程序员,是真的敲代码吗?

今天是1024程序员节&#xff0c;今天不聊技术&#xff0c;聊一聊电视剧中出现过的敲代码片段&#xff0c;从咱程序员的视角看看代码是不是真的在写代码哦~ 1. 码不出来&#xff0c;公司要完 从知乎上看到的 用word写代码&#xff1f;放弃吧&#xff0c;写不写得出来&#xff…

给2500万行代码修复bug的程序员都怎么上班?

通常说&#xff0c;一个人造的、很庞大的事物&#xff0c;会给人很厉害的感觉。 比如说摩天大楼⬇️ 或者巨型水坝⬇️ 看着这种东西&#xff0c;世超不禁想到这几个字&#xff1a; “ 人类工程学奇迹 ” 。 但是欣赏归欣赏&#xff0c;这种巨型工程项目如果出了啥子问题&…

感受野与权值共享

什么是全连接&#xff1f; 若有一幅100x100的图像&#xff0c;隐层有100个神经元&#xff0c;每个神经元与每个像素全部连接&#xff0c;则有100*100*100个连接&#xff0c;这就叫做全连接。 什么是局部连接&#xff1f; 若有一幅100x100的图像&#xff0c;隐层有100个神经元…

感受野浅析

感受野的讲解&#xff0c;我在网上查了好多都是错误的&#xff0c;浪费了大量时间&#xff0c;后来总结下来避免大家入坑 一、感受野的概念 感受野&#xff08;Receptive Field&#xff09;的定义&#xff1a;卷积神经网络每一层输出的特征图&#xff08;feature map&#xf…