如果詢問程式人,從事程式設計有哪些必備要素,答案必然包含「熱情」!

熱情可推動程式人不斷學習前進,驅使我們的付出遠超過報酬,不斷地追求極致;然而經常地,許多程式人吶喊著「我的熱情到哪裡去了?」更多時候是程式人沒有察覺,只是步調日復一日,感動越來越難,熱情一點一滴地消逝……

當熱情不再,就不會願意為程式設計付出更多時間,任憑年歲增長,最後造成對程式人終身的傷害。

工作以外的程式設計
許多程式人當初進入程式設計領域的理由都很單純,通常不是為了工作,也不是為了金錢,許多人甚至說不出理由,更多情況下這是一種著迷心態,吸引我們投入大量時間,這種可不斷驅動我們前進的熱力來源,稱之為熱情。

無論如何,熱情通常是自發性、具有掌控、實現與創造成分,熱情會有壓力,但不是來自於被指派工作的壓力,許多時候將雙手放在鍵盤上,只是為了舒緩生活、課業或工作上的壓力,這也是許多程式人都有過的經驗。

當自發性、掌握、實現與創造成分越來越少,甚至不存在時,無論我們有意識或無意識地,熱情就會一點一滴地消失,這往往發生在步入職場,或程式設計從興趣成為專職之後,這意謂著許多時候程式設計活動是被工作驅使而非自發進行。

而無論工作整體來說是否有創意,在職場工作專業分工下,我們往往只能單調地完成手中被分配到的任務,不再能自由地掌控、實現心中的想法。同時,為了順利完成工作,標準流程消除了意外性,多數分工體制下並不允許創意……日復一日地循環到最後,能支持程式設計的理由,就只剩下經濟來源,或者因想逃離熱情不再的程式設計而期待的升遷。

不久前網路上有過一系列言論談到「5:01 developers」,表面意義是5:01就打卡回家的開發者,然而5:01並非是指實際下班時間,而是個標籤,用來貼在那些沒有熱情的程式人身上。

在〈5:01 Developers, Family, and Excitement about the Craft〉文章中,James Curran給了個非常好的評論「我對創作擁有熱情,只是不認同我的謀生工作(DAY JOB)」,有時熱情並不是消失或用盡,而是被工作壓抑或掩蓋,此時找回熱情並不是離開程式設計,而是在工作之外寫些自己的東西,重新放任自己的想法,再度掌控、實現與創造所有的東西,感受雙手放在鍵盤上時逐步釋放與遠離的壓力,以及隨之而來的樂趣。

「5:01 developers」的一系列言論值得看看,就如同Scott Hanselman在〈Passion for the Craft〉中最後談到的「到最後,這一切都攸關熱情的尋找,以及如何保持熱情」。

擺脫對技術的焦慮與落後感

軟體技術不斷翻新,今日習得的,不久就會落後,甚至失去價值,各種技術新名詞同時不斷竄出。

在程式設計領域較特別的問題在於,資訊爆炸程度遠高於其他領域,有些程式人難免焦慮地不斷追逐,開始為了學習新技術而學習,在只求心安而漫無目地的囫圇吞棗之下,落後感終有一天壓得我們喘不過氣來,心中吶喊著「我為什麼要這麼累?」

學習大致上有幾個目的,為了解決目前發生的問題,為了更純熟地解決以前曾解決過的問題,以及為了解決將來可能發生的問題。第一個目的容易理解,然而許多人迷失在後兩個目的之中。

如果新技術學習帶來「哇!這東西可更漂亮解決我以前遇過的問題!」或者「嗯!我做的東西將來也有可能遇到這問題!」的感覺,那麼學習新技術就會帶來成就與穩定感。

但如果學習重心沒有放在解決問題上,就容易陷入技術的謎團。或許盲目追逐新技術的問題,往往發生在第三個目的,畢竟從現有的能力延伸,許多技術都是相關的,那麼,該從哪個點繼續下去?

事實上,問題即是答案。程式設計是由許多面向構成,而不只是個點,只要能保有一定步調前進,點跟點之間的連結就會自然涵蓋某個面向,因而從哪個點繼續下去,就沒有太大的差別。

保持步調的方式在於保持興趣,有興趣的技術是否為主流並不重要,時空更迭下,主流或非主流的地位不會恆久不變,在保有興趣前提下,將重點放在理解技術想要解決的問題,而不是技術的枝微末節。

焦慮與落後感有時也來自成長瓶頸。看著他人程式似乎有所領悟,自己動手卻什麼也寫不出來,就有如運動選手的「撞牆期」,似乎感覺到一道怎麼越也越不過的高牆。

可回想一下,這類撞牆期在過去其實出現過幾次,只不過每次突破後的下一道牆都會更高,如果不是,那表示我們沒有進步,既然想越過的牆越高,表示需要的墊腳石越多,這個時候可想想我們到底缺少什麼?思路不對?基礎不足?領域外的問題?還是經驗的缺乏?有時甚至就是別去想,只要如Joel Spolsky說的〈邊開火邊移動〉,只要「每天你都得前進一點點」就可以了。

向外感受社群的熱情
如果真的找不回熱情,那就去感受他人的熱情!

不少程式人也都有過的感覺是「看了xx之後,自己都熱血起來了」,這就是群眾的力量。熱情實際上是會相互傳染的,當我們走入一個有熱情的社群,就會看到不同人的思考角度,感受到他人心中世界的脈動,詫異於每個人旺盛的好奇心,甚至於對某些人總是在作某些傻事而感動,就如同Paul Graham在《駭客與畫家》(Hackers & Painters)中談到「沒有任何力量,比得上由一群有才幹的人,組成專注解決相關問題的社群」。

如果熱情漸漸消逝,孤獨感就會更令你無助,而找尋志趣相同的夥伴總是有所幫助,參加社群,試著先分享工作經驗與能力,與社群交流,漸漸地就會看到自己的盲點,瞭解熱情逝去的原因。

如果能與社群有良性互動,漸漸地就會帶來成就感,對社群提供有價值的貢獻,甚至與社群成員共同為了某件事而一同努力,有時會比找回當初程式設計熱情的出發點來得容易,甚至找到截然不同的熱情來源與方向。

有時候,程式人崇拜的不是某人的技術,而是熱情!思考著會是什麼樣的熱情,讓這些人能一路走下來,擁有現在的成就與能力。而社群活躍份子或是領導者往往擁有這類特質,相較於觀察遠在另一國家的大師或頂尖技術傳教士,參與社群並觀察活躍份子或領導者的言行舉止,就能近距離地感染到他們身上散發出來的熱情,如同《學徒模式》中〈尋找個人導師〉提到:「找尋走在你前方的人,努力向他學習」,無論社群中活躍份子或領導者技術是否勝於我們,在熱情漸漸消逝之時,他們就會是我們的個人導師。

給自己時間找回熱情
當感覺到熱情不在或消逝之時,最重要的是給自己時間,有時找回熱情的方式甚至是不要採取任何方式,只要給自己時間慢慢感受那種缺少熱情的麻木、孤獨與墮落感,不用去抗拒那種感覺,沉浸於這種感覺有時是在緩解壓力,在壓力減輕之後,我們才會看到原因,有時只是需要休息,有時我們需要的是作些簡單但可以掌控的事,有時需要的是夥伴……

無論是哪個原因,或者就算找不到原因,記得別沉浸太久,也不是離開這條路。如果我們曾經對程式設計擁有熱情,記得曼德拉說過的:「如果安於現狀生命就會失去應有的熱情」;也如同Joel Spolsky說過的:「邊開火邊移動有兩個意義,你必須爭取時間,另外每天都得要前進,你遲早會贏的」,如果離開了,那麼熱情才是真正一去不回。

專欄作者

熱門新聞

Advertisement