在我們當中的許多程式人,最初踏入程式設計的領域,是基於對程式設計的喜愛。程式設計是一項十分能產生樂趣的活動,有著讓人無法自拔的魔力。

為了享受創造的樂趣而投入程式開發
我還記得就讀高中的時候,在某次月考前夕,好不容易先把隔天要應考的科目準備完畢,然後就趕緊衝到電腦前面打開電腦,開始寫起程式來。

即便夜已深,而且明天有重要的考試,但仍舊著迷一般地,自動鑽進程式碼構築出來的虛擬世界裡,樂此不疲。程式設計彷彿成了治療考試壓力的最佳良方。

細究起自己之所以喜歡上設計程式,最大的原因應該是透過程式設計所展現出來的創造力量。透過程式設計達成的創造是一種很特別的形式,因為它完全是虛擬的。我們所寫下的程式碼,雖然沒有物理的存在,卻又能夠讓程式的使用者,產生真實的體驗及感受。

相信許多程式人都和我一樣,初入門程式設計的技巧之後,最想做的事情就是撰寫電腦遊戲。背後的主要原因,當然不是為了想玩自己撰寫出來的遊戲,而是為了要體驗身為造物者的那種感覺。做為電腦遊戲的創造者,你創造出遊戲中的每一項事物,舉凡角色扮演遊戲中的一草一木,射擊遊戲中每一關的大頭目,甚至是俄羅斯方塊中的方塊造型,完全都操控在你的意念之下。透過程式設計的活動,你賦予這一切生命,並使它們活躍──在你的遊戲裡,你就是上帝。電腦遊戲的程式設計,無疑的是這種虛擬形式的最佳詮釋。

對我來說,透過撰寫程式所產生的虛擬玩意,能夠進入別人的生活,並且對這部分產生某種真實的影響,就是撰寫程式所能獲得的最大樂趣。

當興趣變成工作,逐漸無法獲得成就感
每個喜歡程式設計的人,不盡然都是為著相同的理由,但是,仔細回想,在學習程式設計的那段時日裡,我們心中充滿著對程式設計的熱情,支持我們投入大量的時間,一點一滴地積累程式設計的經驗及技巧。即使程式設計不是我們的工作,我們也把它當做興趣一樣去經營,即使占去許多生活的時間,也不覺辛苦。

有一天我們踏入了職場,或許成了所謂的「程式設計師」或「軟體工程師」。程式設計也從業餘的興趣成了專職的工作。我們也許會發現,自己昔日愛上程式設計的那個原因,在專業的軟體分工體系下,早已消失殆盡。在這樣的環境下,每個人各盡其職,扮演指定的角色。或許是由產品經理決定產品的規格及長相、架構師決定整體的架構、系統設計者設計系統中的類別介面及互動的方式,至於程式撰寫者,則依據設計進行實作。在這樣的工作模式下,許多程式設計者所追尋的快樂元素,都已不復存在。

有些程式設計者喜歡的是天馬行空的自由,而有些程式設計者和我一樣,喜歡的是創造的感覺,但很可惜,在常見的開發工作中,我們並不容易從中獲取這樣的樂趣,程式設計者不再能夠自己決定想做什麼,我們或許失去了某種型式的自由,也失去了某些創造的感覺。這或者就是一種興趣受到工業化後的結果吧。

也許你發現了,或者沒有發現,自己對程式設計的那份熱情日益消退,因為它成了工作的一部份。一方面因為工作帶來的壓力,一方面也因為自己在工作無法取得自己想要的元素。於是,漸漸的,程式設計成了負擔,你猛然發現,它再也不是治療壓力的良方,反而成了製造壓力的來源。你開始不喜歡在下班時間撰寫程式,甚至希望撰寫程式的時間愈短愈好。支持你繼續撰寫程式的動力,不再是熱情,也不再是能夠享樂於其中,而是經濟的來源,或是在職場中的職務升遷。

