如何寫程式到老?

入行近十四年,隨著年紀漸長,越來越了解興趣所在。期間雖然曾經歷其他類型工作,最終還是覺得研發最為合身。那麼,如何工作得順利快樂,並維持生活平衡、保障財務安全,就成為必須認真思考的題目。一天天生活的日常,很容易就會忽略當今世界變化之快,遠勝過往人類歷史。今日還成立的假設,十年後不知剩下多少。

筆者這一代不知幸或不幸,見證了人類史上又一個重要的大躍進。小時候用單色 CRT 螢幕、然後 16 色(跳過了 CGA)、256 色 VGA 640×480 是高解析度,用過一套中文系統叫零壹後來換成倚天,到高中時連網際網路都尚未普及,遊戲都是單機,上網用的是文字界面、升級成 Windows 3.1 到一直當機的 Windows 95,還要裝 Trumpet Winsock 才能上網。自此以後,一切都加速運轉。剛升高中時還在用 BB.Call,到小海豚手機、到 iPhone 發表到 Android (Android Open Handset Alliance 成立至今也還不到十年) 到如今人手一隻,核心數比筆電還多。機器學習、雲端,到現在語音助理成為日常,Amazon Prime Air 無人機送貨、Amazon Go 全自動商店、自動駕駛汽車成為現實…變化不但多,而且越變越快。不但難以預期明日,甚至了解今日,都在漸漸變得困難。

若從大環境看,首先要思考的,就是到告老還鄉為止,所在地是否仍有研發職務存在,以及數量多少、待遇、所需技能。如同 Mr. Saturday 今年稍早在臉書提到,這波科技革命,將大量減少工作機會,研發工作當然也在其中。將自動寫程式的程式實用化,已是必然。軟體吞吃世界的過程中,對軟體工程師首先會有顯著的需求增長,但隨著科技進展,終將也會進入淘汰範圍。若將數量顯著減少估計在二十年內發生,已經相當寬鬆,這表示以六十歲退休計算,目前四十歲以下的研發人員,都在曝險範圍內。

再縮小一點看,台灣在當前全球化潮流中,明顯不在領先集團。原先電子硬體產業榮景在規模經濟競爭下漸趨弱勢,新的強項尚未出現,而參與區域貿易協定又因國際地位問題而困難重重。猶記台商爭相前往大陸撈金的年代,其他產業筆者不熟,但軟體業大陸可是確定沒有的。現在的 BAT,百度、阿里巴巴、騰訊,都還不存在。而到如今,短短十數年,一樣頗有差距,只是角色已經反過來了。

若整體經濟情況不佳,導致收入偏低,以台灣當前社福狀況,沒錢是既不安全,也快樂不起來的。若再考慮平均壽命逐年延長,六十歲退休後很可能需面對三十年以上退休生活,財務如何支持也是課題。傳統養兒防老觀念往後已不再適用,因下一代很可能要面臨自身財務壓力,負責任的作法,是追求退休後財務上完全獨立。

在這波大潮衝擊下,貧富鴻溝將進一步擴大。若不幸沒有生為天才,也沒有富裕家庭或嫁娶對象,平凡人如筆者,便會直接面臨以上挑戰。幾個看來可能的策略,是這樣的:

1. 注意可取代研發職位的技術發展。例如 *aaS、人工智慧/機器學習,既然不是取代就是被取代,不如往取代別人那邊前進。再退一步說,如同 Kevin Slavin 在 2011 年的 TED 演說:How algorithms shape our world,世界將漸漸遵循各種演算法而運作,在這樣的變局中,「記得」這一切從何出發、了解背後的基礎原理,或許是重要的。科幻(其實也是科普)巨擘 Isaac Asimov 在經典的基地系列中預見這樣的未來:巨大、高科技的事物自行默默運作了無數年,提供重要功能,但漸漸趨於腐朽。而享受這些結果的人類,卻已遺忘當初是如何建造。

2. 戰略上,留在很可能被破壞式創新影響的公司,不如加入會破壞別人的公司。居安思危,留意產業發展,思考身處位置可能會被如何破壞。如果發現威脅者,試圖加入它,或說服自己的公司投資/買下它,或設法讓自己的公司也成為破壞者。同樣的思考,留在很可能會被拋下的台灣,也許不如秉持海洋精神,前往更有機會的國家工作。我們很難改變大局,但可以設法讓自己站在對的位置。

3. 增強個人能力。新技術不斷出現,理論卻相對少更動。類神經網路在 1943 年就已被提出,Donald Knuth 1962 年就開始寫 The Art of Computer Programming,同一年 Edsger W. Dijkstra 也開始寫下現在已成經典的手稿 EWDs。時間有限而學海無涯,培養學習的品味,投資在好的根基,會有助於快速理解新技術,也有助於更好的使用他們。EWD 在這件事上就寫得很好:

…Since breaking out of bad habits, rather than acquiring new ones, is the toughest part of learning,…
EWD1036

4. 成為資產階級:一旦財務自由,做不做研發也跟著自由,無償寫 opensource 回饋社會都沒問題。以資產累積資產仍是硬道理,但怎麼達成,各有巧妙不同,且大多數筆者都不熟悉,在此只好不論。可能方案之一是創業,然而若創業失敗很可能造成財務衝擊。更嚴重的是,時間一去不回,隨著年齡增加,對創業風險承擔能力會越來越低。所以這點,雖然確定有用,卻只能說努力再努力,不知如何達成。

即便順利在之後數十年變局中保持還過得去的景況,仍有其他問題要煩惱。例如川普前陣子當選後,有感而發囈語式地在個人部落格寫了篇,認為隨著貧富差距增加,以及「無條件基本收入」這樣類似「不勞而獲」的觀念難以推展,佔多數的貧窮者很可能會以從投票到暴力革命的各種方法對富人報仇。若僥倖沒落入貧窮,又不想被報復,加裝更厚的鐵門大概不會是好方法,因為總有富人會裝上更重更厚的。個人能力當然有限,但人們會為了自私的原因發聲,希望社會(朝向人們自以為的正向)改善,只要他們相信那個改善,最終對自己有利的話。身為平凡小蝦米,既然沒信心也不想要在亂世中生存,那就只能設法讓那個亂世不要發生。

所以,若要增加安穩寫程式到老的可能性,還必須關注公共議題,諸如設法減低貧富差距、確保階級流動、防止全球暖化(以免台灣淹掉大部分就很難工作了)等等。寫這些當然是扯遠了,但筆者想表達的是,從個人小事也可以想到大事,而自私不見得表示獨善其身。在這樣家庭重擔、經濟挑戰、大夥利字當頭往前衝鋒的年紀,也可抬頭看看四週,想想人生的優先權,甚至社會責任這種事。

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!
  • Link Chang

    我仍然堅信人月神話裡面寫的,軟體開發並沒有銀彈!至少在我現在的開發環境裡,變動的需求,我看不到自動化的可能性!