2018年9月7日 星期五

CloudMosa 近七年的心得

老婆說這裡怎麼都是廢文 (只是最近懶得寫,只剩 CR 記錄 ...),還有怕日後忘了一些事,在這記錄一下上份工作的一些體悟。

老闆時常說一些有意思的話,像是 startup 就要站在趨勢對立面才有機會,不然大公司都來作,小公司不用玩了。或是通才不是什麼都碰一些什麼都不熟,而是在需要的時候可以很快變那個領域的專才。不過最讓我印象深刻的不是這些反直覺卻有道理的想法,而是在和公司大方向相近的前提下,讓大家作自己想作的事,而且他是玩真的。

從我入公司到離開,老闆對 UI 設計有一套他的想法,中途提過數次,後來甚至還有投影片說明。不過都讓做的人決定,然後做的人都沒有買單....,所以從來沒有實現過。我想老闆是真心相信只有讓做的人做他認同且想作的事,才能真的做好事情。他只要踢除和公司文化不合的人即可,剩下的讓大家自由發揮,偶而提提他希望作的事 (或多次加重呼籲,或找特定人個別論述),讓大家自行決定。要做到這點有許多前提,總之,在 CloudMosa 這特殊的環境下,老闆一直堅守此點。

CTO 並沒有什麼專長,和我過去認識的高手們相比,實在是普通到不能再普通。但他可以做出很多我之前沒想過可以做到的事。即使在我工作多年實力提升後,現在覺得我應該可以做到一樣的事,但我沒辦法這麼快做好。除了基本功和清楚的邏輯思維外,最重要的是執行力,外加體力。讓我親身體會到執行力的重要性。還有我體力太廢了,若想更進一步提升自己的實力,天生體質不佳,需要後天多些鍛練才行。不過在那之前,我更需要提升執行力。

綜合來看,老闆和 CTO 抓大放小都做得很到位,這也是我要加強的點,有些必要之惡就得日後處理,前期討論只是拖慢效率。

公司在僱人時很看重公司文化,重點是要會自己找事作,還有認同公司少數的「規範」,像是「做的人最大」。所以溝通有歧意時,就讓主要做的人發揮。在這樣的文化下,真的不怎麼需要管理,副作用是溝通相對算少,畢竟發言影響有限,多做點事比較實在。除非是很重要的議題,才會多些討論。這點是好是壞,偏個人喜好。每個人綜合重要和有趣的判斷不同,所以有些人可能會做你覺得不重要的事,或你做的是別人覺得不重要的事,互相無法干擾。平時大家各做各的,有重要大專案時,自然會有人起頭,等架構好了,中後期會有人自然的加入,不會閒置人力。

大家都當作泛用型開發者來用,就像 OS 配備多核心 CPU 一樣,人少就是少了幾核 CPU,跑得慢一點,或要減少要做的事,但不會有無法運作的問題。對個人來說,原本專長是寫前端的可以去寫後端,原本寫後端的可以推廣 UI framework。大家視專案吃緊程度和個人喜好可以跳做不同的事 (只要你覺得站得住腳)。這種環境下讓我達成單兵使用「Python, C++, Java, Objective C 四種語言完成一個功能」的成就 (Python + TDD 寫某個新 server、C++ 寫共用程式、Java / Objective C 寫 client 的 UI),難能可貴的經驗。

公司成員平均能力很強的時候,溝通成本會變低。因為大家寫的東西品質高,容易預測程式行為,用起來可以少擔心許多事。需要修改時自行看程式可以抓到七八成 (程式裡最重要的是要註明目的、原因和保留測資),多數情況不需問原作者就能直接改。大家時常交互改不同部份,不太會有某人太忙而有某塊功能無法修改的問題。

還有許多特別的事,有想到再來補,也許換工作後體會會更深吧。