為了揮拳而緊握的雙手,也可以抱著貓寫程式

羅泓武(攝影/Titan)

文/Titan

動筆寫這篇專訪前,我想到自己多年前曾經看過一套拳擊漫畫《Big Hearts 生存在沒有拳王的時代》 【註 1】,第一集封面印著:

這又不是漫畫呀,所以看不到什麼必殺鐵拳啦!!

不過,更令人在意的是封面摺頁上作者的話:

為了取材而跑了好幾趟拳館,讓我注意到某件事。不管去幾遍都是千篇一律,看的的都是同樣的面孔,百年如一日的做著同樣的練習。當然練習內容會慢慢的加重份量,不過外行人是看不出來的。這個故事以時間而言會被批評過於平淡,或許,因為正是這樣的光景烙印在我腦海裡的緣故吧⋯⋯

羅泓武,1994 年出生於台南市,今年 24 歲,拳齡五年,噢,不是的,我們今天要講的是關於開發者羅泓武的故事。

想像一下,一個高中讀文組、大學讀公共行政系,不太確定自己以後要做什麼,甚至一度想當拳擊手的學生,是怎麼從按下一個線上課程廣告開始,在兩年內成為正職的工程師,還創造出新的程式語言?

2017 年 3 月,羅泓武曾經在 Medium 上撰文分享自學的過程,如今又過了超過一年半,他有新的體悟嗎?我們請他來跟大家分享。

沒穿過制服的學生

「不好意思,都是貓毛。」羅泓武打開 MacBook Pro,拍落鍵盤上的貓毛。

(來源:羅泓武提供)

雖然他是在台南市出生,但大約在一歲、兩歲左右就隨家人搬上台北居住。談到成長過程中比較特殊的事件,一是沒讀過需要穿制服的學校,二是沒去過補習班。這兩個經驗在後來對他學習寫程式與工作產生了一定的影響。

之所以就讀台北大學公共行政系,羅泓武坦言,當時完全不知道自己的興趣,填志願時是從住家附近的政治大學政治系開始往下填。而且起初他以為自己可以靠著學測成績申請上大學【註 2】,沒想到卻「落榜」,「那時候心已經拉不回來準備指考【註 3】了。」他說。

自認不太擅長物理、化學,但數學還行,在被問到自己最感興趣的學科時,高中讀文組的羅泓武回答:英文。

羅泓武對英文感到拿手的原因,相信很多人也經歷過:玩線上遊戲。他覺得當時台灣的遊戲營運商做得不好,所以他都玩外國的伺服器、關注外國的最新消息,而在玩遊戲時,外國玩家也不太在意他的文法。

事後回頭看,英文扮演的角色顯得相當重要。他一開始自學程式語言的課程就是英文課程;他用英文寫部落格;在技術研討會演講也是用英文;他如今的老闆是英國人,跟同事的溝通也是用英文。

曾經想當拳擊手

2012 年,還在讀高中三年級的羅泓武考完學測後開始學習拳擊,原本想當拳擊手的他,在準備大學指考期間也沒有中斷練習,每週練習三天。就讀台北大學後有一段時間是在沒有教練指導的情況下練習。「不過這些可以不算啦。」他說。

「可能是因為分數低、沒考到自己喜歡的學校,可能是我不喜歡三峽,所以我幾乎沒有大學生活,朋友大多是來自拳館跟後來實習、工作時認識的。」既然沒有要認真過「標準版」大學生活,羅泓武開始把時間用來嘗試不同的事情 — — 用很認真的態度去嘗試。

到了 2013 年 1 月,羅泓武找到新的拳館和教練,開始重新學習拳擊,同一年的 4 月,他開始自學寫程式,這時的他全力投入練習拳擊,每週練習六天,包含跑步、重訓和拳擊訓練,一次練習四小時,其他時間大部分都花在自學寫程式。

同年 5 月,羅泓武參加新竹市長盃拳擊錦標賽,獲得 56 公斤級銀牌,11 月參加全國總統盃拳擊錦標賽獲得社會男子組 56 公斤級銅牌。不過,就在取得成績的同時,他也決定要放棄拳擊手之路。除了體認到自己跟那些從國中、高中就開始訓練的選手之間的差距,羅泓武也承認,「訓練過程實在太辛苦,」他接著說:「最難克服的是上場比賽的緊張感。大部分人沒練過拳擊或格鬥,可能不知道,雖然擂台只(比觀眾席)高一點,但你會感覺像是被關進一個籠子裡面,然後被繩子圍起來,而對方想要殺了你。」

「我其實沒有那麼想殺了對方,可是我必須幹掉他,不然就是我被幹掉。」

「那個壓力非常大,」彷彿是想起當年的壓力,羅泓武接著說,在技術研討會上用英語演講的壓力大概只有拳擊比賽的一半。

