消失的程式熱情?


iThome 網站首載:消失的程式熱情?

如果詢問程式人,從事程式設計有哪些必備要素,答案必然包含「熱情」!熱情可推動程式人不斷學習前進,驅使我們的付出遠超過報酬,不斷地追求極致;然而經常地,許多程式人吶喊著「我的熱情到哪裡去了?」更多時候是程式人沒有察覺,只是步調日復一日,感動越來越難,熱情一點一滴地消逝...當熱情不再,就不會願意為程式設計付出更多時間,任憑年歲增長,最後造成對程式人終身的傷害。

工作以外的程式設計

許多程式人當初進入程式設計領域的理由都很單純,通常不是為了工作,也不是為了金錢,許多人甚至講不出理由,更多情況下這是一種著迷心態,吸引我們投入大量時間,這種可不斷驅動我們前進的熱力來源,稱之為熱情。無論如何,熱情通常是自發性、具有掌控、實現與創造成分,熱情會有壓力,但不是來自於被指派工作的壓力,許多時候將雙手放在鍵盤上,只是為了舒緩生活、課業或工作上的壓力,這也是許多程式人都有過的經驗。

當自發性、掌握、實現與創造成分越來越少甚至不存在時,無論我們有意識或無意識地,熱情就會一點一滴地消失,這往往發生在步入職場,或程式設計從興趣成為專職之後,這意謂著許多時候程式設計活動是被工作驅使而非自發進行;無論工作整體來說是否有創意,在職場工作專業分工下,我們往往只能單調地完成手中被分配到的任務,不再能自由地掌控、實現心中的想法;為了順利完成工作,標準流程消除了意外性,多數分工體制下並不允許創意...日復一日地循環到最後,能支持程式設計的理由就只剩下經濟來源,或者因想逃離熱情不再的程式設計而期待的昇遷。

不久前網路上有過一系列言論談到「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說過的「邊開火邊移動有兩個意義,你必須爭取時間,另外每天都得要前進,你遲早會贏的」,如果我們離開了,那麼熱情才是真正地一去不回。