如何進化自學能力?後端工程師 Mosky 的人體實驗

一個小時的工作,能不能五分鐘完成?

( 攝影/喬蘭雅)

文/喬蘭雅(@maxine_maz)

這篇專訪花了比以往還久的時間構思,採訪後兩個禮拜我仍遲遲難以下筆,因為這次採訪的對象是位特別的工程師,整整三個半小時她所傳授的「工作術」,不只讓我受益良多,也難以用三言兩語說明,尤其我自己也身體力行嘗試了這些方法,意外發現生活節奏煥然一新 — — 
 
她是 Mosky,本名劉依語,為台灣知名設計商品平台 Pinkoi 的 Python Charmer(後端工程師)【註 1】。今年僅 26 歲的她,已自學寫程式超過 12 年,換言之人生有一半的時間是透過 Python 這個語言與世界溝通。Pinkoi 之外,Mosky 常出現於不同的開源社群,分享專案跟教授 Python。
 
2017 年,她寫了一篇文章 — — 〈讓一天變成 48 小時!〉 — — 讓我印象深刻:當時為了解決時間不夠用的困擾,她不斷在生活中開發各種工作與生活方法,透過「計時」跟「時間表」的輔助,讓處理瑣事的速度更流暢。而為了突破 24 小時這項人類無力更改的物理規則,她也仔細觀察自己的作息跟生理需求,嘗試固定生活節奏,好讓 24 小時可充分被運用成 48 小時。
 
這篇試圖突破物理限制的文章,之所以讓我感到驚艷,不只是因為 Mosky 的一絲不苟與理性,以及其對自我跟人類行為敏銳的觀察力,更是因為她就像一個會行走的實驗室,在自己身上不停地進行「人體實驗」。
 
但這篇寫於 2017 年初的文章留下了許多未解謎題:例如經過一兩年,這些方法還持續被實踐嗎?實驗的過程中有多少失敗、又有多少成功?更重要的是,她如何將每次的經驗,與其工程師的身份融合一起?
 
為了獲得這些解答,我親自走訪了 Pinkoi 辦公室一趟。

(來源:Mosky 提供)

自學少女

拜訪的時間是晚上 7 點,行前我再三跟 Mosky 確認了採訪時間的長度與彈性,因為〈讓一天變成 48 小時!〉 一文隱約透露出她相當注重時間管理。事實上,她也確實給自己訂下晚上 9 點必須回家,下班後踩腳踏車的規則。很不幸的,當晚的訪談還是暴衝至深夜。
 
Mosky 從小在竹北長大,一個介於市區跟鄉下的中間地帶。小時的記憶幾乎只有一個字可形容,那就是「玩」。我感到有些訝異,因為這與她接下來對自我人生的描述 — — 規則 — — 有著強烈的反差。但或許可歸功於在戶外長大,Mosky 的視力維持在 1.5 跟 1.2 ,對此她頗是得意,畢竟工程師長年與螢幕為伍,如此好的視力本就是難得的成就。
 
從小玩到大,不喜歡乖乖坐在教室聽課,只要 5 分鐘聽不到要聽的,她就會質疑老師。Mosky 自白小時的壞毛病就是不太相信人,習慣以自己有限的經驗來決定什麼是重要的。這樣的個性讓她不會像同儕一樣容易「信服權威」,但人生也因此與學校無緣,凡是都是自學為起點。

「我曾經覺得『自學』是唯一的路,但也有一段時間覺得有導師的話比較好,但最近又覺得自學是好的…(因為發現)不會有這樣(契合又能帶領)的老師,這個機率太低了。」

我問她記憶中是否有過啟蒙老師?她卻說沒有。從小就喜歡自己摸索,這讓她一直都進度超前,因此始終無法從老師那獲得學習的成就。她因此深信自學就是答案,因為唯有自己摸索,才能找到熱情,也才有辦法投入跟鑽研。國中時期 Mosky 透過玩線上遊戲建立對電腦跟網路的興趣,一路從 JavaScript 跟 C++ 開始探索,最終找到了最對胃口的 Python 。

寫程式的價值

2012 年 Mosky 加入 Pinkoi,算是非常早期的團隊成員。當時她還在大學的最後階段,Pinkoi 共同創辦人顏君庭(Peter Yen)跟李讓(Mike Lee)在 COSCUP 中聽聞 Mosky 技術不錯,於是邀約她前來面試。
 
回憶當時的情形,Mosky 笑說一開始並沒有很信任這兩位突然冒出來說要面試的傢伙,加上當年 Python 並沒有像現在這般火紅,她一度懷疑這個語言只能當興趣,畢業後也許就是找份可能沒這麼喜歡的公司待著,或者學寫其他語言。甚至,她已經預備要去刷個研究所的學歷。當然最後,她選擇加入 Pinkoi,從實習開始。

「這整個過程有懷疑、有相信公司的目標,但不知道到底有沒有一個未來。到現在,我很確定有一個短期的未來,公司在做的事,也是 exactly 我想要的東西。」

從小就喜歡美術跟設計,但 Mosky 清楚自己在這方面沒什麼天份,以前會感慨未來的工作可能會離設計很遠,但就這麼幸運的,Pinkoi 作為設計師原創商品的平台,很難得結合她所喜歡的事物 — — 不論是寫程式,還是幫助設計師。
 
透過寫程式來幫助她所在乎的商品跟設計師,是 Mosky 把自己的角色跟價值看大的方式。她說,有些工程師寫程式是在追演算法、追工程面的東西,但她自己更在乎的是能夠用透過程式語言為使用者帶來什麼價值。

程式不一定要是「程式」,學習也可以是「程式」

然而自學不容易,Mosky 也坦承儘管條條大路通羅馬,能少走冤枉路也好過一路跌跌撞撞。也或許就是這份感觸,讓她在 Pinkoi 工作之餘,還是持續投入 Python 的教學。但她教的不只是如何寫程式,而是寫程式背後的精神,以及關於「學習」這回事。

Mosky 授課的簡報裡有很多充沛的自學資源,從科普的 YouTube 影片到各種主題系列,想要自學的人都輕易找到學習的入口。採訪當天 Mosky 帶著我在 YouTube 上尋找影片,邊看邊解釋她的 Evernote 裡有著各種過濾後的資源整理。

