寫你所吸收的:林信良(良葛格)的生平與 20 年技術寫作之路

二十多年來,台灣軟體工程師遇到語法錯誤,在搜尋引擎找到的第一個能看懂的中文解方,往往指向同一個地方:openhome.cc,那是「良葛格」(林信良,1975–2022)的個人網站。

從 BBS 與論壇時代的筆記,到近二十部系統性技術著作;從昇陽教育訓練中心的講師,到長達十年、在《iThome 電腦報》寫下 459 篇專欄的自由作家。林信良以長期的自律與自省,示範了一名獨立技術人如何只憑扎實的理解與文字,持續陪伴兩代台灣軟體開發者的自學之路。


電機系的「逃兵」:放棄竹科坦途的非典型起步

1990 年代中後期,台灣半導體與積體電路代工產業正值爆發期,新竹科學園區的股票分紅吸引了全台頂尖理工人才。作為國立臺灣大學電機工程學系的畢業生,順理成章攻讀研究所並進入竹科成為「竹科新貴」,是當時社會普遍認定的黃金坦途。

然而,林信良在求學期間便清楚看見自己的偏好與局限。他在 2008 年接受《IT 人甘苦談》專訪時坦言:「大學時期只要是『電』字開頭的科目,成績都很爛。」電機系扎實的硬體與電路理論佔據了三分之二的課程,但他真正感興趣的,卻是那僅佔三分之一、純粹由邏輯與抽象概念交織而成的軟體世界。

當兵在金門站哨的夜晚,他盤點自身本錢與偏好。轉向資訊領域意味著必須放棄大學四年大部分的硬體所學,但他並未被沉沒成本困住。退伍後他做出令同儕意外的抉擇:離開台北,回到故鄉高雄加入一家僅有數人的小軟體公司,從月薪三萬元的基層程式設計師做起。

當時南部軟體產業資源相對匱乏,非資訊工程科班出身的他,必須直接在真實專案中面對底層技術問題。憑藉高強度的自學與實作,他在短短一年半內獲拔擢為研發副理,薪資調升至五萬三千元。

這段在基層摸索歷練的實戰歷程,確立了他終身依歸的職涯信念:

我不是沒有任何把握就轉彎。

他在專訪中提出著名的「十分哲學」:若當下的本錢是十分,轉彎哪怕會損失六分,只要能將留存的四分能力聚焦發揮、在目標領域放大成七至八分的效益,就有冒險轉向的資格;若無把握,就應當腳踏實地累積本錢,絕不盲目冒進。


上海交大與貴人相遇:從論壇筆記到官方教材

2003 年前後,在台灣經歷第一次網路泡沫破滅後的冷卻期,林信良任職的高雄小公司營運走下坡並出現裁員跡象。此前因工作接觸中國企業,他察覺到對岸工程師的技術底子極為扎實,簡體技術社群的討論深度亦超出預期。

出於強烈的好奇心與危機感,他毅然自請離職,前往香港參加港澳台聯合招生考試,考入上海交通大學計算機應用技術系攻讀碩士學位。

在上海求學的兩年間,林信良持續將弄懂的技術觀念整理成清晰明瞭的筆記,發布在當時台灣 Java 開發者的交流重鎮 JavaWorld@TW 論壇,網名定為「caterpillar」。

這段留學生涯促成了他生命中兩位關鍵貴人的相遇:

不久後,王森力邀他返台加入昇陽教育訓練中心擔任講師。面對長輩對他未待取得交大碩士學位便返台的惋惜,林信良展現出一貫清醒而務實的決斷:

我在該離開的時候離開,並沒有遺憾。

他也強調,Java 和物件導向的觀念,都是在交大時期打下的基礎,上海這兩年意義深重,絕對沒有白費。

進入昇陽後,他迎來嚴苛的備課考驗。第一次接手「Java 效能」課程,手邊完全沒有現成教材;他翻遍專著,只要看到與效能相關的章節就撕下來研讀。

這段高壓歷程讓他罹患胃潰瘍,但他交付的成果成為昇陽中文版 Java 效能課程的官方教材;拒絕二手嚼過的零散資訊、直探原始碼與規格的學習方式,也自此定調。


