史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

臨近年末,小智身邊的不少開發者忙碌了起來。

吃午飯的時候,研發組的鵬哥就在一旁大吐苦水。

“當初剛接手這個項目的時候就知道它是個坑,這都跟了大半年了,才稍微像樣了些。現在加班加點,只希望不要拖到春節後······”

“淡定淡定,能圓滿完成就算順利的了。”

為了安慰鵬哥,小智給他講述了一則在IT界流傳多年的奇葩故事。如果屏幕前的你同樣覺得手上的工作又糟心又窩火,聽完這個故事應該會開心一些。

史上最爛的代碼長啥樣?


首先,整個項目總共600多萬行C++代碼,50000 多個類,基於CORBA

600多萬行是個什麼概念?對比一下:Linux3.13 版內核的代碼,在除去內核驅動和架構之外,在kernel/裡的源代碼有13萬行左右;以功能龐雜著稱的編輯器Emacs,總源碼規模也不過165萬多行。

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

啟動這個軟件要用時15分鐘,啟動之後平均30秒到30分鐘會崩潰一次,這時候就只能再花15分鐘重啟。

受編譯器版本限制,用的C++語法都非常舊,只能在某個(早就沒人維護)的操作系統上部署。

每編譯一次需要用48個小時,還是在32臺並行的機器上。光用戶界面就有40-50個進程同時操作,而且沒有用到動態鏈接,因此運行庫要先加載起來,一個可執行程序就有幾百兆。

莫名其妙的團隊

這個牛X的項目得追溯到1996年,法國的一個政府機構請某個公司開發一款軟件,預計工期2~3年。

甲方預付了幾百萬歐元后,公司招了幾個程序員開始幹活。隨著資金陸續到位,公司開始瘋狂招人,每隔三個月左右就把隊伍擴大一倍。

結果7年過去了,這個項目竟然還沒成型。這時候,因為延誤造成的罰金已高達每日幾千歐元,於是管理層決定要精簡團隊,減少開支。具體做法是,把有經驗的老員工解僱了,以低薪招了一批沒啥經驗的新手來上班。

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

一眾毫無軟件工程經驗的人組成的隊伍,這不就是個Bug生產工廠嘛!

而相反的,所有的經理們飯碗倒是都捧得牢牢的,一點都沒受影響。以至後來,團隊的55 個人裡只有20個程序員,剩下35個都是經理,平均每個程序員配備1.75個經理······

第10年,管理層終於發現整個項目已經深陷泥淖,這才決定要招一些具有軟件工程開發經驗的人來彌補。

又苟延殘喘了2年,最終,負責項目的公司領導因為挪用資金等原因被捕,進了監獄,這個在地獄烈焰中鬧騰了十幾年的項目才終於宣告終止。

奇葩代碼盤點

當然,不是人人都有機會遇上這樣的巨型糟糕項目,但項目裡大大小小的糟心代碼幾乎每個開發者繞不過去的坑。

產品經理刁難,前輩離職拋盤,同組“豬隊友”挖坑······沒有最坑,只有更坑。

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了


這不,網絡上流傳著眾多網友PO出的讓人抓狂的代碼,每一秒你都能發現比你手上的工作還爛的項目,發現比你還慘的研發。

真·顛倒黑白


@雨藍藍藍

寫這個頁面的已經被我砍死了。

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

@玻璃杯中的魚

// 以下所有left代表右

// 以下所有right代表左

@ Sc千尋

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了


取名是個技術活兒

@飛面神下一隻豬

用戶碼

UserMa

@ Kun Andy

public enum ColorType

{

Green, // 綠色

Hong, // 紅色

}

//......

this.curColortype= ColorType.Hong;

