敲得了代碼,做得好網(wǎng)站;熬得了通宵,加得了夜班;挨得住寂寞,愛得上男人;掙得多工資,拿得出存款。——他們就是“程序員”
史前史中,沒有別的場景比巨獸們在焦油坑中垂死掙扎的場面更令人震撼。上帝見證著恐龍、猛犸象、劍齒虎在焦油中掙扎。它們掙扎得越猛烈,焦油糾纏得就越緊,沒有哪種猛獸足夠強(qiáng)壯或具有足夠的技巧,能夠掙脫束縛,它們最后都沉到了坑底。
過去幾十年的大型系統(tǒng)開發(fā)就猶如這樣一個焦油坑,很多大型和強(qiáng)壯的動物在其中劇烈地掙扎。他們中大多數(shù)開發(fā)出了可運(yùn)行的系統(tǒng)――不過只有極少數(shù)的項目滿足了目標(biāo)、進(jìn)度和預(yù)算的要求。各種團(tuán)隊,大型的或小型的,龐雜的或精干的,一個接一個地淹沒在了焦油坑中。表面上看起來好像沒有任何一個單獨的問題會導(dǎo)致困難,每個問題都能獲得解決,但是當(dāng)它們相互糾纏和累積在一起的時候,團(tuán)隊的行動就會變得越來越慢。對于問題的麻煩程度,每個人似乎都會感到驚訝,并且很難看清問題的本質(zhì)。不過,如果我們想解決問題,就必須試圖先去了解問題。
所有的編程人員都是樂觀主義者?赡苁沁@種現(xiàn)代魔術(shù)特別吸引那些相信美滿結(jié)局的人;也可能是成百上千瑣碎的挫折趕走了大多數(shù)人,只剩下了那些習(xí)慣上只關(guān)注結(jié)果的人;還可能僅僅因為計算機(jī)還很年輕,程序員更加年輕,而年輕人總是些樂觀主義者——無論是什么樣的程序,結(jié)果是勿庸置疑的:“這次它肯定會運(yùn)行。”或者“我剛剛找出了最后一個錯誤。”
職業(yè)的樂趣
編程為什么有趣?作為回報,它的從業(yè)者期望得到什么樣的快樂?
首先,這種快樂是一種創(chuàng)建事物的純粹快樂。如同小孩在玩泥巴時感到快樂一樣,成年人喜歡創(chuàng)建事物,特別是自己進(jìn)行設(shè)計。我想這種快樂是上帝創(chuàng)造世界的折射,一種呈現(xiàn)在每片獨特的、嶄新的樹葉和雪花上的喜悅。
其次,這種快樂來自于開發(fā)對他人有用的東西。內(nèi)心深處,我們期望我們的勞動成果能夠被他人使用,并能對他們有所幫助。從這一角度而言,這同小孩用粘土為“爸爸的辦公室”捏制鉛筆盒沒有任何本質(zhì)的區(qū)別。
第三,快樂來自于整個過程體現(xiàn)出的一股強(qiáng)大的魅力―― 將相互嚙合的零部件組裝在一起,看到它們以精妙的方式運(yùn)行著,并收到了預(yù)期的效果。比起彈球游戲機(jī)或自動電唱機(jī)所具有的迷人魅力,程序化的計算機(jī)毫不遜色。
第四,這種快樂是持續(xù)學(xué)習(xí)的快樂,它來自于這項工作的非重復(fù)特性。人們所面臨的問題總有這樣那樣的不同,因而解決問題的人可以從中學(xué)習(xí)新的事物,有時是實踐上的,有時是理論上的,或者兼而有之。
最后,這種快樂還來自于在易于駕馭的介質(zhì)上工作。程序員,就像詩人一樣,幾乎僅僅在單純的思考中工作。程序員憑空地運(yùn)用自己的想象,來建造自己的“城堡”。很少有創(chuàng)造介質(zhì)如此靈活,如此易于精煉和重建,如此容易實現(xiàn)概念上的設(shè)想(不過我們將會看到,容易駕馭的特性也有它自己的問題)。
然而程序畢竟同詩歌不同,它是實實在在的東西;它可以移動和運(yùn)行,能獨立產(chǎn)生可見的輸出;它能打印結(jié)果,繪制圖形,發(fā)出聲音,移動支架。神話和傳說中的魔術(shù)在我們的時代已變成現(xiàn)實。在鍵盤上鍵入正確的咒語,屏幕會活動、變幻,顯示出前所未有的也不可能存在的事物。
編程的快樂在于它不僅滿足了我們內(nèi)心深處進(jìn)行創(chuàng)造的渴望,而且還喚醒了每個人內(nèi)心的情感。