歌頌程序維護(hù)人員
原文地址(source):http://visualstudiomagazine.com/articles/2014/12/01/in-praise-of-the-maintenance-programmer.aspx
當(dāng)然,構(gòu)建新應(yīng)用程序的開發(fā)人員是非常優(yōu)秀的人群。但是,編程世界里真正的英雄卻是維護(hù)和擴(kuò)展現(xiàn)有應(yīng)用程序的開發(fā)人員們。 |
追溯到1984年,我剛剛畢業(yè),準(zhǔn)備受聘于開發(fā)人員的職位。我被一家跨國(guó)公司雇傭了……很快被安排到了現(xiàn)有應(yīng)用程序的維護(hù)小組。在當(dāng)時(shí),這個(gè)決定貌似合情合理。現(xiàn)在回顧起來(lái),真的很蠢。實(shí)際上,一個(gè)更好的描述應(yīng)該是“瘋狂至極”。
維護(hù)比新的開發(fā)工作要更加艱難。把我這種剛畢業(yè)的、“乳臭未干”的開發(fā)人員放在維護(hù)現(xiàn)有應(yīng)用程序的工作上,就像讓剛畢業(yè)的醫(yī)學(xué)院學(xué)生為總統(tǒng)做腦部手 術(shù)—有理智的人都不會(huì)這樣干的。我當(dāng)時(shí)維護(hù)的現(xiàn)有應(yīng)用程序在支撐著公司;另一方面,在開發(fā)的應(yīng)用程序與公司運(yùn)作關(guān)系不大(盡管它們對(duì)公司的未來(lái)有一定影 響)。
開發(fā)中的系統(tǒng)與生產(chǎn)環(huán)境上的系統(tǒng)的區(qū)別,取決于一個(gè)關(guān)鍵特征:如果開發(fā)中的系統(tǒng)崩潰了,沒(méi)人會(huì)在意的。另一方面,如果你搞砸了生產(chǎn)環(huán)境上的系統(tǒng),很多人都會(huì)來(lái)找你,而他們以前都懶得留意到你(我們不想問(wèn),我是怎樣知道的)。
我現(xiàn)在明白了把我放在維護(hù)位置上的、邏輯上的真實(shí)原因了:公司IT部門需要很多“手和腳”。畢竟,IT部門75%的時(shí)間花在了維護(hù)上,因此推測(cè)出,他們?cè)诰S護(hù)上需要的人數(shù)是開發(fā)所需人數(shù)的三倍。但是,把幾乎沒(méi)有實(shí)際工作經(jīng)驗(yàn)的人放在需要工作經(jīng)驗(yàn)的應(yīng)用程序上,是行不通的。
“手和腳”的解釋也解釋不了 為什么新開發(fā)項(xiàng)目中的開發(fā)人員被普遍地視作英雄。退回到那時(shí)候,忙于新項(xiàng)目的人們相較于程序維護(hù)人員,有著更高的地位……我敢打賭這是真的。根據(jù)“提供的 價(jià)值”,程序維護(hù)人員比開發(fā)程序員有著更多的價(jià)值。程序維護(hù)人員基于現(xiàn)有代碼庫(kù)開發(fā),結(jié)果,與任何新開發(fā)小組可能管理的功能相比,程序維護(hù)人員用較少成本 交付了更多功能。
程序維護(hù)人員的技能
當(dāng)我***轉(zhuǎn)向新的開發(fā)工作后,實(shí)際上我丟掉了一些技能,而這些技能對(duì)于程序維護(hù)人員的工作是必備的。做維護(hù)工作,我差不多是個(gè)程序員,我還是歷史學(xué)家和偵探。
例如,當(dāng)我做維護(hù)時(shí),收到了被分配的問(wèn)題,去追蹤一個(gè)bug,它偶爾引起我們的程序崩潰,隨之留下一些臟數(shù)據(jù)。這個(gè)bug***出現(xiàn)在4年前(比我加入公司還要早得多)。這個(gè)bug潛伏了一段時(shí)間,但是上周它再次出現(xiàn)了。
因?yàn)槲沂浅绦騿T,我掃了一眼代碼,但是,由于我是第三或第四個(gè)被分配到這個(gè)問(wèn)題(我還缺乏經(jīng)驗(yàn))的人,貌似我不太可能發(fā)現(xiàn) 前任開發(fā)人員都沒(méi)有發(fā)現(xiàn)的問(wèn)題。如果它不是代碼,我推測(cè)它一定是數(shù)據(jù)……這讓我根據(jù)bug報(bào)告的時(shí)間進(jìn)行了劃分。最終的曲線比較有意思:剛開始bug出現(xiàn)得相當(dāng)頻繁(3-4次/天),到了如今,頻率逐漸減少,這個(gè)bug每個(gè)月只出現(xiàn)幾次。
根據(jù)這些證據(jù),我得出了結(jié)論,在bug***出現(xiàn)之前,一定發(fā)生了什么,而該bug導(dǎo)致數(shù)據(jù)庫(kù)埋下了臟數(shù)據(jù)。當(dāng)應(yīng)用程序處理到臟數(shù)據(jù)時(shí),程序就崩潰 了,然后有人介入并修復(fù)數(shù)據(jù)。當(dāng)我向組內(nèi)其他人員(他們比我在公司的時(shí)間要長(zhǎng)得多)演示這個(gè)分析時(shí),他們立即定位到了問(wèn)題:在bug***出現(xiàn)之前、已經(jīng)被 運(yùn)行的一個(gè)數(shù)據(jù)轉(zhuǎn)換程序。有了這個(gè)信息,我們能夠找到其余的臟數(shù)據(jù),并修復(fù)該bug。
程序維護(hù)人員一直是這樣做的:局部偵探、局部歷史學(xué)家,偶爾地扮演成開發(fā)人員。他們也是軟件考古學(xué)家(深挖打了拙劣補(bǔ)丁的代碼層)和精神病專家(搞清楚比你先來(lái)的開發(fā)人員的動(dòng)機(jī))。
當(dāng)我最終做新開發(fā)工作時(shí),我很開心得到“提拔”,因?yàn)樵诰S護(hù)小組待過(guò)之后,目前這份工作是如此地輕松。或許這是你調(diào)入開發(fā)的真正理由:隨著年齡的增長(zhǎng),你開始失去優(yōu)勢(shì),你沒(méi)有被下放;相反,你被調(diào)到了不能做任何有害事情的工作上——新的開發(fā)工作。
原文鏈接:http://www.labazhou.net/