全職獨立作家的生存體系:規格書、自律與抗週期韌性

在台灣資訊產業環境中,優秀的資深工程師多半走向科技大廠資深架構師、技術主管或自行創業。但在離開昇陽之後,林信良選擇了一條極罕見的道路:回到故鄉高雄,以全職自由工作者(Freelancer)、獨立技術作家與企業顧問身分獨立運作逾十年。

自由作家的生活看似自由,實則仰賴高度自律。他以書籍寫作、企業教育訓練與翻譯維持生計,並摸索出一套可長期維繫的寫作與驗證節奏:

他的書籍簡介自述,內容來自「十幾年實務教育訓練中,匯整學員遇到的觀念、實作、應用等問題的經驗」——從學員的問題出發寫書,而非照抄官方文件。

這套方法論支撐他精準捕捉了二十年間的軟體典範轉移。在 J2EE 笨重繁複的年代,他早期推出《Spring 技術手冊》,讓台灣開發者看見 POJO 與輕量 IoC 架構的可能;隨後的《Servlet & JSP 技術手冊》透徹拆解 HTTP 請求生命週期與 Session 機制,是多次改版的長銷教材。

當典範轉向函數式,他又推出《Java SE 8 技術手冊》剖析 Lambda 與 Stream API,並跨入動態陣營撰寫 Python 與 JavaScript 手冊。他曾將《Java SE 6 技術手冊》全書開源於 GitHub,手冊亦長期發行簡體中文版——甚至在他辭世近三年的 2025 年,清華大學出版社仍發行《Java 學習筆記》第六版。

2017 年 Java 9 問世後,甲骨文將以年計的發布週期,全面縮短為每六個月發布一個版本。這項變更對全球技術圖書作者造成劇烈衝擊,一本耗時一年寫就的手冊往往半年就面臨過時風險,許多作者紛紛停筆。

面對快速迭代,林信良發展出一套模組化思維,將內容清楚拆分為兩個層次:

內容層次核心範疇改版因應策略
基石架構物件導向多型、JVM 記憶體模型、並行(Concurrency)作為全書長銷骨幹,不隨版本頻繁更動
漸進特性預覽語法(Records、Sealed Classes)、新版 API透過專屬章節與線上範例庫即時更新

這套模組化解耦策略,讓他得以從容應對每半年的版本迭代,一路改版至 Java SE 17 LTS,也持續推進 Python 非同步譯作與 Spring Boot 相關教材。


iThome 專欄十年百萬字:語言思維、說書人與工藝哲學

自 2012 年 4 月起,林信良受邀於《iThome 電腦報》開闢「程式人專欄」,直至 2022 年 11 月他驟然離世,整整持續了十年、459 篇專欄、累計超過百萬字。在這個專欄中,他褪去了技術手冊中瑣碎的 API 細節,將視野拉升至工程文化、認知科學與語言哲學的高度。

他在專欄中持續探討三個核心主題:

1. 語言形塑思維(Linguistic Relativity)

他的專欄反覆回到語言與思維的關係,呼應語言學中的「沙皮爾-沃爾夫假說」(Sapir-Whorf hypothesis):你使用的程式語言,會左右你拆解現實問題的方式。

在他 2022 年 11 月 17 日發表的絕筆專欄〈影響我的重大語言〉中,他回顧了影響其思維的幾門關鍵語言:Java 為他打下了系統化學習的基礎;Scala 融合物件與函數式的野心,則帶來首次接觸函數式典範的衝擊。

而在動態語言方面,JavaScript 的原型鏈鬆動了他基於類別的僵化思維,後來更影響了他打造玩具語言(toy_lang)時語法樹的實作。

談到 Haskell 時,他寫道:「由於從 Scala、JavaScript 看函數式,對我來說,總是有種隔著薄紗的朦朧感。」唯有深入純函數式 Haskell,透過代數資料型態與 Monad,才能徹底看清 map/filter/fold 的本質。他明言自己從未用 Haskell 做過任何東西,但正如他所說,「學習 Haskell 目的在於啟發」。

2. 認知負荷與技術說書人

林信良曾擔任過三屆 iThome 鐵人賽決審評審(含 2014 年的第 7 屆與 2021 年的第 13 屆),每屆耗費數週審查數百篇連載文章。在 2014 年發表的代表專文〈為技術元素說故事〉中,他一針見血地指出:

持續三十天寫程式給機器看很簡單……真正困難之處在於,你得願意持續三十天地設身處地為其他程式人著想,盡力讓他們能理解這三十天內呈現的技術元素。你總是得問:「換做是我,會想看完這三十天的故事嗎?」

這正是認知心理學所說的「知識的詛咒」:搞懂技術的工程師,往往無法想像不懂的人腦中在想什麼。他給出的答案不是炫技,而是設身處地為其他程式人著想,把「讓人理解」放回寫作的核心。

3. 設計原則與軟體工藝

在工程方法論上,林信良對業界把原則當教條的風氣始終保持冷靜。在 2015 年的〈設計原則五四三〉中,他開宗明義:「原則是為了看出程式碼有多麼 STUPID」,並批評死抱著 SOLID 等設計原則、「對這些原則抱以崇拜」卻無法落實的空轉——原則的價值在於幫你嗅出程式碼的壞味道,而不是牆上的裝飾品。

工程師的尊嚴不在於口號喊得多響,而在於能否誠實面對系統邊界,寫出簡潔、可維護的程式碼。


駭客玩心與空間幾何:3D 列印與 dotSCAD

在寫作與技術生涯的中後期,林信良展現了一名純粹駭客探索未知的玩心。他不再局限於商業框架,而是玩起 3D 列印,設計並公開分享迷宮、玩具等可列印模型,並將觸角延伸至計算幾何、碎形理論與 3D 參數化建模。

在接觸了開源 3D 建模語言 OpenSCAD 之後,他發現其變數不可變(Immutability)的純函數式特質,恰好能與幾何演算法完美結合。他利用閒暇時間打造出開源幾何運算函式庫 dotSCAD,有效降低了使用者在進行複雜曲面與幾何變換時的數學門檻。

這個開源專案已有其他貢獻者參與,在 GitHub 累積了超過 900 顆星,並獲 OpenSCAD 官方收錄為推薦函式庫。他在 GitHub 個人檔案的自述中引用畫家 Jackson Pollock 的話,然後接上了自己的註腳:

It’s all a big game of construction—some with a brush, some with a shovel, some choose a pen. —Jackson Pollock

…and some choose code. —JustinSDK


「毛毛蟲與挖土機」:Openhome 的共享遺產與數位長存

林信良的個人技術筆記站,最早架設於 caterpillar.onlyfun.net。「onlyfun」生動呈現了他寫程式的初衷——「唯有樂趣」。隨著內容跨足多種語言,網站定址為 openhome.cc,新版首頁上掛著一段自白:

我是一隻弱小的毛毛蟲,想像有天可以成為強壯的挖土機,擁有挖掘夢想的神奇手套!

這段話揭示了 caterpillar 的雙重隱喻:起步如毛毛蟲般卑微緩慢,但日復一日深挖知識,終能如開拓重機械 Caterpillar 一般,為自己與同行者開闢坦途。

在網站首頁原始碼的 <meta> 標籤裡,靜靜留著他寫給自己的準則:

Write what you absorb, not what you think others want to absorb.(寫你所吸收的,而非寫你認為別人想吸收的。)

他不迎合熱門行銷話題,每一篇筆記都是徹底咀嚼規格後的真實重構。這種平視讀者、謙遜分享的姿態,成為台灣技術社群公開筆記文化中,最為人熟知的一道風景。

2022 年 11 月林信良因病辭世後(享年 48 歲),社群湧現了深刻的感懷。許多人感慨:「我們這一代人在程式的路上,或多或少都受過良葛格各種形式的幫助。」國際社群亦在 dotSCAD 專案中開立標題為 “RIP Lin Xinliang (Liang Gege) 1975~2022” 的 Issue 致謝,該 Issue 至今未關閉。

為了保存這份共享遺產,社群自發展開鏡像備份。至今,openhome.cc 依然在網路上免費開放,繼續回應每一位踏入軟體領域的自學者。