程式者的胡言亂語
工作以外的程式設計
在我們當中的許多程式員,最初踏入程式設計的領域,是基於對程式設計的喜愛。程式設計是一項十分能產生樂趣的活動,有著讓人無法自拔的魔力。我還記得就讀高中的時候,在某次月考前的前夕,好不容易把隔天要應考的科目準備完畢,趕緊衝到電腦前面打開電腦,開始寫起程式來。即便夜已深,且隔天仍有重要的考試,但仍舊像著迷一般的鑽進程式碼構築出來的虛擬世界裡,樂此不疲。程式設計彷彿成了治療考試壓力的最佳良方。
細究起自己之所以喜歡上設計程式,最大的原因應該是透過程式設計所展現出來的創造的力量。透過程式設計達成的創造是一種很特別的型式,因為它完全是虛擬的。我們所寫下的程式碼,雖然沒有物理的存在,但是卻又能夠讓程式的使用者,產生真實的體驗及感受。我相信許多程式員都和我一樣,初入門程式設計的技巧之後,最想做的事情就是撰寫電腦遊戲。背後的主要原因當然不是因為自己想玩自己撰寫出來的遊戲,而是為了要體驗身為造物者的那種感覺。做為電腦遊戲的創造者,你創造出遊戲中的每一項事物,舉凡角色扮演遊戲中的一草一木,射擊遊戲中每一關的大頭目,甚至是俄羅斯方塊中的方塊造型,完全都操控在你的意念之下。透過程式設計的活動,你賦予這一切生命,並使其活躍,在你的遊戲裡,你就是上帝。電腦遊戲的程式設計,無疑的是這種虛擬形式的最佳詮釋。
對我來說,透過撰寫程式所產生的虛擬玩意,能夠進入別人的生活,對別人的生活產生某種真實的影響,就是撰寫程式所能獲得的最大樂趣。
每個喜歡程式設計的人,不盡然都是為著相同的理由喜歡上這個活動。但是,仔細回想,在學習程式設計的那段時日裡,我們心中充滿著對程式設計的熱情,支持我們投入大量的時間,一點一滴的積累程式設計的經驗及技巧。即使程式設計不是我們的工作,我們也把它當做興趣一樣的在經營,即使佔去許多生活的時間,也不覺辛苦。
有一天我們踏入了職場,或許成了所謂的「程式設計師」或「軟體工程師」。程式設計也從業餘的興趣成了專職的工作。我們也許會發現,自己昔日愛上程式設計的那個原因,在專業的軟體分工體系下,早已消失殆盡。在專業的軟體分工體系下,每個人各盡其職,扮演各自的角色。或許是產品經理決定產品的規格及長相,架構師決定整體的架構,系統設計者,設計系統中的類別介面及互動的方式,程式撰寫者,則依據設計進行實作。在這樣的工作模式下,許多程式設計者所追尋的元素都已不復存在。有些程式設計者喜歡的是天馬行空的自由,有些程式設計者和我一樣喜歡的是創造的感覺,但很可惜的,在常見的開發工作中,我們並不容易從中獲取,程式設計者不再能夠自己決定自己想做什麼,我們或許失去了某種型式的自由,也失去了某些創造的感覺。這或者就是一種興趣被工業化後的結果吧。
也許你發現了,或者沒有發現,自己對程式設計的那份熱情日益消退,因為它成了工作的一部份。一方面因為工作帶來的壓力,一方面也因為自己在工作無法取得自己想要的元素。於是,漸漸的,程式設計成了負擔,你猛然發現它再也不是治療壓力的良方,反而成了製造壓力的來源。你開始不喜歡在下班時間撰寫程式,甚至希望撰寫程式的時間愈短愈好。支持你繼續撰寫程式的動力,不再是熱情,也不再是能夠享樂於其中,而是經濟的來源或是在職場中的職務升遷。
我想,這應該是一名程式設計者所會遭遇到的嚴重困境之一了。
程式設計這一項活動,需要以熱情加以灌溉才容易有所成長及茁壯。倘若程式設計這門學問有個終極的道,那麼我相信,你必須投入非常多的時間,才能在通往這個道的路上往前邁一小步。你得投入許多的時間,經歷許許多多看似平凡無奇的事情及經驗,才能有所領悟。或許程式設計領域真有天才,但我寧可相信許多在這個領域中出類拔萃有所成就的人,其成就來自於其熱情而非天份。只有對程式設計懷著高度熱情的人,才能以熱情驅動自己投入更勝於常人的時間及心力。這些時間,不論是用於技巧的反覆鑽研,或是錯誤的嘗試,最後都轉化成為在這門學問上不斷精進的養份來源。
對程式設計喪失熱情,對一名程式設計者能造成極大的傷害,其原因便在於此。當你的熱情消退,便不再願意投入更多的時間,間接的切斷精進養份的供給。或許你就只能在原地踏步,反覆做著自己已經熟悉的事情,但卻是更難再上層樓。即使從現實的角度來看,你的薪資也難以隨著能力的提昇而調漲,職場中向上的動力也有所不足。
我也曾身陷在這樣的泥淖困境中,或許也是在自己程式設計的生涯中的一大低潮。有一天,我突然發現自己其實是失去了熱情,失去了當初那種想要創造一些東西,接著改變許多人生活的動力,因為現實生活中的許多工作,早就壓的自己喘不過氣來。
要拯救自己脫離泥淖,就得找回自己消逝的熱情,要找回消逝的熱情,並不是讓自己遠離撰寫程式的圈子、減少程式設計的工作量,而是重新歸位到自己對程式設計熱情的發源地。我開始在工作之外開發一些小東西,這些小東西規模都不大,但做的都是源自於自己的想法。自己從頭到尾包辦了所有的工作,沒有專業的分工,自己既是產品經理,也是系統設計者,同時撰寫程式碼以及測試。每個不同的想法都會需要一些不同的新技術,在開發的過程中,有機會接觸到這些新的技巧。而更重要的是,這像極了最初開始學習撰寫程式時的模式。自己想到什麼就寫些什麼,既沒有規格也沒有必須完成的期限(所以也沒有壓力)。有趣的小東西可以發送給朋友甚至是公開給大眾試用。這個過程與其說是在開發,不如說是在玩樂,我可以盡情的操弄我自己隨心所創造出來的玩意兒。慢慢的,我覺得彷彿又拾回昔日從程式設計中所獲得的樂趣。我也同時發現,重新燃情的熱情,也從工作外感染回工作內,沖淡許多因為工作壓力所帶來的一些不愉快的情緒。甚至,我發現即使是因為工作的關係而撰寫程式碼,自己也能樂在其中,沉浸滿足於那種解決問題的成就感。寫程式的時間變得更多,但人卻更快樂了。
工作難免為了五斗米折腰的壓力所迫,必須做些自己或許不甚願意做的事情。但是,我們最初之所以想成為一名程式設計者,多半都是基於自己對程式設計的喜愛。千萬別讓工作磨損了這份熱愛,仔細回想自己喜歡程式設計的初衷,在工作以外,選擇一個沒有壓力的方式,重新體驗多年前讓你沉迷的那種感覺,你不但能重新找回對程式設計的熱情,也會重新發現自己工作中能讓自己快樂的地方。Blogged with Flock
Posted at 10:53下午 八月 20, 2008 by Chien-Hsing Wang in General | 迴響[2]
星期三 八月 20, 2008

超級無敵心有同感!
從學校畢業,工作幾年之後,熱情消逝幾乎是難以避免而且會越來越顯著的情形。
要將興趣轉變成為吃飯的傢伙,而且能夠維持熱情一路走下去真的非常不容易。
「創造」與「分享」的動機,
就是令我甘願花費大把時間、上癮入迷而沈浸其中的初衷與本心呀~
由...發表 半路 on 八月 21, 2008 at 01:28 下午 CST #
看完了...真想哭啊...
由...發表 sleepnova on 九月 03, 2008 at 03:56 下午 CST #