你不是軟體工程師!

發表於2011-05-16

你不是軟體工程師;你不是在建摩天大樓;你不是在建公路橋樑。

你是在從事園藝,培育花草。

你是一個軟體園丁。

你是否會在種下第一粒種子前就規劃你的花園,細節精確到定位每個葉子應該長在哪裡?人們是否會期望能精確的估算出這一年會開出多少花朵(或你的公司是否做出這樣的承諾?)?你的獎金會跟此掛鉤嗎?這些事情對於規劃一個摩天大樓來說完全合情合理的,可是當你在園藝這樣的事情上談論這些時,就顯的有點荒謬了。

你有可能會對未來一週你的花園會變成什麼樣有個很好的設想。你甚至可能會對一年後你的花園會變成什麼樣子有個大概的估計。但你不可能知道今後一年裡每個枝條,葉子,根莖和花朵會長在哪裡,如果你非要說你知道,那你肯定是在亂猜。

如果你在建一座大橋,或一棟大樓,在動工之前,你告訴我,你精確的知道在建成之後會是個什麼樣子——我會相信你說的。如果你說你能——聽起來有些瘋狂——精確的知道這個工程要用多少時間“完工”——我還是會相信你說的。這就是工程師要乾的事。但如果你在園藝這種事情上也對我這樣說,我會認為這是屁話。如果你告訴我要多僱幾個園丁來讓花草長得更快些,我會鄙視你。

為什麼會有這麼多的花園培植失敗,而卻有這麼多的摩天大樓建設成功?很多出乎你的意料,新建摩天大樓的技術不論是在歐洲還是在新加坡都很相似。培植花園卻不是這樣。每個花園都不同,因為花園所處的環境不同。即使一箭之地範圍外的花園也會具有十分不同的土壤構成。這就是為什麼即使最廉價的承包商也能建出跟最高報價的競標者同樣的大橋,但你的公司卻不能培育出跟Google的花園具有同樣品質的花園。

是否記得曾經公司裡某人在實施敏捷(Agile)園藝方法沒有獲得成功時,他會到處說,真是狗屎,根本不好用。的確,狗屎能用來培育花草,但這還不足以用來挽救你的花園。你的花園極有可能在你採取這些措施前就已經死亡——成為你的公司氣候變化的犧牲品。你是否是試圖在荒漠上種植雨林?你不可能培育出跟Facebook, Flickr, Twitter一樣的植物,你不可能指望著在不考慮你的公司氣候條件和園丁的水平的情況下讓這些奇花異草在你的花園裡生根。

跟摩天大樓不一樣,你的花園會長雜草。你的花園永遠沒有“完工”之日。並不是因為你不再需要在花園上進行投資,你的工程就完成了。如果你不堅持除雜草,你的花園最終會被雜草淹沒,很快你會發現全部砍到重新種植比修剪更容易。花園周邊的環境同樣也在不停的變化,一個疏於管理的花園將變得越來越難以存活。

在大多數國家,工程師需要有許可證才能去建一座大橋。園丁沒有這種政府操作的質量管理。不幸的是,園丁的技術水平是一個比其它因素更能對花園的好壞起影響作用的因素——所以,你最好要有能分辨魚目和珠子的能力。而只有有經驗的園丁才能在看到一個人時辨出他是不是個好園丁。一個沒有管理過園藝工程的人根本不會知道需要找什麼樣的園丁(因為他不懂這些)。所以,如果你不是一個園丁,但卻想招募到好的園丁,你應該讓一個你信任的有經驗的園丁去考察候選者。在教室裡你是學不到園藝技術的,所以,要考察這些候選者以前曾經培育過的花園,而不能只依據他們知道多少在學校裡學到的園藝理論(這些東西幾乎完全不能用於你的花園所出的氣候環境中)。

所有人都應該理解這裡的這種技術上的比喻,而且它是如此的合適,但現在我只是想用它來幫助那些對軟體的實現懷有不現實想法的非技術人員。

我是軟體園丁。

你也是。

原文:chrisaitchison    譯文:外刊IT評論

相關文章