雖然這隻是筆記,但我仍然忍不住放上來和大家分享軟體給我們帶來的苦與樂。
很多大型軟體的開發如同一個焦油坑,很多大型強壯的動物在其中掙紮,他們大多數開發出了可啟動並執行系統,不過只有極少數項目滿足了目標,進度和預算要求。對問題的麻煩程度每個人都會感到驚訝,並且很難看清問題的本質。
單單一個程式有可能一兩個緊密能乾的人不用花多少時間就能搞定,不過程式要轉變成編程產品可以被任何人運行、測試、修複和擴充的程式,成本至少是經過測試程式的3倍。然而程式轉變成編程系統中的一個構建單元。需要滿足複雜的編程介面,符合預先定義的資源限制,以及測試等等,這些成本至少是獨立程式的3倍。
職業樂趣(很有道理,這也是我樂此不疲的動力):
- 這種快樂是一種建立事物的純粹快樂。如同小孩玩泥巴感受到的快樂一樣(感同身受,小時候玩小製作,大了就玩代碼,都是玩,帶來的快樂也是一樣)。
- 這種快樂來自於開發對他人有用的東西(協助他人就是最大的快樂)。
- 快樂來自於整個過程體現出來的一股強大的魅力――將相互齧合的零組件組裝在一起,看到它們以精妙的方式運作(這就是為什麼我當初選擇機械專業的原因)。
- 這種快樂是持續學習的快樂,它來自於這項工作的非重複特徵(以前不想當教師就是由於這個行業太多重複的工作了)。
- 這種快樂還來自於在易於駕馭的介質上工作。程式員的創造介質如此靈活,如此方便,創造的速度和代價如此的小(這就是當初我從機械專業轉行的動力了)。
編程的快樂不僅滿足了我們內心深處進行創造的渴望,而且喚醒了每個人內心的情感。
職業的苦惱(面對這些的確很無賴):
- 苦惱來自追求完美(不過我還好,我有一點強迫症,很適合這樣需要追求完美的行業)。
- 苦惱來自他人來設定目標、供給資源、提供信心(這莫過於最痛苦的事情,往往我們的項目是別人說了算,所以我很懷念在大學自主開發項目的時候,沒人給我設定界限,自己說了算,唉!!)。
- 尋找瑣碎的Bug是一項重複性的活動(我最怕重複性的勞動)。
- 當投入大量工作,產品即將完成的時候卻顯得過時了(IT行業更新速度快得讓人喘不過氣來)。
這就是編程,讓許多人痛苦掙紮的焦油坑以及一種快樂和痛苦並存的創造性活動。