一開始愣是沒讀懂“Hong”是啥,看了註釋才恍然大悟。更犀利的是應該是覺得綠的拼音(lv)有點像等級,為了防止歧義特地用了Green,真是心思細膩啊!(咦

@侯傑

看枚舉名字不知道FiveLine是什麼鬼,看了枚舉內容恍然大悟,原來是五行(xing)……

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

@王德福

至今忘不了實習單位的代碼裡面有一個變量叫做“fanpage”,看了上下文之後發現這個變量是控制翻頁的。翻page······

@南零落枕

當年一位學長用虛擬現實做過的一個展示飛機的安裝過程的項目,變量名都是“poguanzi”(破罐子)“lanchibang”(爛翅膀)"zhuanbuqilaidelunzi"(轉不起來的輪子)我看完感覺這飛機遲早得掉下來。

然後函數名都是“bufaqianlaoshi”(不發錢老師)“nengbunengfaqian”(能不能發錢)想象不出學長經歷了什麼······

類名都是“haoxihuangebinvhai”(好喜歡隔壁女孩)“gebinvhaichuanhongyifu”(隔壁女孩穿紅衣服)“gebinvhaihaimeinanpengyou”(隔壁女孩沒男朋友)對愛情的渴望是每個程序猿的本能!

不過我接手以後實在是理不出個頭緒,最後直接重寫了一遍。

@匿名用戶

我校的選課系統,有人能看懂這些變量名算我輸

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

缺乏安全感

@Cyandev

不知道誰寫的,看哭了

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

@共產主義接盤俠

感覺很搞笑但是又說不出來哪裡不對····

//拼寫容錯

#define ture true

#define flase false

#define viod void

#definemian main

貴公司是按代碼行數發工資嗎?


@myd7349

只是為了確認輸入內容沒有非法字符,出現了這樣驚天地泣鬼神的操作:

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

······

哪怕不知道RE,也該知道FindOneOf啊!就是再不濟,也寫個循環吧!

@benliu

以前遇到一個做測試的,寫腳本,我寫了一個方法讓對方調用,說調用100次看看結果。結果我看到了他的代碼類似如下:

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

我就想說這次麻煩您再調用一百萬次試試

@蘇格

難道這就是傳說中NASA代碼的最後一頁?

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

玄學


@孫傳武

有次看一個項目的源碼,註釋裡有個warning是這麼寫的

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了


@CeleryL

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

@鄧牧澤

代碼review的時候發現一個888的全局數組,但看代碼最多用20個,我就問作者為什麼定這麼大,他說“吉利”。

說吧你是不是針對我

@海大歌

手動混淆法······我刀呢

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

@淼淼

今天看到對數據庫查詢返回的列表進行冒泡排序,整個人都不好了。

時間都去哪兒了


@虎耳

曾經在一個家公司,有一次發現有個地方在執行每個請求時都會空等了一秒。後來問老大,他說,如果客戶有新要求,隨時可以把性能提高一倍以上······

@破軍

Thread.sleep(5000); //等客戶交錢優化後刪掉

找呀找呀找親戚


@青苔

看見這段代碼的時候,我拍了很久的掌

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了


@LegStrong

del_yeye();

一時看不出來這是要幹嘛,查過去發現是

parent().parent().remove();

合著是要刪除爺爺·····

神邏輯


@TypingW

“你把距離顯示優化一下,超過1000米就顯示公里,精確到小數點後2位。”“好的!”

然後在Code Review的時候,我看到了如下代碼:

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

最後,我飽含熱淚,心懷不忍地將他辛勤的工作成果改成了


史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

小智注:對方的思路是將數字轉化成字符串,如果其長度大於4(個十百千,超過1000米的字符串長度會大於4),然後往中間插入一個"."(小數點字符)。

@湯洌

要求程序的功能是輸出明天的日期,然後他這麼實現了:

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

休眠一天,然後輸出當前的日期。真是個鬼才······

@小脆

證明1億以內哥德巴赫猜想成立

#include <iostream> /<iostream>

#include<windows.h>using namespace std;/<windows.h>

int main()

{

Sleep(2000);

cout<

return 0;

}


史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了

不知道看完以上內容,屏幕前的你是否也像我身邊的鵬哥一樣煥發起了無窮的信心。

畢竟相比之下,他手上的項目真是再正常不過了。

史上最爛開發項目長什麼樣子?進行了12年,最後還爛尾了


互動話題

你見到過哪些奇葩的代碼?


分享到:


相關文章: