Sudo 實習之旅 — 序章

本篇內容為真實故事,若有雷同並非巧合。

從 2015–7 到 2016–10 一年多的時間,我在大二下開始了第一份實習 — Sudo。那時剛好 Sudo 才剛成立沒多久(不過官網也都建置的差不多了,還在不斷迭代中),加入時大概也才 13、14 人左右。

一切都還在不確定之中進行,也因為身在面對工程師的公司當中,有幸參與許多線下社群與 Conference,也在途中認識許多優秀的開發者。

雖然不能稱得上是最好的實習,但確實是蠻精彩的一年。當時發生了許多事情,因為忙著課業跟工作,都只有斷斷續續寫下一些筆記。剛好最近準備要找新工作了,整理了以前的寫下零碎的筆記,希望能夠把這段歷程記錄下來。

這份實習是從 Xi-Zhe Lin 介紹開始的,當時為了把以前的程式的進度趕回來,沒有打工的時候就在圖書館裡寫 Java、寫網頁。因為需要長時間的專注,手機又沒有網路,當時的同學很難找到我。

剛好聽風知道我對網頁有興趣,於是介紹我到一間新創公司聊聊,沒想到就這樣進去了。

也不知道算不算幸運,經歷了一間公司的興起到結束服務,或許是個很難得的經驗。(但也不想再體驗第二次了……)

Sudo 是什麼?

雖然現在服務已經關閉了,不過在 google 搜尋關鍵字仍然可以找到不少結果。大致可分為以下幾類:

  • 幫工程師找工作的媒合平台
  • 可以幫學生找實習的媒合平台
  • 可以申請獵頭服務找工作的媒合平台
  • 搜尋工程師職缺與實習職缺的大平台

SDBD — 訂便當

這是第一個和設計師一起合作的小 app,為了解決當時在公司訂便當時的困擾而開發。

前端戰國時代

剛開始進去時因為對 Javascript 還不夠熟悉,所以先從 tutplus 的教學課程開始(公司出錢)補齊Javascript 的基礎,回家就拿犀牛書啃不太懂的觀念以及實做一些 built-in function。

當時前端剛進入戰國時代,Angular 熱潮漸退、React 逐漸走紅、原本的 flux 逐漸被 Redux 取代、babel、es6 語法、webpack,幾乎都在同一時期竄出。很幸運地因為團隊剛好使用 React 開發複雜頁面,所以開始學習了相關的技術。

原本的前端離職之後開始接手主站的開發,是第一次跟團隊密集地合作。一起跑 scrum、解票、提 PR、撰寫 style guideline、引入 linter 等等,後來才發現有那麼完整流程的新創公司不多,大部分都是主管有什麼功能就直接要求開發,開發的流程也因為大家的認知不同而有落差。

開發團隊

好像還沒有介紹開發團隊,在我剛進入 Sudo 時開發團隊有顆顆、Peter、Denny、Henry。

剛開始只是單純覺得跟這些人合作起來相當愉快,後來才發現能夠找到像這樣完備的團隊實在不容易。

在實習期間因為有 Denny 與顆顆專注在 Web 開發上,所以逐漸學習了 babel、es6(當時正逐漸竄紅當中)、react、redux,甚至在 RxJS 在台灣還沒起步時,Denny 就已經先跑過來跟我說:「有空看看 RxJS,functional reactive programming」。

Denny

有一句話是這麼說的,「能夠控制體重與起床時間的人可以做到任何事」,他曾經為了寫程式把 XXX 給 XXX 了。

在音樂界如果有人的成就、技術非凡,就會被形容為「把靈魂賣給魔鬼」。那麼或許也可以用「把靈魂賣給程式碼」來形容 Denny 吧。

這麼說好像 Denny 是個程式偏執狂有失公正,不過除了寫 code 以外,他還成立了「世界大代誌」「求職天眼通」

我印象最深刻的一次或許是有一天早起(4:00 AM)準備寫 code 時,還看見 Denny 正在線上,敲 slack 以後竟然還有回應;以及有一次公司員工旅行,大家正在玩遊戲時 Denny 獨自一人拿出筆電正在看一部叫做 funfun function的頻道(講 functional programming)看到打瞌睡。

大部份的人努力程度還不到比天賦。

這大概是 Denny 給我的最大體悟。儘管在實習的後半年他離職了,但他的態度以及學習精神一直都是我相當佩服的。

連一個非本科系的都那麼認真了,你還在那衝三小?

大概是這樣。

Peter

先講技能面。一個會寫 HTML, CSS 的設計師已經很少了,他還會用 bootstrap 以及 Ruby on Rails 語法協助開發,也會用 github 發發 PR 解決一些前端頁面上的問題。

他設計出來的頁面也不會那麼理想化

一般的設計師(尤其從平面轉為 UI 設計師),常常會設計一些很完美的頁面。文字剛好、圖片很漂亮、卡片等高、固定寬度等等。

但是在實際的網頁當中,狀態並不止一種,輸入也不會如同你想像的那麼完美,如何處理文字過長的問題、換行、刪節號?

還有其他狀態要考慮,空白狀態、錯誤狀態、極限狀態、載入狀態等等,這些都是設計師常見的盲點。

另外一點就是 Peter 很願意跟工程師溝通,並且會試著回應不合理的需求以及釐清問題。剛加入團隊時因為身份的關係(年紀最小、還是學生、又是開發經驗最少的),一直不太敢發表自己的意見,不過他一直建議我多發表意見,並且提出自己的想法,因為不溝通的結果就是吃大便,這點我在加入 Sudo 後心有戚戚焉。

Henry

Henry 是個經驗相當豐富的工程師。從網頁開發、App 開發、後端、devops、linux 操作他都非常熟悉,也會時常丟關於技術上的資訊,從他身上獲益良多。

除了開發上的問題之外,Henry 還能解答你對某個遊戲的疑惑、Steam 的特價、美劇觀賞指南等等。

顆顆

我覺得顆顆很像 3 great virtues of a programmer 的真實版。這幾個特性看似負面,但在軟體開發當中卻是一種美德。而顆顆的個性對於之後的我影響很多,先求有再求好。

懶惰 — Laziness

在 Sudo 有許多事情都被自動化了,自動化部署、CI、slack bot 串接營運大小事、用 hubot 讓其他部門拿統計資料、rollbar 等等,都是顆顆一手建立起來的(還有 henry),在開發上省下不少功夫。雖然我並沒有參與其中,但過程中逐漸了解一些關於 devops 的知識以及常見的第三方服務,都對之後的開發相當有幫助。

James

主管很重要,幾乎可以決定你對工作的滿意度。討論時把話題聚焦到正確的方向、控制開發時程。

這些看似理所當然的事情在我到其他公司工作後有很深刻的體會,沒人訂定開會時間、開會沒有明確目標、沒有人管時程與 follow up。最後導致整個開發進度一團亂,才知道能夠找到一位合作愉快的 PM 是多麽難能可貴的一件事。

其他團隊因為沒有實際密切合作經驗,所以不多加介紹

Sudo 週刊

Sudo 週刊是開發團隊為了交流彼此看到的技術而由顆顆領銜成立的,雖然隨著大家各奔東西已經荒廢許久,不過可以參考看看歷期週刊。


未完待續。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.