軟件開發(fā)如同越獄
如果說這世界上有一種東西太多了,那它就是廣告。如果說這世界上還有另外一種東西太多了,那就是對軟件開發(fā)的類比。盡管如此,今天我還是要編造一個。你知道軟件開發(fā)像什么嗎?它像越獄。
回想一下你最喜歡的越獄類型的電影,不論是《大逃亡》、《肖申克的救贖》,還是享譽(yù)海內(nèi)外的電視劇《越獄》或者是《勇闖奪命島(the Rock)》(不好意思,這不是越獄,而是關(guān)于潛入監(jiān)獄的)。但這跟我們有什么關(guān)系?
“我們都是來自五湖四海,為了一個共同的革命目標(biāo)走到一起來了。”
在一個越獄團(tuán)隊(duì)里,有一伙人是專門負(fù)責(zé)挖地道的,另一伙人是負(fù)責(zé)清除挖地道的痕跡的,還有一伙人是負(fù)責(zé)弄假身份證和假發(fā)的——一旦越獄成功就需要用到這些。在影片的前半部分,你毫無例外的能找到一幕場景來證實(shí)他們起初是多么的相互討厭。但一旦達(dá)成了越獄的共識,他們立即變成了能為對方兩肋插刀的兄弟。
在一個典型的開發(fā)軟件的組織里,程序員,市場銷售,業(yè)務(wù)經(jīng)理,管理人員,以及投資者,這是一群不會有第二種理由能把他們聚到一起的人。它不次于任何世界上最奇異的家族組成。然而,這最終的目標(biāo)——成為市場霸主,百萬美元的收入,或者僅僅是為了取悅用戶——這以足夠讓這群奇異組合的人在最高強(qiáng)壓力的環(huán)境形勢中共同度過一年半載。周末取消了,節(jié)假日忘了,你的孩子在眾人面前指著你說“這個臭臭的家伙偶爾會到我家來換內(nèi)衣,而且沖著我們大呼小叫”,這些全是為了軟件。
一伙敵對勢力百般阻撓越獄
在越獄電影里,總有一批獄警在防范犯人越獄。我們通常會看到的一幕是另外一伙人企圖越獄結(jié)果失敗了。我們多少會發(fā)現(xiàn),這些獄警多少有些愚蠢。
相似的,你的對手也在堅(jiān)持不斷的試圖阻止你從將要發(fā)布的偉大的軟件中獲取豐厚的回報。這對手可能是市場上的一家競爭公司,或是公司內(nèi)的某一個部門。不管怎樣,你的相當(dāng)大的一部分精力被消耗在擔(dān)憂防范這些敵對勢力上。
不巧的是,敵對勢力都不怎么聰明。
是否還記得,在所有的這些電影里,犯人是如何一次次的成功把挖隧道的泥土轉(zhuǎn)移的監(jiān)獄院子里,所以沒有人知道他們在挖洞。還有他們?nèi)绾瓮砩习延靡m子做的假人放到床上,這樣獄警就沒發(fā)現(xiàn)他們的缺寢。如果這些獄警稍微聰明一點(diǎn),盡職一點(diǎn),他們就會發(fā)現(xiàn)這些貓膩。但這種情況永遠(yuǎn)都不會發(fā)生。
你的軟件開發(fā)團(tuán)隊(duì)的敵對勢力也跟此差不多。你很可能無時無刻的不在擔(dān)心他們已經(jīng)搞清楚了你們在開發(fā)什么——根據(jù)你網(wǎng)站上的一些描述,或廣告宣傳中泄漏出來的一些信息。哦,天哪,也許他們在我們的測試環(huán)境中已經(jīng)注冊了帳戶!你會擔(dān)心,他們一旦知道了你的產(chǎn)品,他們會在市場上打敗你,偷走你的錢、聲譽(yù),以及伴隨它們而來的錦繡前程。但你擔(dān)心的這些事情可能永遠(yuǎn)都不會出現(xiàn)。
成年累月的苦干。
毫不奇怪的事實(shí):從監(jiān)獄下面挖一條隧道,穿過圍墻,你需要做很多的工作。尤其是當(dāng)你只有一把勺子的情況下。
同樣的境遇,開發(fā)軟件也是一個苦力活。無論你有多少開發(fā)經(jīng)驗(yàn)、理論指導(dǎo)、開發(fā)工具,你最終難免少不了昏天黑地的敲打鍵盤。完全不是一種讓人興奮的運(yùn)動;也許你寧愿用一把勺子去挖穿一堵墻,也不愿重新整理你代碼里密碼重設(shè)的邏輯。盡管如此,為了目標(biāo)必須做這些,所以我們編呀編啊編。
緊接著是驚心動魄的一刻。
當(dāng)犯人最終逃出監(jiān)獄時會發(fā)生什么?最不想看到的事情全都出現(xiàn):有人意識到他們的假身份證永遠(yuǎn)等不到了,有一個警察模樣的人正站在他們集合點(diǎn)的前面,警察和警犬的聲音從幾百米外的地方傳來。
軟件的發(fā)布與此很相似。本以為是一個歡欣鼓舞的時刻,結(jié)果情況急轉(zhuǎn)直下,生產(chǎn)環(huán)境宕機(jī),谷歌不知什么原因拒絕收錄你的網(wǎng)站,系統(tǒng)中的一個bug導(dǎo)致多收了用戶10倍多的錢。
萬歲,我們成功的越獄了,一切順利!除非事情沒按這樣發(fā)生。
讓人驚奇的是,在所有的老調(diào)重彈的越獄模式電影中,在影片的末尾,故事開始出現(xiàn)分歧。有些結(jié)局是高興的,所有人都獲得了自由。而另一些電影中,沒有一個人逃脫。剩下的一些電影中兩種情況混合到一起,一些人逃出去了,余下的人要么被抓住,要么被打死,要么被警犬咬住不放。故事的結(jié)局通常不會是過度沮喪的,因?yàn)檫€要留一些拍續(xù)集的情節(jié)線索。
軟件開發(fā)也是這個套路。結(jié)局有高興的,不高興的,或喜憂參半的。世界就是這樣,盡管我們做出了很大的努力,付出了很多犧牲,但不必一定能換來成功,所以,我們應(yīng)該把重點(diǎn)放到軟件開發(fā)自身的過程上。我們在其中獲得了樂趣,我們相互關(guān)懷,相互學(xué)習(xí)。我們應(yīng)該明白,雖然最終的成敗與否帶有一些靠天的成分,但我們在做優(yōu)秀的工作、開發(fā)杰出的軟件過程中獲得的滿足不會因此而減少。
如果世界正向我們預(yù)期的方向運(yùn)轉(zhuǎn),那是再好不過。如果不是,至少我們的續(xù)集有了一個很好的基礎(chǔ)。
英文原文:Building Software Is like Escaping from Prison
本文來自:http://www.aqee.net/building-software-is-like-escaping-from-prison/