軟體開發如同越獄

aqee發表於2012-09-10

  如果說這世界上有一種東西太多了,那它就是廣告。如果說這世界上還有另外一種東西太多了,那就是對軟體開發的類比。儘管如此,今天我還是要編造一個。你知道軟體開發像什麼嗎?它像越獄。

  回想一下你最喜歡的越獄型別的電影,不論是《大逃亡》、《肖申克的救贖》,還是享譽海內外的電視劇《越獄》或者是《勇闖奪命島(the Rock)》(不好意思,這不是越獄,而是關於潛入監獄的)。但這跟我們有什麼關係?

“我們都是來自五湖四海,為了一個共同的革命目標走到一起來了。”

  在一個越獄團隊裡,有一夥人是專門負責挖地道的,另一夥人是負責清除挖地道的痕跡的,還有一夥人是負責弄假身份證和假髮的——一旦越獄成功就需要用到這些。在影片的前半部分,你毫無例外的能找到一幕場景來證實他們起初是多麼的相互討厭。但一旦達成了越獄的共識,他們立即變成了能為對方兩肋插刀的兄弟。

  在一個典型的開發軟體的組織裡,程式設計師,市場銷售,業務經理,管理人員,以及投資者,這是一群不會有第二種理由能把他們聚到一起的人。它不次於任何世界上最奇異的家族組成。然而,這最終的目標——成為市場霸主,百萬美元的收入,或者僅僅是為了取悅使用者——這以足夠讓這群奇異組合的人在最高強壓力的環境形勢中共同度過一年半載。週末取消了,節假日忘了,你的孩子在眾人面前指著你說“這個臭臭的傢伙偶爾會到我家來換內衣,而且衝著我們大呼小叫”,這些全是為了軟體。

一夥敵對勢力百般阻撓越獄

  在越獄電影裡,總有一批獄警在防範犯人越獄。我們通常會看到的一幕是另外一夥人企圖越獄結果失敗了。我們多少會發現,這些獄警多少有些愚蠢。

  相似的,你的對手也在堅持不斷的試圖阻止你從將要釋出的偉大的軟體中獲取豐厚的回報。這對手可能是市場上的一家競爭公司,或是公司內的某一個部門。不管怎樣,你的相當大的一部分精力被消耗在擔憂防範這些敵對勢力上。

不巧的是,敵對勢力都不怎麼聰明。

  是否還記得,在所有的這些電影裡,犯人是如何一次次的成功把挖隧道的泥土轉移的監獄院子裡,所以沒有人知道他們在挖洞。還有他們如何晚上把用襪子做的假人放到床上,這樣獄警就沒發現他們的缺寢。如果這些獄警稍微聰明一點,盡職一點,他們就會發現這些貓膩。但這種情況永遠都不會發生。

  你的軟體開發團隊的敵對勢力也跟此差不多。你很可能無時無刻的不在擔心他們已經搞清楚了你們在開發什麼——根據你網站上的一些描述,或廣告宣傳中洩漏出來的一些資訊。哦,天哪,也許他們在我們的測試環境中已經註冊了帳戶!你會擔心,他們一旦知道了你的產品,他們會在市場上打敗你,偷走你的錢、聲譽,以及伴隨它們而來的錦繡前程。但你擔心的這些事情可能永遠都不會出現。

成年累月的苦幹。

  毫不奇怪的事實:從監獄下面挖一條隧道,穿過圍牆,你需要做很多的工作。尤其是當你只有一把勺子的情況下。

  同樣的境遇,開發軟體也是一個苦力活。無論你有多少開發經驗、理論指導、開發工具,你最終難免少不了昏天黑地的敲打鍵盤。完全不是一種讓人興奮的運動;也許你寧願用一把勺子去挖穿一堵牆,也不願重新整理你程式碼裡密碼重設的邏輯。儘管如此,為了目標必須做這些,所以我們編呀編啊編。

緊接著是驚心動魄的一刻。

  當犯人最終逃出監獄時會發生什麼?最不想看到的事情全都出現:有人意識到他們的假身份證永遠等不到了,有一個警察模樣的人正站在他們集合點的前面,警察和警犬的聲音從幾百米外的地方傳來。

  軟體的釋出與此很相似。本以為是一個歡欣鼓舞的時刻,結果情況急轉直下,生產環境當機,谷歌不知什麼原因拒絕收錄你的網站,系統中的一個bug導致多收了使用者10倍多的錢。

萬歲,我們成功的越獄了,一切順利!除非事情沒按這樣發生。

  讓人驚奇的是,在所有的老調重彈的越獄模式電影中,在影片的末尾,故事開始出現分歧。有些結局是高興的,所有人都獲得了自由。而另一些電影中,沒有一個人逃脫。剩下的一些電影中兩種情況混合到一起,一些人逃出去了,餘下的人要麼被抓住,要麼被打死,要麼被警犬咬住不放。故事的結局通常不會是過度沮喪的,因為還要留一些拍續集的情節線索。

  軟體開發也是這個套路。結局有高興的,不高興的,或喜憂參半的。世界就是這樣,儘管我們做出了很大的努力,付出了很多犧牲,但不必一定能換來成功,所以,我們應該把重點放到軟體開發自身的過程上。我們在其中獲得了樂趣,我們相互關懷,相互學習。我們應該明白,雖然最終的成敗與否帶有一些靠天的成分,但我們在做優秀的工作、開發傑出的軟體過程中獲得的滿足不會因此而減少。

  如果世界正向我們預期的方向運轉,那是再好不過。如果不是,至少我們的續集有了一個很好的基礎。

英文原文:Building Software Is like Escaping from Prison

相關文章