我想,這應該是一名程式設計者所會遭遇到的嚴重困境之一了。

用更多的努力拓展對程式開發的興趣
程式設計這一項活動,需要以熱情加以灌溉,才容易有所成長及茁壯。倘若程式設計這門學問有個終極的「道」,那麼我相信,你必須投入非常多的時間,才能在通往這個道的路上往前邁一小步。你得投入許多的時間,經歷許許多多看似平凡無奇的事情及經驗,才能有所領悟。

或許程式設計領域真有天才,但我寧可相信許多在這個領域中出類拔萃有所成就的人,他們獲得這樣的成績,來自於熱情而非天分。只有對程式設計懷著高度熱情的人,才能以此驅動自己投入更勝於常人的時間及心力。不論是用於技巧的反覆鑽研,或是錯誤的嘗試,最後都將轉化,成為在不斷精進這門學問的養份來源。

喪失對程式設計的熱情,之所以能造成一名程式設計者極大的傷害,原因便在於此。當你的興趣消退,便不再願意投入更多的時間,等於間接地切斷精進養份的供給。或許你就只能在原地踏步,反覆做著自己已經熟悉的事情,卻難以再上一層樓。即使從現實的角度來看,你的薪資也難以隨著能力的提升而調漲,職場中向上的動力也有所不足。

我也曾身陷在這樣的泥淖困境中,或許是在自己程式設計的生涯中的一大低潮。有一天,我突然發現自己其實是失去了熱情,錯過了當初那種想要創造一些東西、改變許多人生活的動力,因為現實生活中的許多工作,早就壓得自己喘不過氣來。

要拯救自己脫離泥淖,就得找回消逝的熱情,要找回這種特質,並不是讓自己遠離撰寫程式的圈子、減少程式設計的工作量,而是重新歸位到對程式設計熱情的發源地。

回歸初衷,為了自己的喜好而創作
例如,我開始在工作之外開發一些小東西,這些規模都不大,但做的都是源自本身的想法。自己從頭到尾包辦了所有的工作,沒有專業的分工,我既是產品經理,也是系統設計者,同時撰寫程式碼以及測試。每個不同的想法都會需要一些不同的新技術,而且在開發的過程中,有機會接觸到這些新的技巧。而更重要的是,這像極了最初開始學習撰寫程式時的模式。自己想到什麼就寫些什麼,既沒有規格也沒有必須完成的期限(所以也沒有壓力)。有趣的小東西可以發送給朋友,甚至是公開給大眾試用。這個過程與其說是在嚴肅的開發,不如說是在恣意玩樂,我可以盡情地操弄自己隨心所創造出來的玩意兒。

慢慢的,我彷彿又拾回昔日從程式設計中所獲得的樂趣。同時我也發現,重新燃起的熱情,也從工作外感染回工作內,沖淡許多因為工作壓力所帶來的一些不愉快。甚至我發現,即使是為了工作的關係而撰寫程式碼,自己也能樂在其中,沉浸滿足於那種解決問題的成就感。寫程式的時間變得更多,人卻更快樂了。

工作難免為了五斗米折腰的壓力所迫,必須做些自己或許不甚願意做的事情。但是,我們最初之所以想成為一名程式設計者,多半都是基於自己對程式設計的喜愛。千萬別讓工作磨損了這份熱愛,仔細回想喜歡程式設計的初衷,在工作以外,選擇一個沒有壓力的方式,重新體驗多年前讓你沉迷的那種感覺,你不但能重新找回對程式設計的熱情,也會重新發現工作中,也有能讓自己快樂的地方。

作者簡介:
王建興
清華大學資訊工程系的博士研究生,研究興趣包括電腦網路、點對點網路、分散式網路管理、以及行動式代理人,專長則是Internet應用系統的開發。曾參與過的開發專案性質十分廣泛而且不同,從ERP、PC Game到P2P網路電話都在他的涉獵範圍之內。

熱門新聞

Advertisement