幾年前,我在一家法國大型科技公司工作,為他們的一個軟件項目做咨詢師。在那段時間,我見識到了軟件工程工作方面最匪夷所思的一切,完全超乎我的想象。項目人員工作極度不專業(yè),而更嚴(yán)重的是,工作環(huán)境完全無視人的尊嚴(yán)。我一度覺得去那里上班就像坐牢。我只要舉幾個例子,讀者自然就有分曉。
工作內(nèi)容
為一個政府部門開發(fā)一款軟件。
政府先付了幾百萬歐元的訂金,軟件開發(fā)耗時初定 2 到 3 年。公司雇了幾個工程師,開始了項目。每隔三個月,團(tuán)隊人數(shù)就翻一番,以便讓資金不斷流入。
7 年后,項目還不成樣子,連雛形都沒有。每天公司都要交幾千歐元的罰金。于是,管理層決定節(jié)流,把經(jīng)驗豐富的員工都辭退了,雇了些經(jīng)驗少,甚至完全沒經(jīng)驗的新人。
10 年后,項目進(jìn)度實(shí)在太滯后,中層管理人員決定雇傭有軟件工程經(jīng)驗的人,把項目拉回正軌。公司的員工每三個月?lián)Q一批,也就是法國離職交接期的時長。
12 年后,項目還沒結(jié)束。公司每天給政府發(fā)的修改申請越來越多,以“補(bǔ)貼”每天繳納的罰金。此時已經(jīng)是 2008 年。
項目數(shù)據(jù)
600 萬行代碼
基于 C ++
50,000+ 類
使用的 C ++ 已經(jīng)過時,“鎖死”在編譯器版本中,編譯器的版本只能一個操作系統(tǒng)上用。
基于 CORBA
項目使用的數(shù)據(jù)庫軟件背后的公司已經(jīng)破產(chǎn)
圖層用戶界面有好幾個,但實(shí)際上每一層都沒人維護(hù)。
32 臺計算機(jī)上構(gòu)建,需要 48 小時
運(yùn)行一個用戶界面需要 40 到 50 個并行進(jìn)程
沒有動態(tài)庫鏈接:可執(zhí)行文件大小在數(shù)百兆字節(jié)范圍內(nèi)
啟動時間約為 15 分鐘
癱瘓頻率:每 30 秒到 30 分鐘一次
沒有那個軟件工程師會說 C++ 很簡單。就其復(fù)雜程度而言,這或許是最難掌握的編程語言,就連創(chuàng)造 C++ 的幾個工程師都坦白說,他們自己也沒有完全掌握。
這種無底洞、大迷宮似的語言,還是有不少人揚(yáng)言說自己已經(jīng)掌握了,只要有機(jī)會,他們就敢用給你看。他們一猛子扎進(jìn)這口深井,最后大多遍體鱗傷。看著一滿篇天書,花不知多少小時,也找不到癱瘓原因。人都是很聰明的,人生短暫,投入一段時間沒有回報,就會“棄暗投明”,改用其他語言,改做其他項目。
軟件一大,不管是什么語言寫的,維護(hù)起來都很難。6 百萬行代碼,就一個小團(tuán)隊維護(hù),只要想想就能發(fā)瘋。6 百萬可不是小數(shù)字,就算一秒鐘讀一行,也要 70 天不眠不休才能看完。
我再舉兩個實(shí)例,讀者就知道這個項目有多讓人崩潰。
有一個開發(fā)者被分配了這樣一個任務(wù):找出在界面上點(diǎn)擊右鍵,界面凍結(jié)的原因。他花了幾天時間,仔仔細(xì)細(xì)檢查,耗掉大半耐心之后,他發(fā)現(xiàn),在界面上右擊后,其實(shí)沒有錯誤,只是內(nèi)容菜單要 45 分鐘后才彈出。每次用戶在主窗體點(diǎn)擊后,菜單是動態(tài)生成的,但是背后是巨量的靜態(tài)內(nèi)容,因此耗時長。有些用戶反饋說“加載 CD”的命令完全沒反應(yīng)。這個問題花了幾個星期才弄明白,但是最后,錯誤報告卻被標(biāo)記為“已解決”,因為數(shù)據(jù)確實(shí)有加載,只不過是花了整整 7 天,才加載完 700 兆的數(shù)據(jù)。嗯,不然怎么說耐心是美德呢…
版本控制,猶如脫韁野馬
好幾年過去了,團(tuán)隊里終于來了個人才,提出要用版本控制工具。第一次嘗試,效果不如人意,于是團(tuán)隊決定換一個系統(tǒng)。又過了紀(jì)念,每次更新的歷史數(shù)據(jù)全沒了。最后,他們選擇使用一個瑞士的系統(tǒng),圖形用戶界面簡直不堪入目。有一個四人小組全職負(fù)責(zé)版本控制軟件方面的維護(hù)問題,跟他們合作,我們常常面臨以下的問題:
第一次測試需要與版本控制團(tuán)隊先預(yù)約時間,通常在一周后才授權(quán)。
未經(jīng)中層管理人員授權(quán),不允許編輯文件。必須事先告訴經(jīng)理要編輯哪些文件,然后申請上級許可,再預(yù)約版本控制團(tuán)隊,在幾天后才能編輯。
每次修改代碼都會產(chǎn)生分支文件,也就意味著必須合并所有修改。有了這么多的文件,你可能覺得,不會出現(xiàn)兩個人弄同一個文件上的重復(fù)勞動。但事實(shí)證明,大家都在弄同樣的 100 個文件。
檢入過程非常痛苦,這個過程中,你的代碼經(jīng)過自動化錯誤檢測軟件審查,最終由中間管理人員審查。不用說,bug 的出現(xiàn)速度永遠(yuǎn)比開發(fā)人員糾正速度快得多。如果你仔細(xì)看注冊的錯誤數(shù)量,每次修正導(dǎo)致的新 bug 數(shù)量,是原來 bug 數(shù)量的兩倍。
版本控制很簡單。舊軟件是版本1,目前的軟件是版本2,未來的軟件是版本 3. 沒有人知道哪個版本已經(jīng)交付給客戶了。
從前的某一天,公司安排過正式交付。但是這個時間不是團(tuán)隊內(nèi)的人定的。那天,客戶受到了一張沒有內(nèi)容,只有安裝指引的光盤。那時因為,沒有人知道怎么把這個項目做出來。后來客戶發(fā)現(xiàn)他們受到的光盤里,什么也沒有,于是給公司發(fā)了封正式的投訴信。
公司居然把舊版本的軟件發(fā)給了客戶。客戶之所以能發(fā)現(xiàn),是因為他們看了“說明”欄,里面的內(nèi)容跟上一年的版本大同小異。
“人件”
微薄薪水,只能雇庸碌之輩
團(tuán)隊里大部分人都是沒有軟件工程經(jīng)驗的人,軟件里要不是大部分都是 bug,就奇了怪了。經(jīng)理意識到,一個單純的軟件項目,支出的大頭是薪水,真是天資聰穎。但是,這個大發(fā)現(xiàn)絲毫沒有影響 TA 炒掉工程師,不論他們有沒有經(jīng)驗,卻把桌面上有“C++傻瓜入門”之類書的管理人員統(tǒng)統(tǒng)留下了。
我們的夢想團(tuán)隊
團(tuán)隊 55 人:20 個開發(fā)者,35 個管理人員
沒錯,管理人員數(shù)量比工程師還多。
管理人員最擅長的就是開會,講的都是同一個 PPT,一遍又一遍,講到吐為止。而開發(fā)者就在寬敞的共用辦公空間里聊天解悶。
很多管理人員在軟件工程上毫無經(jīng)驗。當(dāng)時 SCO-Linux 爭議炒得沸沸揚(yáng)揚(yáng),不管整件事算不算鬧劇,很多人都意識到,以后要用自由軟件都要付費(fèi)了。)不用說,整個軟件到處都是 GNU C 庫里的代碼,一個巨型 GNU 兼容的非共享軟件。但是,就這個項目的水準(zhǔn),估計也沒人敢把代碼放出去。
自由軟件(free software),根據(jù)自由軟件基金會對其的定義,是一類可以不受限制地自由使用、復(fù)制、研究、修改和分發(fā)的,尊重用戶自由的軟件。這方面的不受限制正是自由軟件最重要的本質(zhì),與自由軟件相對的是專有軟件(proprietary software),或被稱為私有軟件、封閉軟件(其定義與是否收取費(fèi)用無關(guān)──自由軟件不一定是免費(fèi)軟件。
整個團(tuán)隊,技術(shù)水平不如人意,了解互聯(lián)網(wǎng)的人屈指可數(shù),其中自認(rèn)為了解互聯(lián)網(wǎng)的,以為互聯(lián)網(wǎng)只是為愛情動作片而生的。他們之間,如果有人說自己在網(wǎng)上看了點(diǎn)東西,聽者就會露出會心一笑。
地獄之旅
本來在這里的工作,雖然不算優(yōu)越,至少不會無聊。但是頂層的管理人員非要采用納粹管理集中營的辦法來管理員工。我隨便舉幾個例子:
早九點(diǎn)后到崗是不允許的。有一天, 經(jīng)理站在大門后,把 9 點(diǎn)整以后到的所有員工都當(dāng)場炒魷魚,包括一些經(jīng)理和銷售人員。
抽煙的員工,因為跑出去抽煙,工作的時間就打了折扣。所以管理層決定讓所有員工都不許吸煙。當(dāng)然,沒有用。
有時候,一連好幾天咖啡機(jī)都被收起來。因為跑去喝咖啡的人自然沒有坐在辦公桌前的人、伏案寫代碼的人工作時間長。
每次有上級來視察,咖啡機(jī)就要關(guān)掉,以便給上級留下大家都在桌前認(rèn)真寫代碼的印象。
那里的洗手間是我去過的洗手間里最惡心的。大概也是為了提高大家的效率:上廁所的時間少了,工作的時間自然就多了(工作質(zhì)量自然也上去了)。
這樣的工作,這樣的管理,為什么大家還要來上班?最主要的原因就是當(dāng)時法國深陷經(jīng)濟(jì)危機(jī)(某種程度上,現(xiàn)在也是),有工作,有薪水幾乎成了特權(quán),工作環(huán)境、內(nèi)容自然就沒那么在意了。
還有一個原因,對于在那里的大多數(shù)員工而言,這份合約算是他們與一家真實(shí)公司簽下的一份實(shí)實(shí)在在的合約。沒有對比,就沒有傷害,他們可能都不知道這份工作的糟心程度。很多員工新入職場,覺得遲到就被炒魷魚,也沒什么不合理的。但是,這樣嚴(yán)苛的標(biāo)準(zhǔn),晚一分鐘都不行,只有變態(tài)的管理者才會付諸現(xiàn)實(shí)。
話又說回來,政府怎么會讓這樣的事情發(fā)生呢?但我們都心知肚明,政府里管這個項目預(yù)算的官員和軟件公司的頂層管理人員拜過把子,關(guān)系夠鐵。在法國,這種程度的腐敗也沒什么新鮮的。很多人根本不知道,更別說有什么懲罰或者后果了。當(dāng)然,也不限于法國,放眼歐美,這樣的故事也不少。
所以,下次上班覺得難熬,要學(xué)會置身處地。想像一下自己在那里工作,會是什么光景。
-
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29815
發(fā)布評論請先 登錄
相關(guān)推薦
評論