最會回答問題的那個男人:Stack Overflow 傳奇人物 Jon Skeet

| |

求解!寫程式遇到問題的你在搜尋欄輸入關鍵字,或許因此造訪過 Stack Overflow 這個專為程式開發相關問題所設計的問答網站(欲知詳情歡迎收聽《星箭廣播》102 集——傳說中,工程師沒有這個網站就不會寫程式(ft. Richard)),那我大膽推測,你有滿高的機率會被 Jon Skeet 的回答所拯救。

2018 年 1 月 14 日,Jon Skeet 在 Stack Overflow 的 reputation 超過百萬大關,這個成績是前無古人後無來者。他在十年間回答超過三萬個問題,最高峰時每個月平均回答將近 800 個問題。他還被封為 Chuck Norris of programming,在工程師圈內的影響力無庸置疑。1

Jon Skeet 在 2008 年 9 月註冊成為 Stack Overflow 使用者,在 2018 年 1 月 14 日 reputation 破百萬大關,十年間回答了超過三萬個問題。(來源: Stack Overflow )
Jon Skeet 在 2008 年 9 月註冊成為 Stack Overflow 使用者,在 2018 年 1 月 14 日 reputation 破百萬大關,十年間回答了超過三萬個問題。(來源: Stack Overflow )

除了持續在 Stack Overflow 回答問題,他堪稱「時間管理大師」(當然不是貶義啦)的斜槓生活也是話題——正職是英國 Google 的資深軟體工程師,資歷近 14 年;出版過好幾本 C# 著作;經營部落格並持續活躍於技術社群。

打電動的孩子不會變壞:被遊戲領進門的 coding 人生

儘管今年 45 歲的 Jon Skeet 不缺值得說嘴的事蹟,但他 10、11 歲那時候為家中電腦寫出程式語言 Logo 的解釋器(interpreter)卻是他 coding 路上最自豪的紀錄。

Jon Skeet 的第一台電腦:ZX Spectrum 48k。
Jon Skeet 的第一台電腦:ZX Spectrum 48k。(來源:By Bill Bertram – Own work, CC BY-SA 2.5, )

Sinclair 的 ZX Spectrum 是他的第一台電腦,而第一次寫程式的 Jon Skeet 才七歲,自己鑽研電腦使用手冊寫出射擊遊戲,玩家可以上下移動飛行器攻擊隨機出現的外星人。現在回頭看遊戲設計非常陽春,但 Jon Skeet 回憶,「你控制那艘小小的宇宙飛船,電腦對你輸入的程式碼做出反應,當時對我來說就是件大事,真的太神奇了。」

寫出遊戲後,或許是「無知即無畏」,他接著想在家裡的 Spectrum 電腦重現 Logo ,但他完全沒有意識到這個難度跟遊戲是天差地別,需要大量活用海龜繪圖(Turtle Graphics),非常考驗他對三角幾何學的理解,遠遠超前學校的授課進度,後來他又再次靠著電腦的使用手冊成功做到。

而這種自學成才的能力,可能是「內建」的—— Jon Skeet 主修動物學的老爸當時擔任健保單位的主管,竟也自學寫出一個符合醫療人員使用需求的資料庫,所以兒子把他現在的能力歸功於自家「無極限的好奇寶寶」基因,加上對於越級打怪都沒有想太多(直接一點說,是沒什麼概念),沒有心魔的干擾更容易達成目標。

「我沒那麼神,但我也不是冒牌貨。」

跟玩遊戲有點像,Jon Skeet 的信仰是有趣(fun)至上,對於影響力更大、但不那麼有興趣的任務能免則免。這也反映在其職涯——大學主修數學還以為自己會一路深造,但發現自己不是這塊料,並沒有擅長到能讀博士,才改攻讀電腦科學碩士學位。他不諱言自己一向隨心所欲,不想為五斗米而寫程式,所以在 Google 待了 14 年的他沒有擔任主管職,而是以 IC(individual contributor,獨立貢獻者)的角色持續產出。

其實他接過半年的管理職,但發現坐在這個位置上拿捏同理心的分寸並不容易,後來就退回原位。「我覺得不應該要求工程師在某個階段就得成為管理者,有些人單純做個工程師會快樂很多、效率也更高,但很多公司在升遷制度上還是犯了這個錯。」Jon Skeet 認為,隨著歷練越深,在比別人更擅長或更有經驗的領域,不論是寫程式或寫文件都助於解決問題。

身為公認的頂尖工程師,Jon Skeet 也曾踩過時區差異的坑,害單元測試失敗,不過這倒是催生他開發 .NET 的日期和時間 API 替代方案 Noda Time,彌補原有的缺陷並降低使用複雜度。所以當外界總是聚焦他一長串的吸睛成就,他也不厭其煩地強調,大家太強化這些浮誇的光環了。

雖然別人的盛讚(而不是那些開玩笑的神化)一度讓 Jon Skeet 「自我感覺良好」,但又明白自己真的沒有這麼神,於是在矛盾的情緒中來回掙扎;不過後來他釋懷了,畢竟自己確實激勵許多人對程式的熱忱,而他分享那份出於喜歡,在大小事都秉持全心投入並享受其中的態度,才是「神話」背後最為日常且真實的。像是他 2019 年開始學打鼓,即便自認打得很差,但一邊為電子鼓組寫 code 也獲得很多樂趣;而且他發現接觸鼓之後,聽音樂比以前更常辨識出鼓聲的段落。

曾經因為在 Google 工作陷入自我懷疑的 Jon Skeet ,條理清晰的剖析他的「冒牌者症候群」疑似症狀後,確定了自己並不是冒牌貨,便開始學著不把成就歸於運氣,坦然說出他是有意識的努力,這讓大神形象又親民生動許多。

跟解答之神學提問

Jon Skeet 之所以堅持在 Stack Overflow 解答,是因為他發現問答性質很適合自己的寫作風格,而且回答問題也有助於精進自己作為工程師的專業能力。他在多個訪談中反覆強調,「溝通」是軟體開發過程中最難卻最關鍵的技能,尤其佔據資深軟體工程師工作的很大一部分,「就像 coding 本身也是在溝通,只是對象除了電腦,還有之後檢視程式碼的所有人。」所以他提醒開發者不要過度專注在技術,卻丟失了對文字或與人交流的熱忱。

如果還不熟悉一門程式語言,他建議先從像是 console apps 入門,而非 web 或 mobile apps。他理解在如今快速變化的趨勢下很容易一頭扎入摸索全新的技術,自己也不例外,不過一旦發現卡關,他會選擇先抽離做其他嘗試。因為長遠來看,他發現在軟體開發領域,「先學會走路再跑步」的生產力會更高,他也提醒要保持「滾動式調整」,觀察自己的產出和效率運用,找到進步的關鍵。

根據統計,Jon Skeet 的回答對菜鳥的幫助最大。(來源: Stack Overflow )
根據統計,Jon Skeet 的回答對菜鳥的幫助最大。(來源: Stack Overflow )

對於剛開始接觸程式語言而受挫的新手,Jon Skeet 的建議是,如果興趣不減或是越挫越勇,那就向外求解吧,不論是看技術部落格或是請其他人指點都好,有時候透過局外人的眼睛能找到癥結點。當然,換個程式語言試試也是一個方法。

但求解的藝術也很重要,Jon Skeet 認為提不出一個好問題的原因在於只考量自身的需求,卻忽略了怎麼提問既能幫助自己,又能幫助有相同困擾的人;那該如何提出一個好問題呢?他寫的〈WRITING THE PERFECT QUESTION〉提供了滿滿的實用建議。畢竟,沒人能比他更有說服力了吧?

資料來源:
Cover Story: The chuck norris of programming
Thanks a Million, Jon Skeet!
Jon Skeet Facts
Jon Skeet: The ‘Chuck Norris’ of programming
Podcast #123 – Jon Skeet Wants You To Be a Feminist
A Conversation with Jon Skeet: The Chuck Norris of Programming, on the Yellow Duck Podcast
Episode 40 – Noda Time with Jon Skeet
Episode 170 | Jon Skeet – Awesome, Humble, and Human
Coding for fun with Jon Skeet
IMPOSTER SYNDROME (PART 1)


  1. 老牌動作演員 Chuck Norris 是歐美知名的網路哏,而鄉民也類比 Jon Skeet 為工程師界的 Chuck Norris ,對其大神地位有很多浮誇又搞笑的形容,像是這篇〈Jon Skeet — The Chuck Norris of Programming〉就提到:Jon Skeet 可以除以零;當 Jon Skeet 的程式碼無法編譯時,編譯器會道歉;世界上只有兩種類型的工程師——優秀的工程師和 Jon Skeet 以外的工程師。 

(文章代表圖:Rob Allen via Flickr

本文依 CC 創用姓名標示 - 非商業性 - 相同方式分享 4.0 國際釋出
Previous

科技創業週報 #298:寫十年部落格和技術文章的心得

《星箭廣播》122 集——你坐牢,我發大財?美國監獄的科技生活,是有一張價目表的

Next
Share via
Copy link
Powered by Social Snap