<

在 Incubit 的工作感想

GaDii posted 6 months ago work

For English version please visit here

我加入 Incubit 兩年多了,覺得是時候寫篇文章來記錄順便回應先前朋友問我在這邊工作的感想。由於在 Incubit 主要是 web developer 所以大多會以 web team 的角度來敘述。

文化

這邊會分兩個部分:公司文化(web)團隊文化

公司文化

保持透明:公司每週都會開會討論及報告各個專案的進度,以及新客戶或潛在客戶的狀況。每季則會有全體大會,展示各個專案的成果、研發成果、下一季或年度計劃、甚至是財務狀況。個人還蠻喜歡這樣的透明訊息,讓我能夠提早準備短中程的規劃。

保持開放:在任何會議中,我們每個人都是平等的,所以可以隨時向任何人提出問題。如果提出的建議更好,這個建議就會被採納或取代原本的做法。如果對產品有任何新的想法,只要作出投影片然後說服團隊即可。像最近我們在幫產品取名,大家都會提出各式各樣有趣的名字然後一起討論。

工作-生活平衡:每個人都喜歡新點子,但如果每天都是只有工作而沒有生活的話,是不可能會擠出新點子的。公司鼓勵大家有 side project,有不同類型的生活,以激發出新點子。公司也不會管我們是在山上或海裡工作,只要東西有出來就好。我自己還蠻愛這樣的工作形態,讓我抽出更多時間給家人以及學習不同類型的東西,像最近就開始在學 machine learning。

(Web) 團隊文化

凡事皆可被質疑:只要覺得不對勁,隨時都可以對其進行討論。我們相信每個人的專業程度都足以作出合理的決定。

以理服人,不要以衆服人:如果對於團隊成員的決定有不同的意見,就應該拿出證據來說服他改變。在這裡我們不會用多數決來強迫任何人。

不要害怕改變:世界上沒有一個完美的解法可以兼顧一切,如果當下很難下決策時,我們會採取相對好的方案然後繼續前進。如果這個決策事後覺得不太好,那我們就會再重新討論然後改善。

沒有人什麼都懂:沒有人是十全十美的,有不懂的地方我們會請教該領域的專家坐下來一起討論。

找方法,而不是找理由:在放棄之前,繼續努力找尋解法。總會有一個方法可以解決你的問題,即使不是最完美的做法。

對你的作品引以為傲:避免這樣的情形發生 - 你盡力了,但卻對結果不滿意。

認真但不嚴肅:不要說「你他 x 的在幹嘛?」,請改說:「請問您他 x 的在做些什麼呢?」。

團隊

我們目前有兩個團隊,分別是 AI 以及 web。AI 是我們近幾年來的主要核心,所以目前所有的服務都是圍繞著 AI 來打造,比如數據前/後處理,訓練模型,部屬及架設等任何能讓整體工作更輕鬆的服務。

我是在 web team,做的事情相對較於傳統。比較像將 AI 視爲一個星體,然後打造圍繞著它的衛星群。但有趣的是,由於這些衛星群表現地還不錯,所以我們目前正把這些衛星群拉出來獨立成一個影像識別專用的星系!

角色

在 web team 當中,我們只有兩種角色 - Team lead 以及 Team member,他們的職責分別如下:

Team lead

成爲團隊文化的守護者:在成員沒遵守團隊文化的時候,team lead 就應該跳出來提醒對方,反之亦然。

對團隊的表現負責:確保專案走在對的路上,制定合理的進度表,並讓每個人都能最大地發揮能力。

Team member

擁抱文化:加入它或是改變它,一個文化必須要所有人共同參與才能夠形成。 盡你最大的能力:每個人會在團隊裡都是因爲他是某個領域的專家。團隊會依賴你並相信你會作出最好的表現。

我們希望與不僅是有天分,還要認同此文化的人一起工作,所以即使挑剔地招募讓我有時候覺得工作超出負荷,長期而言還是挺值得的!

溝通

我目前遠端工作已經超過一年,而由於 COVID-19 的緣故,公司也已經全面遠端工作一個多月了。目前我們主要的溝通方式還是透過 Slack 再搭配 Google Doc,需要開會時候則是用 Zoom(嗯,你懂的...)。除了會議之外,我們更傾向於異步溝通,因爲這邊沒有嚴格的工作時間,有的人喜歡在早上工作,有的人則喜歡在晚上工作。

每隔一季或半年,公司全體會在日本或台灣碰面交流,比起視訊會更容易彼此溝通。

我自己還蠻喜歡這樣的定期會面,畢竟大多時間都是面對電腦,偶爾視訊討論也是對著冰冷的電腦。這樣的定期交流感覺更有溫度也有效率。

工作流程

這裡介紹的主要是以 web team 爲主。

Product owner(或任何人)都可以提出或分析需求(需求可能是來自於客戶或是自己發想),將其做成投影片之後再提出給團隊成員來討論。

提案完成後,我們接著會分拆成小塊的任務,然後讓 engineers 來完成。實作過程中,我們通常會從 UI 部分開始先進行,完成 mockup 之後接著讓 product owner 確認是不是想要的。等沒問題之後接著才會往後端實作。

有時候即使所有的步驟都確認過了,還是會發生在實作階段才發現需要再做修改,這種情況下我們也是會進行討論修改。但這樣來回討論其實很花時間,所以我們會盡量在一開始就把需求給確認清楚。

技術

在 web app 我們主要是用 Ruby on Rails,如果有比較複雜的前端元件的話,會用 VueJS 處理。有些比較單純只有 API 的服務,我們會使用 ExpressJS。server provision 部分是使用 Ansible。AI server 部分是使用 Flask。大部分的服務都是跑在 AWS 上面,只有少數在 Heroku。

另外我們也在開發環境上使用 Docker,並計劃把 Kubernetes 用於針對 AI 架構。

目前的 test coverage 並不多,不過由於專案剛通過 MVP 階段,所以目前正在加強 test coverage。以前我還蠻自豪自己的 code quality,但開發這個專案的時候同時還有好幾個專案在跑,水深火熱之中整個品質就下降了...不過我相信提升 test coverage 之後品質就可以回到一定水準!

現今 web 已經分成很多不同領域,無論是後端、前端、或是 SRE 等,個人還蠻樂見其成的。整個團隊也有共識,知道什麼時候該深入某個領域,什麼時候該拓展其他領域,不會一味追求技術而已。


感謝你看到這邊,我們公司正在招募,如果有興趣的話歡迎來聊聊!