寫程式 = 複製對的東西,貼在對的地方。
《工作隨筆》系列
轉眼間,我已經在矽谷待了四年,從一名剛畢業的菜鳥工程師,變成團隊裡的老屁股。四年也正好是在香港唸大學的時長,這兩段四年的時光對我來說,都是我很珍惜的成果過程。
如果說我在香港唸大學的期間學到了「獨立生活」、「自己的個性」,還有「我討厭會計,喜歡寫 code」這些對於現在的我來說,非常核心的價值與想法。那麼,我在矽谷工作的前四年就讓我接觸到了世界上一流的人才,體會到厲害的人有一百種、一千種他們厲害的原因與方法。
而我則是非常榮幸地,有這個機會在他們身邊觀察,偷學個幾種。
小心地,慢慢地,我也在培養屬於自己的那一種。
這系列,我想偶爾提起筆,去紀錄一些工作上的小故事與頓悟。
我們團隊有夠缺寫 iOS 或者 Android 的工程師。
無可奈何下,幾乎所有手機端的專案最後都會跑到我身上。
雖然我是很樂於埋頭寫程式的,但這還是會壓縮到我能做其他重要事情的時間,讓我很難有空去鑽研使用者的資料、研究未來的 product roadmap、等等這些理論上也很重要很有趣的事情。
我也因此起了換組的想法。
也差一點點,我真的就去了做某個酷酷的新產品的團隊。
輾轉想了兩個週末,最後還是決定留在原本的團隊(畢竟,我還是真的滿喜歡現在團隊的人與產品)。但也趁此,我跟老闆要來了些彈性時間,去教團隊上的成員們寫 iOS 跟 Android。
雖然很多內容只適用於我們公司內部的開發架構,但一邊與這些在各自領域強大的同事們交流著,一邊就有了些值得被記錄下來的想法們:
做個能寫 iOS 的工程師,而不是 iOS 工程師。
跟同事們聊著聊著,我發現很多人對於開始做 iOS / Android 專案最大的心理障礙是「可是,我並不想成為一個 iOS 工程師」,因為那代表要學好多東西,也代表著要去做自己並不熟悉的工作。
「我是一個後端工程師。」
「讓我去寫 iOS,我可能花一樣的時間,就只能寫出一半的輸出。」
這些我都同意。但是,我也漸漸發現,其實,我們團隊並不需要 iOS 工程師。
我們需要的其實是,會寫 iOS 的軟體工程師。
這兩者是有差的。
前者是真的比較花時間,會需要去了解 iOS 裡面物件的 life cycle, cache, memory allocation 這些有的沒的概念與運作方式,但其實要能幫一個產品端的團隊偶爾寫寫 iOS 或 Android 程式碼⋯⋯真正需要學的只是如何設定開發環境,與打開 simulator 測試。
剩下的,說穿了就是複製、貼上。
複製對的東西,貼在對的地方
與任何後端、網頁端的專案一樣,通常一個手機端的專案並沒有大家想像的那麼複雜。
如果有,那就是還能被拆解成更簡單、更小的任務清單 (small tasks)。
隨便舉個例子,跟我們組做的事情完全無關,但比方說「要在影片裡插入一個廣告」,我們需要的其實是「在影片播放器裡的某個時間點,加載某些資訊」,然後「用這些資料顯示出一個漂亮的元件」。
在一間大公司裡,我的經驗是經過這樣拆解過後,大部分的 small tasks 都會有人做過了。或者,外部的 GitHub/Stackoverflow 搜尋看看,也肯定有人做過「在影片播放器裡加載資訊」與「寫一個元件去顯示資料」這些事情。
如果沒有的話,那大概有什麼步驟想錯了。
做產品的程式碼通常沒那麼難,不至於會需要發明什麼全新的東西XD
接下來,一個會寫 iOS 的工程師就只是要去找到這些早有人寫過的 code,然後試著去複製貼上。就算跑不起來,通常從 error 開始偵錯也不會太難⋯⋯一次一次偵錯過後,也會越來越上手的。
如果你也喜歡這種工作隨筆,歡迎訂閱這個部落格!
有什麼想法,也歡迎在下面留言!