動筆寫這篇專訪前,我想到自己多年前曾經看過一套拳擊漫畫《Big Hearts 生存在沒有拳王的時代》 【註 1】,第一集封面印著:
這又不是漫畫呀,所以看不到什麼必殺鐵拳啦!!
不過,更令人在意的是封面摺頁上作者的話:
為了取材而跑了好幾趟拳館,讓我注意到某件事。不管去幾遍都是千篇一律,看的的都是同樣的面孔,百年如一日的做著同樣的練習。當然練習內容會慢慢的加重份量,不過外行人是看不出來的。這個故事以時間而言會被批評過於平淡,或許,因為正是這樣的光景烙印在我腦海裡的緣故吧⋯⋯
羅泓武,1994 年出生於台南市,今年 24 歲,拳齡五年,噢,不是的,我們今天要講的是關於開發者羅泓武的故事。
想像一下,一個高中讀文組、大學讀公共行政系,不太確定自己以後要做什麼,甚至一度想當拳擊手的學生,是怎麼從按下一個線上課程廣告開始,在兩年內成為正職的工程師,還創造出新的程式語言?
2017 年 3 月,羅泓武曾經在 Medium 上撰文分享自學的過程,如今又過了超過一年半,他有新的體悟嗎?我們請他來跟大家分享。
沒穿過制服的學生
「不好意思,都是貓毛。」羅泓武打開 MacBook Pro,拍落鍵盤上的貓毛。
雖然他是在台南市出生,但大約在一歲、兩歲左右就隨家人搬上台北居住。談到成長過程中比較特殊的事件,一是沒讀過需要穿制服的學校,二是沒去過補習班。這兩個經驗在後來對他學習寫程式與工作產生了一定的影響。
之所以就讀台北大學公共行政系,羅泓武坦言,當時完全不知道自己的興趣,填志願時是從住家附近的政治大學政治系開始往下填。而且起初他以為自己可以靠著學測成績申請上大學【註 2】,沒想到卻「落榜」,「那時候心已經拉不回來準備指考【註 3】了。」他說。
自認不太擅長物理、化學,但數學還行,在被問到自己最感興趣的學科時,高中讀文組的羅泓武回答:英文。
羅泓武對英文感到拿手的原因,相信很多人也經歷過:玩線上遊戲。他覺得當時台灣的遊戲營運商做得不好,所以他都玩外國的伺服器、關注外國的最新消息,而在玩遊戲時,外國玩家也不太在意他的文法。
事後回頭看,英文扮演的角色顯得相當重要。他一開始自學程式語言的課程就是英文課程;他用英文寫部落格;在技術研討會演講也是用英文;他如今的老闆是英國人,跟同事的溝通也是用英文。
曾經想當拳擊手
2012 年,還在讀高中三年級的羅泓武考完學測後開始學習拳擊,原本想當拳擊手的他,在準備大學指考期間也沒有中斷練習,每週練習三天。就讀台北大學後有一段時間是在沒有教練指導的情況下練習。「不過這些可以不算啦。」他說。
「可能是因為分數低、沒考到自己喜歡的學校,可能是我不喜歡三峽,所以我幾乎沒有大學生活,朋友大多是來自拳館跟後來實習、工作時認識的。」既然沒有要認真過「標準版」大學生活,羅泓武開始把時間用來嘗試不同的事情 — — 用很認真的態度去嘗試。
到了 2013 年 1 月,羅泓武找到新的拳館和教練,開始重新學習拳擊,同一年的 4 月,他開始自學寫程式,這時的他全力投入練習拳擊,每週練習六天,包含跑步、重訓和拳擊訓練,一次練習四小時,其他時間大部分都花在自學寫程式。
同年 5 月,羅泓武參加新竹市長盃拳擊錦標賽,獲得 56 公斤級銀牌,11 月參加全國總統盃拳擊錦標賽獲得社會男子組 56 公斤級銅牌。不過,就在取得成績的同時,他也決定要放棄拳擊手之路。除了體認到自己跟那些從國中、高中就開始訓練的選手之間的差距,羅泓武也承認,「訓練過程實在太辛苦,」他接著說:「最難克服的是上場比賽的緊張感。大部分人沒練過拳擊或格鬥,可能不知道,雖然擂台只(比觀眾席)高一點,但你會感覺像是被關進一個籠子裡面,然後被繩子圍起來,而對方想要殺了你。」
「我其實沒有那麼想殺了對方,可是我必須幹掉他,不然就是我被幹掉。」
「那個壓力非常大,」彷彿是想起當年的壓力,羅泓武接著說,在技術研討會上用英語演講的壓力大概只有拳擊比賽的一半。
從那時候開始,他在拳館的練習就減半,進入群眾募資平台 flyingV 實習,開始當起工程師。
原本想創業,最後鍾情於寫程式
羅泓武接觸電腦的時間大約是國小三、四年級,那時家中有父母親用來工作的電腦,以及學校的課程,不過此時的他對電腦的認識跟其他人差不多,也沒有特別深的興趣,頂多用來玩遊戲。
那麼,何時開始出現轉變?
「其實我一開始感興趣的是創業。」羅泓武說。大學一年級的時候,有個朋友介紹他看「Inside 硬塞的網路趨勢觀察」和「TechOrange 科技報橘」等網站,勾起了他對創業的興趣,也因此去修了管理、行銷等課程,同時開始從 HTML 與 CSS 著手自學。「我覺得既然要創業,應該什麼都要了解,只是最後我反而喜歡上程式,創業什麼的就先不管了。」
羅泓武曾在文章中提到自己當初為了省錢,挑了一個免費課程來上,不過他沒講的是,之所以挑中該課程,其實也是因為看到網頁上的廣告。在自學大約半年之後,羅泓武加入 flyingV 實習,根據他的說法,實習一個月比先前自學半年學到的還多。
「我建議大家直接進入新創公司實習,比在學校上育成課程更有用。」
後來因緣際會,羅泓武甚至到當初自己常看的網站 Inside 實習,接著又在貝殼放大和愛料理擔任正職的工程師。就在這個時期,他開始接觸更多新的技術,並且在新的管理模式下工作,「Richard(Inside 共同創辦人、愛料理共同創辦人兼技術長)會研究新的技術和新的管理模式。」羅泓武解釋,因為這樣讓他開始了解外國公司工程師的工作方式。
創造程式語言「Goby」
2017 年年初,羅泓武開始進行一件一般工程師比較不會做的事:創造一個新的程式語言「Rooby」 — — 取自 Ruby 的諧音,還曾登上知名的 Hacker News 首頁。
「不過 Rooby 這個名字被罵翻了,所以改叫 Goby。」他笑著說。
Goby 的 GiHub 專案頁面這樣寫著:
Goby 是一個深深受到 Ruby 啟發的物件導向的直譯式語言,其核心是 100% 由 Go 語言實作。
為什麼要做一個新的程式語言呢?原本我以為他是為了要解決自己的問題,但沒想到他給我一個意料之外的答案。
從前在學習程式的時候,羅泓武一直有一個想法,就是至少要有一個業餘的專案是重做一個對他來說很重要的東西,例如一個網頁框架或程式語言。而網頁框架他已經在 Rails 專案做過一些貢獻,其他「小東西」也照著書本練習過,那麼下一步就要重新打造一個程式語言,他認為如果要從一個比較高的位置去了解程式語言,自己做一個會比較好。
「這是學習程式最好的作法嗎?」我問,羅泓武解釋:「它不會是最好的做法,因為如果你把時間成本算進來的話,它(做一個新的程式語言)可以瞭解很透徹,可是超花時間。所以他不是最好的做法。但如果你真的很想深入了解,這是一個學到最多的做法。」
我還是不死心,問他:「那 Goby 有解決你工作上的問題嗎?」
「它不會解決問題,相反的,它本身會製造問題,然後你去解決它。」「比如你會遇到程式語言的效能問題。一般在寫程式的時候,你不一定會在乎這個問題,因為那是做程式語言的人要處理的,但如果今天你就是那個語言的作者,這就變成你的問題,你得去解決。」「它提供一個持續讓你有目標去精進自己能力的方向。」
例如前面提到程式語言效能的問題,羅泓武分析,某個自己寫程式的方式如果拿來寫網頁、伺服器應用程式可能沒問題,但今天如果拿來寫程式語言的話,有些很細的東西會被執行上千次、上萬次,此時問題就會被放大。而這樣的問題是他以前沒遇過、不知道該如何解決的,此時的挑戰在於,如果你根本不知道有問題存在的話,根本不知道要從何下手。
「所以這也是靠社群裡的人幫我。」他說。
談到社群,羅泓武接著說,Goby 剛開始的時候會有很多人有興趣,想要嘗試貢獻程式碼,「會有新手來問:『我想貢獻,該怎麼做?』你必須去回答,如果沒有,對方很可能就不會再來了。」
羅泓武表示,自己儘量當一個好的專案發起人,把 Goby 當作一個大家都可以參與的學習專案,想做什麼練習都可以,只是他時間有限,有時也會去上課、看書,花在經營專案的時間就會減少。例如最近就只有一個日本人固定在貢獻,或是羅泓武前一陣子做比較多與 Goby 核心相關的開發,那能參與的就只有對這一塊很了解的人。
當然,羅泓武在打造 Goby 上也遭遇了一些挑戰,非科班的背景、過去自學的路徑選擇,使他缺乏一般科班出身工程師具備的知識,
「所以我現在沒有花那麼多心思在 Goby 專案上,因為我沒辦法給這參與的人他們要的東西。」羅泓武說自己最近在 Coursera 上演算法的課、看作業系統相關的書籍。他解釋,自學程式的模式大部分是從上層往底層,雖然是看個人想要學到什麼程度,他個人是想要打通往底層的道路。
寫作:工程師經營品牌的手段
羅泓武認為,寫部落格是一個經營個人品牌的手段,對工程師來說非常重要。以找工作來說,別人需要認識眼前的應徵者以及他的技術能力,假如沒有貢獻開源專案的話,或許部落格就是一個向大家分享他發現什麼、在做什麼東西,「要讓別人有認識你這個人的管道。」羅泓武說。「沒有這件事(指經營部落格),也沒貢獻開源專案的話,最直接的影響就是你在找工作上會變困難。」
「我一直都希望自己做的任何事,可以讓全世界的人都理解,所以寫部落格會想用英文來寫。」不過羅泓武也補充,用英文寫作需要多花兩到三倍的時間,但也因為花更多時間在思考要如何用英文表達,對英文能力有很大的幫助。
遠距工作
其實,羅泓武會進入目前任職的公司 Ticketsolve,很大一部分也是因為開源專案 — — 介紹他去面試的人,正是 Goby 專案的一個長期貢獻者。「我知道他是 Rails 開發者,所以當我要找工作的時候,就問他任職的公司是否有職缺,於是就被內部推薦了。」
Ticketsolve 是一家歐洲網路公司,提供票務和票房的解決方案,包含從網站建置、CMS、售票系統到後台數據等等,團隊成員四散在全球各地,有人在西班牙、德國、蘇格蘭、瑞士、馬來西亞⋯⋯ 「Ticketsolve 是愛爾蘭公司,不過我們沒有人在愛爾蘭。」
其實羅泓武在進入 Ticketsolve 工作之前,就已經有一些遠距工作的經驗,例如過去他在愛料理工作時,由於還要回學校上課,所以一週會有一天遠距工作,後來他也在五倍紅寶石工作兩個月,這段期間每週只有一天會進辦公室,其他時間完全是遠距工作。
「遠距工作的最大問題是溝通成本。」「遠距工作的溝通成本變得非常高。」這是羅泓武過去 10 個多月來為 Ticketsolve 遠距工作的體悟。
他說,假如在辦公室工作,遇到一個問題,而他知道隔壁的同事有經驗可以請教,這時候他只要拍一下對方的肩膀,一分鐘就可以解決,現在則需要透過文字描述問題,請可能身處好幾個時區之外的同事,清出一段時間用 Google Hangouts 來了解問題,並且試著解答。因此,整個流程當中,為了不耽誤同事的工作,羅泓武必須對問題有更深入的了解,不能只是「大概」知道問題就好,然後就等著同事來解答。在這個原則之下,當他遇到問題都必須要自己先研究透徹 — — 不管再小的問題都一樣,而且反而是越小的問題就更不應該去問。
「因為時差(六小時)的關係,用文字的方式會等非常久,同事才能回覆你 所以我在台灣時間早上 10 點問的問題,他們下班時間回答,基本上就是過一天了。」羅泓武說。
遠距工作的另一個問題則是跟時差有關,由於大部分的同事都在歐洲,所以羅泓武在工作上的時間有一部分需要配合他們,導致他在台灣的生活會跟朋友錯開,「我早上沒事的時候,沒人可以理你,大家都在上班。」此時,家裡只有一隻貓充當他的「同事」。
為了保有晚上 7–10 點這段「朋友們下班後」的時間,羅泓武會將最後一段工作的時間挪到晚上 10 點之後,進一步導致時間被切碎,剛去 Ticketsolve 工作的前三個月,他說上班日會覺得自己「整天都在工作」,當時他曾經試著起床後從 10 點開始工作,中午吃完飯後休息等開會(他們下午 4 點 15 分要開每日的 Stan-up 例會,一次大約 20 分鐘)後工作到晚上 7 點,然後再從 10 點工作到午夜甚至凌晨 1 點。「你的感覺就會是睡醒就開始工作,一直到睡前也還在工作。」
然而,或許這些都還不是遠距工作最大的問題。最近,羅泓武在 Facebook 分享了一篇文章,寫道:
我們可以發現貼文底下的留言也是頗認同。
想知道更多關於羅泓武怎麼安排遠距工作的時間、如何讓自己適應遠距工作,或是他使用哪些工具,請看〈工程師星箭日誌 Build #18281 羅泓武〉。
不要說「我沒辦法」
看似順利的海外工作經驗背後,羅泓武坦承:「前三個月會擔心自己被 fire。」
「我現在的工作,會碰到比較多跟伺服器相關的問題,有很多細節,常常會遇到看似無解的問題,最後都被打臉,資深的工程師總是能夠提供許多方向」「以前在愛料理永遠有人可以問(問題),現在要想辦法自己解決。」
後來羅泓武調整心態,學習運用手邊的資源去調查清楚問題,嘗試自己去解決它。
「我在這份工作(指 Ticketsolve)學到很多的是:不要說『我沒辦法』。」
我們來剖析一下,羅泓武在學習程式這條路上,是怎麼走過來的。
學生時代不必穿制服、不上補習班,讓他習慣不墨守成規、為自己的學習負責;學習拳擊,讓他在考試與電玩之外,學習系統性大量練習一項技術的經驗;自學寫程式,來自大學時期受到網路啟發,想多了解「創業」這件事;貢獻開源碼專案,則是在參與開源社群之外,還讓他找到了下一份工作;透過創造新的程式語言「Goby」,他更深入地了解程式語言;在台灣為歐洲公司遠距工作,讓他進一步學到跨國協作的經驗。
種種經歷,讓羅泓武發展出一套自己的學習方式。例如,他曾在文章中建議,寫程式遇到問題時,應該透過閱讀程式碼、將問題研究清楚後,自己試著找方法解決,不要預設自己已經走到盡頭,就想要開始繞去別的路、去求援,尤其不要直接 Google 同樣的問題來找解答。「你可以搜尋參考資料,但不要直接找解答。」
經過鍛鍊之後,不自覺揮出的一拳
寫到這邊,我想有必要解釋一下文章開頭引用的那句話:「這又不是漫畫呀,所以看不到什麼必殺鐵拳啦!!」其實那是一句對白,來自漫畫裡的拳館會長,他的下一句話是這麼說的:
要看的是經過鍛鍊之後,不自覺揮出的一拳!!
雖然羅泓武在自己的文章提過,學習最重要的是毅力,不過具體來說,拳擊練習也對他在學習方面產生很大的影響。以學習過程中人們很重視的「進度」來說,羅泓武說,「與其說看到進度,不如說沒有看到進度。」以刺拳練習為例,可能一天練習要揮一、兩千拳,但卻很難看出進度,並不是每一週都會比前一週進步 10%,真實的情況更可能是你每天練習某個技巧,一個月之後不僅沒進步,反而還有點退步,然而到了下一個月的某一天,你就突然學會了。
「你就是要耐著性子去做一樣的事情,可是又不會有立即的回報。」「拳擊是一個人的運動,你花很多時間在自己身上,要怎麼耐著性子忍受這個過程,是我在拳擊裡學到的。」
為創造事物的人打造科技
(寫程式)就是給你力量去對這個世界做出一些不同的東西。
從開始學習寫程式至今五年,相較於「小時候」對電腦和程式的認知,今天的羅泓武有截然不同的感受。他說:「程式跟這些(電腦)技術降低了每個人創造某些東西的門檻。硬體生產的門檻高、大量複製比較困難,寫程式的話就很簡單,改完程式碼重新部署、發新版本,複製也很簡單,大家可以在網路上下載,甚至在網頁上直接使用。所以我覺得門檻降低了,就是給你力量去對這個世界做出一些不同的東西。」
那麼,身為可以憑空創造出一些東西的工程師,羅泓武怎麼打算運用這個力量,他將來的目標是什麼?
「我希望自己可以成為某個重要科技背後的推手。」
他期許自己能夠在技術力夠強之後,設計出一種系統架構讓大家去使用,例如當初 Google 工程師 Jeffrey Dean 參與開發 MapReduce 這樣的雲端運算核心技術,可是如果沒那麼厲害的話,至少他可以參與專案開發,在發表後讓很多人使用。「我指的不是消費者面向的東西,例如 Facebook,而是一個讓更多跟我一樣的人使用的工具。」羅泓武說。
「何時想要達成這樣的目標?」我問。
「30 歲以前。」還未滿 25 歲的羅泓武答道。
【註 1】「Big Hearts」既刊一覧 講談社コミックプラス
【註 2】大學學科能力測驗
【註 3】大學入學指定科目考試
本文依 CC 創用姓名標示 - 非商業性 - 相同方式分享 4.0 國際釋出