之前面試 mobile app 工程師時,一位人選告訴我,他不想在原先公司(頗知名, 薪水也高)繼續做下去的原因,是因為 Android SDK 他已經很熟,再寫覺得也沒 有進步空間,所以想出來學一些其他的,例如底層一些的技術。
這似乎是個常見的說法,從剛入職場就常聽到,但可能年歲漸長,有些不同體悟。 例如寫 driver 就是那樣,系統整合就是那樣,所以想學別的。這其中必定有什 麼不對的地方,但是是什麼呢?
問題出在需求
Android SDK 本來創作出來的用意就是希望盡可能簡單,因為 Google 希望能讓 開發 Android app 是簡單的,吸引更多 developer 投入,才能讓生態圈蓬勃發 展。但開發界面上的簡單、API 的簡單,不表示功能上的簡單。如果覺得 SDK 學 完了,工作就變得太簡單,那應該是因為需求太簡單了。
為何需求是簡單的
Google 新出的 Inbox 功能簡單嗎?Facebook app 簡單嗎?要看由什麼角度來看。 他們致力追求的都是使用界面上的單純,但往往越單純的界面,後面的機制越複 雜。一個極度好用的功能,往往實作上相對困難。所以這裡延伸出的問題是,為 何在知名大廠,所面對的,仍然是實作上的簡單。
Mobile App 之外也經常如此
例如在 ODM 廠,處理來自各廠商的 BSP,做久了架構熟了,釐清的方式也熟了, 有問題找原廠支援,工作就開始容易。這表示 Android 系統面簡單嗎?問題恐怕 出在,為何沒辦法做到複雜的東西。BSP 已經是相對應用端,使用一個本來就是 為了方便使用者的 package,本來就不該困難。
廣 vs 深
於是可以發現,很少有真正簡單的領域,往往問題出在身處那領域的什麼位置。 台灣求深的廠商不多,相對的職位也不多,往往造成求深不如求廣,我自身就是 個例子。但這是個惡性循環,在職涯選擇上,或許可針對某特定領域,透過自我 要求,追求卓越,盡力往研發的上游端前進。
大勢不佳,但人才全球流動,以海盜心態武裝自己,拋棄故鄉,該去哪就去哪, 應該是概率最佳的選擇。若在本土發展,另闢蹊徑,總是比較困難的。