(來源:Mosky 授課簡報

看著 Mosky 熟稔的在 YouTube 上敲著關鍵字、眼球快速掃過各個影片,很容易讓人以為自學就是這麼簡單,只要有顆心,眼前的知識與技術都能輕鬆上手。但其實這背後堆積著無數「刻意練習」的執著,為的都是讓自己能夠持之以恆的面對各種可能誘惑並導致自學失敗的因素。
 
例如,小時候因為不願好好聽課,Mosky 被老師跟長輩指責注意力不集中。雖然對這樣的「標籤」有很多質疑,但她也發現自己確實不擅長專注。而如何不分心、如何啟動專心,一直都是自學路上不斷克服的挑戰。
 
那要如何壓制分心、培養專心呢?Mosky 依實用性提供了三個經由她「人體實驗」後覺得頗有心得的方法(以直銷語氣加碼說明,我個人在嘗試後尤其大推第一項):

1. 階層式 To-do list + 馬利歐方塊
2. 工作流程
3. 心流理論

進化馬利歐的方塊與切割術

你有玩過俄羅斯娃娃嗎?它是一種俄羅斯傳統的木製玩具,一個娃娃套一個娃娃,打開第一個最大的之後,裏頭還有無數個更小的娃娃可以繼續打開。Mosky 堅信 「沒有事情是難的,只要你把它切小」,就像掀開俄羅斯娃娃一樣。
 
階層式 To-do list 就像俄羅斯娃娃,簡單說就是利用 To-do list 的分層設計,將每項任務切成更小、更具體的小目標。最後,每個 To-do list 的分層都能展開變成另一個 To-do list ,然後再切碎、再展開。

(來源: Marco Verch;CC BY 2.0)

一開始,我不太清楚階層式 To-do list 真正的用法跟用意,覺得應該只是一般常見的待辦清單,例如下班前需要完成簡報、回覆 Email 這樣籠統的事項。採訪完 Mosky 後我自己實際跑了一次,才恍然大悟,所謂階層式 To-do list 的目的不是單純羅列需要完成的事項,而是去「拆解」欲完成某一任務前,需要執行哪些步驟、需要蒐集哪些資料、需要注意哪些細節…。
 
在這段有邏輯跟系統性的「拆解」過程中,你會更清晰的看到全局,並且相當準確的判斷出要完成一件任務需要哪些資源、會花多少時間,以及細項彼此間的關聯性,進而排出優先順序。
 
Mosky 也說明,這套「階層切割術」非常適合專案主管套用來分配工作,像是 Pinkoi 在處理大型專案時,也時常使用這個方法。最初,夥伴們會從彼此的意見回饋中激盪出各種想法,接著再將這些想法畫出明確的產品規劃(Product Roadmap),並從中拉出不同的子專案,這就是第一層;往下拆解更細緻的小任務,則又是一層,最後對應到個別員工的 To-do list。
 
最後 Mosky 會加上她可以打勾勾的檢核表。她自己為檢核表取了「馬利歐方塊」這個可愛的名字,因為對她而言打勾勾有特別的意義跟用途:

「打勾這件事,個人覺得有很大的滿足感。在把事情切小之後,你又可以打勾,多好!降低難度的同時又幫助你覺得有進展。在覺得有進展的時候,就會激發自己一個正向的心情,繼續往前進。」

(來源:Louis Chiu;CC BY-ND 2.0)

Mosky 做事很在乎成就感與滿足感的蒐集,認為那是推著人往前進的動力。所以除了瑪利歐方塊,她也很享受「數數」(counting)的感覺。Mosky 解釋,平常做事都是單件單件來看,例如踩腳踏車就是做一件運動,但如果計算的是運動的時數跟速度,看到的會是持續往上累積的數字,像階梯一樣。「雖然是在做同樣的事,卻感覺做很多。」

例如為了讓自己享受運動,她喜歡在 Google 行事曆仔細記錄每次踩腳踏車的速度、時間。幾個月後回頭看,就會被這些填滿數字的飽足感撐的心花怒放,從中還能看到自己成長的具體成效。
 
而這些數字累積背後展現的是對生活「節奏」的堅持。

從節奏、解決問題中找到程式魔法

節奏另一個較為嚴謹的說法,就是紀律,它是 Mosky 每次演講都不會講明的隱藏版自學能力。但講紀律有種軍訓式的規範感,她比較喜歡以平易近人的方式描述為「是不是有節奏」、「按照固定的步伐在做一件事。」舉例來說,踩腳踏車不能忽快忽慢,因為你的目的是維持長期的運動,就像在一場人生規模的賽事中,你要穩定平均的速度,而這所仰賴的是固定的步調。
 
講白點,所謂的紀律跟節奏就是自我管理的能力,但 Mosky 也知道,演講時跟大學生說要自我管理,只會讓自己像倚老賣老的長輩,既無說服力,也無法具體告訴大家如何進行。
 
也因此,她習慣將人生與工作的節奏感包裝在寫程式裡,並將之稱為「寫程式是一種魔法」(Coding is magic),透過一個又一個的小方法告訴大家,從小事做起,去解決一個又一個的問題。不論是技術本身、團隊合作或是維持節奏,解決問題就是一種程式魔法。
 
例如在踩腳踏車之外,文章前面有提到 Mosky 規定自己 9 點要回家,她說「有些工程師很愛寫 code,寫 code 會上癮,但上癮沒有辦法寫更多的 code。為了寫更多的 code,你必須現在把電腦收起來,回家睡覺。」

(來源:Mosky 授課簡報

工作流程:意志清醒時幫自己做出最好的規劃

在奇幻小說作者布蘭登・山德森(Brandon Sanderson)著作《颶光典籍》中,卡布嵐司的塔拉凡吉安王(King Taravangian)與東方魔女許願想要統御世界的能力,但代價是每天的智商都不一定,偶爾高、偶爾低。故事中,這位國王有整拯救全人類的願景,會在智商極高、思緒清醒的時候寫下文字跟密碼,做出管理決策、對世界做出預言。
 
「我可以在自己精神、意識非常清醒的時候訂下要做什麼事、要 follow 什麼…當我受到一些情緒牽引的時候,可以回頭去看(提醒自己)。」Mosky 很愛看小說,如果說從小時熱愛的生物學跟天文學奠定了她的科學精神,那麼小說就是帶領她認清人類本性,以及如何針對這些本質進行實驗與調整的那扇窗。而塔拉凡吉安王的工作法則就是她所效仿的。
 
「工作流程」是她教我的第二個方法,就是在自己意志非常清醒時,所列出的提醒事項。「當我覺得沒有方向、想要偷懶或分心時,會問自己『現在的 Priority 是什麼?』。每次看完列表,就會醒過來,然後搬出「瑪力歐方塊」Mosky 深吸一口氣,彷彿在與我的訪談中突然瞥見程序清單,驚覺自己脫軌一樣。
 
這份「工作程序」的清單不如 To-do list 那般複雜,其作用只是要隨時提醒你保持在最佳專注狀態而已。Mosky 典型的工作程序中,一定會提醒自己以下幾個事項:

1. 現在的 Priority 是什麼? 
2. 把現階段不重要的事寫在 Writing out,然後暫時忘掉他們
3. 搬出「瑪力歐方塊」

想知道 Mosky 平常都用什麼必備小物,或麼軟、硬體工具來輔助來輔助落實上述方法論,可參考〈工程師星箭日誌:Build #18318 Mosky(劉依語)

進入心流

點著頭,手敲著節拍,我看著 Mosky 模仿她平常進入「心流」(Flow)狀態的節奏。
 
To-do list 跟工作流程都是專心前的準備,但在啟動工作的那瞬間,要如何順暢的進入專注模式?談到這 Mosky 眼睛一亮,分享了對她啟發頗大的「心流理論」,「自己給自己一個挑戰。平常這個工作要 1 個小時,我有沒有辦法在 5 分鐘內搞定?這樣挑戰馬上就來了:難道 Mosky 5 分鐘搞不定嗎?」
 
當然,給自己挑戰也需要經過設計,不是隨便拉高目標就相信可以辦到,「我自己會更深刻點,考慮人類的極限,我大腦的速度最快可以多快完成,我就會朝這個目標前進。」
 
Mosky 說,早期在公司處理緊急事件時,都會有意識的訓練大腦來應付突發狀況,評估生理的極限大概是 5 分鐘左右。比方說公司伺服器發生大量例外,她就會嘗試挑戰能不能夠透過經驗,在錯誤裡找到頭緒,把錯誤修正。
 
有成功過嗎?Mosky 坦白從沒辦到過。但這種不停給自己跨越的挑戰,就是心流理論裡相當重要的一環。

製圖/喬蘭雅

Mosky 手敲打著 Google,找出了一張網路廣為流傳的圖片,那是一張心流理論的象限圖,縱軸是挑戰(Challenge),橫軸為技能(Skills):當挑戰難度高,技能也足夠應付時,就會進入「心流」,這時人會沈浸於手上的任務。同理,當挑戰太高,技能不足以應付時,人就會陷入焦慮;反之任務挑戰度低,又不具備顯著技能時,就會感到沈悶與乏味。
 
「有進入過焦慮嗎?」我指指圖的左上方問道。「(工作上)沒有,因為我的 skills 算蠻完整的」Mosky 頗有自信的回應,「所以它(設定任務的挑戰度)就很難。我在思考專案時,都會推到很高的 Challenge,如果技能沒到,我就會在中間跳來跳去,這樣還蠻有幫助的,你就會一直覺得,這個事情要做好。」

面對悲觀

「你有很大的執著,但偶爾會冒出『好像就這樣子』、『一輩子都找不到答案』的話。」我這樣跟 Mosky 說,因為訪談中我察覺她時不時就會大嘆一口氣。
 
「我本質上是個悲觀主義者,甚至需要克制自己不要這樣,」Mosky 思考了整整 30 秒後回答我,「我不會對未來有太多想像,所以不適合創業,不適合提很厲害的東西。所以這是為什麼我比較喜歡演繹的關係,因為我至少確定每步路都是紮實的。至少錯了我知道我某個原則是錯的,但我可以進一步改善它。」
 
凡事用演繹,意即法則,而非經驗(歸納)來推論,並找到最適切的答案,這是 Mosky 習慣的思考模式。就因為她每一步的規劃、每一個工作術跟方法論的產生,都是經過縝密的觀察所設計而成的,我也不禁好奇,如果事情失序了、未能按規劃走,她的情緒跟處理方式會是什麼?

這時 Mosky 突然變的很正面,給了一個聽起來簡單到不行,但許多時候我們卻沒能如此轉念一想的回答:

「教你一招!我不管有做到沒做到都有個正循環。如果我沒有做到,表示我現在用的方法是沒有效的!太好了!我證明了一個方法是沒有效的,那我應該要去找下一個方法!」

儘管如此,2017 年 Mosky 的一個重要年度規劃還是失序了,而且失敗了。

攝影/喬蘭雅

心流失敗:從憂鬱感中找回自己的節奏

2017 年初她對外宣告一間外國出版社 Packt Publishing 找她寫與資料科學中平行計算有關的書。但年底她放棄了,因為寫不出來。
 
「它(寫書)其實就是一個我做不到的事情」,Mosky 大嘆一口氣,「雖然說當下(接到出版社邀約時)我就覺得或許做不到,(機率)可能是三七,七是失敗,但我還是想要挑戰看看。那時也是想說可以利用這個機會,來試看那些管理的方案有沒有用。」
 
在強迫自己週末寫稿的那一年之中,Mosky 發現問題出在用英文寫書的技能不夠,導致她一直在象限圖左側的焦慮與冷漠之間徘徊。同時她也察覺到寫書是非常需要充篇幅的工作,這與她過去習慣精簡事物的想法框架有落差。
 
「我的信仰就是相信所有的事情,最後可以找到一個簡單的法則去解釋他們。」不只是寫的程式要能達到老嫗能解的境界,過去她不斷實驗各種方法,也是在尋求那一個最精簡、最適用的解方 — — 真理。
 
寫書失敗的打擊讓 Mosky 好一陣子相當失意,但最後告訴自己:「我要怎麼 Pivot,從失敗中學習。」要如何好好跟編輯溝通、好好圓融收尾?房間堆積的寫書素材要怎麼運用?曾經在 Facebook 上昭告天下預備出書,計畫終止後怎麼跟大家解釋?這些都是處理失敗的下一步。
 
「我學習了一個處理失敗的過程。這個過程真的超級無敵憂鬱的!」Mosky 最後把寫書的素材轉換成某場 PyCon 的議程議題。
 
在逼迫自己寫書的那一年,她也透過寫書這個目標具體實驗跟淘汰不適用的工作術,例如番茄鐘即是一個她認為不適用的方法,因為一旦進入心流,就不會想每 25 分鐘脫離了。

尾聲的三個提問

在訪談的尾聲,我問了 Mosky 三個問題,第一:有沒有話想給正要自學或是已經剛步入職場的工程師?
 
 「不要被定義住。」「我甚至沒有受限於我是一個人類這件事。」

這句話從 Mosky 口中說出蠻有說服力的,畢竟她一直以來都在與自己的極限拔河。但她真正想強調的是「你可以找到一個適合你的學習方法」,不管是 Mosky 實證過的工作術,還是被淘汰的蕃茄鐘,每個人總有適合自己的一套法則。只是法則不會從天而降,你必須自己試驗,而且不在乎外在框架。
 
分享了那麼多,第二個我問她的問題是:有沒有要給自己的話?
 
 「先使自己變好,再幫助別人更好。」Mosky 身處開源社群其中,一直很強調「分享」的概念,我曾問她為什麼這麼想分享?這麼想幫人?她回答,如果自己發現了某些方法的益處,如果能多讓 10 個或 100 個人也跟她一樣受惠,大家是不是可以一起變好?自己是不是也能變得更有價值?
 
但在練習把好的想法傳遞出去、說服他人也接受並認同的這個過程中,她也意識到一個人若是半桶水時很難幫人,「所以我要先做到頂尖,再想辦法幫人。」
 
最後,我問了一個憋了很久的問題:你為什麼一直追求持續進步?(我其實心中想的是,妳不累嗎?)

「答案很中二,因為我想看自己可以反人類極限到什麼程度。」

這個回答有點超出我預期,但仔細回想這三個半小時訪談 Mosky 透露出的執著、實驗精神,這確實是很 Mosky 式的回答。


【註 1】我是透過 Pinkoi 的一支徵才影片才認識 Mosky 這號人物。Pinkoi 現在也還持續徵才中喔!