從那時候開始,他在拳館的練習就減半,進入群眾募資平台 flyingV 實習,開始當起工程師。

原本想創業,最後鍾情於寫程式

(攝影/Titan)

羅泓武接觸電腦的時間大約是國小三、四年級,那時家中有父母親用來工作的電腦,以及學校的課程,不過此時的他對電腦的認識跟其他人差不多,也沒有特別深的興趣,頂多用來玩遊戲。

那麼,何時開始出現轉變?

「其實我一開始感興趣的是創業。」羅泓武說。大學一年級的時候,有個朋友介紹他看「Inside 硬塞的網路趨勢觀察」和「TechOrange 科技報橘」等網站,勾起了他對創業的興趣,也因此去修了管理、行銷等課程,同時開始從 HTML 與 CSS 著手自學。「我覺得既然要創業,應該什麼都要了解,只是最後我反而喜歡上程式,創業什麼的就先不管了。」

羅泓武曾在文章中提到自己當初為了省錢,挑了一個免費課程來上,不過他沒講的是,之所以挑中該課程,其實也是因為看到網頁上的廣告。在自學大約半年之後,羅泓武加入 flyingV 實習,根據他的說法,實習一個月比先前自學半年學到的還多。

「我建議大家直接進入新創公司實習,比在學校上育成課程更有用。」

後來因緣際會,羅泓武甚至到當初自己常看的網站 Inside 實習,接著又在貝殼放大和愛料理擔任正職的工程師。就在這個時期,他開始接觸更多新的技術,並且在新的管理模式下工作,「Richard(Inside 共同創辦人、愛料理共同創辦人兼技術長)會研究新的技術和新的管理模式。」羅泓武解釋,因為這樣讓他開始了解外國公司工程師的工作方式。

創造程式語言「Goby」

Goby logo(來源:GitHub

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%,真實的情況更可能是你每天練習某個技巧,一個月之後不僅沒進步,反而還有點退步,然而到了下一個月的某一天,你就突然學會了。

(攝影/Titan)

「你就是要耐著性子去做一樣的事情,可是又不會有立即的回報。」「拳擊是一個人的運動,你花很多時間在自己身上,要怎麼耐著性子忍受這個過程,是我在拳擊裡學到的。」

為創造事物的人打造科技

(寫程式)就是給你力量去對這個世界做出一些不同的東西。

從開始學習寫程式至今五年,相較於「小時候」對電腦和程式的認知,今天的羅泓武有截然不同的感受。他說:「程式跟這些(電腦)技術降低了每個人創造某些東西的門檻。硬體生產的門檻高、大量複製比較困難,寫程式的話就很簡單,改完程式碼重新部署、發新版本,複製也很簡單,大家可以在網路上下載,甚至在網頁上直接使用。所以我覺得門檻降低了,就是給你力量去對這個世界做出一些不同的東西。」

那麼,身為可以憑空創造出一些東西的工程師,羅泓武怎麼打算運用這個力量,他將來的目標是什麼?

「我希望自己可以成為某個重要科技背後的推手。」

他期許自己能夠在技術力夠強之後,設計出一種系統架構讓大家去使用,例如當初 Google 工程師 Jeffrey Dean 參與開發 MapReduce 這樣的雲端運算核心技術,可是如果沒那麼厲害的話,至少他可以參與專案開發,在發表後讓很多人使用。「我指的不是消費者面向的東西,例如 Facebook,而是一個讓更多跟我一樣的人使用的工具。」羅泓武說。

「何時想要達成這樣的目標?」我問。

「30 歲以前。」還未滿 25 歲的羅泓武答道。



Star Rocket

Star Rocket 三創育成是非營利的創新育成機構, 以「人」為核心,「科技」為養分,致力成為最開放的創新育成空間,透過自辦課程跟活動策展,活絡台灣創新與技術社群,並培育創新創業人才;同時,藉由內容產製跟資料庫的建立,追蹤、記錄創新故事,啟發人們踏入創新航道。

Star Rocket 三創育成

Written by

我們是非營利的創新育成機構, 以「人」為核心,「科技」為養分,致力成為最開放的創新育成空間,提供創業者一同工作與腦力激盪的舒適環境,並透過自辦課程跟活動策展,活絡台灣創新與技術社群,並培育創新創業人才;同時,也透過內容產製跟資料庫的建立,追蹤紀錄創新故事,啟發人們踏入創新航道。

Star Rocket

Star Rocket 三創育成是非營利的創新育成機構, 以「人」為核心,「科技」為養分,致力成為最開放的創新育成空間,透過自辦課程跟活動策展,活絡台灣創新與技術社群,並培育創新創業人才;同時,藉由內容產製跟資料庫的建立,追蹤、記錄創新故事,啟發人們踏入創新航道。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade