網路上流傳人生三大錯覺:1. 手機震動。 2. (遊戲中)我能反殺。 3. 她喜歡我。
至於每天與程式奮鬥的 App / Web 開發工程師,相信也有過屬於工程師人生的各種錯覺。就連剛憑 Village.co 獲得 2017 年 Apple App Store 最佳應用程式(開發者類別)的 Oursky 資深工程師們,以前在肝還正新鮮的菜鳥時代,也曾經掉進 coding 的盲點區。
以下我們會分享一下 Oursky 工程師們曾經歷的三大錯覺,以及摒除錯覺、讓 coding 人生柳暗花明的心法。
錯覺一:「寫 app 專注在前端 (front-end) 就好了,不需要懂後端 (back-end)。」
很多想要投身前端、或初次接觸 app 製作的工程師可能也有過這種錯覺。畢竟前台和後台各自負責的工作界線分明,一個負責呈現,一個負責實作。在理想的狀態下,如果有專門的 back-end 人員全程支援配合,前端工程師的確可以無後顧之憂,專心建構前台界面的視覺呈現。
But!人生最厲害的就是這個 but。
如果沒有後端支援怎麼辦?或者與後端工程師配合的默契還沒建立好呢?Coding 其中一個最容易卡關的地方,就是前端和後端無法足夠理解對方的要求,而導致前後端的銜接上產生種種的 bug。尤其對於以個人身分接案的 freelancer 或者嘗試獨立開發應用程式或網頁的 app / web developer 來說,缺乏完善的後端支援往往是一大阻礙。假如只專注在前端開發而完全依賴合作夥伴來管理後端,很容易在開發後期因為銜接不順而感到挫折,或需要花很多時間修正而延誤了產品上市。
心法:你不一定要變成全端 (full stack) 工程師,但懂一點後端概念會有很大的幫助。
不是每個人都對後端有濃厚的興趣,也不是每個人都有充份的時間同時修練前後端技術。術業有專攻,只熱衷於 front-end 也可以成為優秀的前端工程師。但如果在前端的基礎上,能具備一些後端的基本架構邏輯,你會發現在你歸類功能或選擇如何整合 API 的方法時,這些看似在前端開發不需要碰觸到的概念會發揮意想不到的作用,協助你理解後台的要求,快速做出最佳的決定;同時讓後端工程師不需要通靈技能滿點,就能配合你的程式設計作出調整。而假如你是完全沒有後端支援的獨立開發者,只需要懂得一點後端概念,就足以利用市面上的各種後端工具完成 back-end 的部分(比如我們自家的無伺服器生態系統 BaaS Skygear.io 讓使用者可以輕鬆架設後台,提供 chatbot、用戶登入、雲端資料庫等常用功能),不會因為資源限制而窒礙了開發夢想中的產品。
錯覺二:「只要寫 React native 就不用碰到 iOS / Android 的 code。」
React Native 這幾年作為主流框架 (framework) 之一,不僅因為使用 Javascript (JS) 為主要語言開發而降低了寫 app 的門檻;能同時產生 iOS / Android 的 code、有利加快開發的優點也讓 React Native 大受歡迎。我們也抱有個這樣的一個美好憧憬:「如果以 React Native 來寫,不就可以同步產出 Android 和 iOS 的 code 嗎?」
如果有那麼簡單就好了。
React Native 的確降低了寫 app 的門檻,卻不等於完全消除門檻。iOS 跟 Android 是兩套截然不同的系統,可想而知 React Native 要一次產生兩套不同的 code,自然會有其限制。尤其容易發生在 app 需要客制化 (customization) 去適應不同系統和裝置的時候。
心法:React native 是一項便捷的工具而不是捷徑。要做出客制化的 app,還是需要 iOS / android 的基礎。
就連 Airbnb 都明言當初期待 React Native 能夠一次生成兩套 code 的想法在實踐的時候遇到很多困難,可見暫時想要依靠 React Native 速成一個 app 仍然有難度。所以還是需要好好充實自己,特別是需要客制化的時候,利用 iOS 和 Android 的知識可以把產品在各自的版本開發得更到位。而且在預估開發時程上,也要留意不要被「寫 React native 可以節省一倍時間」的錯覺迷惑,避免到開發後期才發現時間不足。
錯覺三:「這個 bug 我只要一個小時就能搞定。」
這應該是每個工程師都曾經有過的最大錯覺了。
一些看似簡單的 bug,就是怎麼解都解不開,結果光是解一個 issue 就花上一整天。要破除這個錯覺,唯有累積自己的經驗和實力。假如你不是獨立工程師而是有一個富經驗的團隊作支援,事情就會容易許多。舉例來說,我們公司會定期舉辦內部的技術交流,讓同事互相分享科技新知和心得;也會安排工程師輪替參與不同的專案 (rotation) 來學習跟熟悉新的技術和平台,從中汲取經驗。
時程是專案的關鍵,需要全公司上下各個環節互相配合,才能確保在約定限期內交付產品到客戶手上。不只工程師需要鍛練實力和經驗,專案經理 (PM)、技術領導人 (tech lead)、品管部門 (QA) 也要共同協力。比如 Oursky 的 PM 會每天跟工程師溝通進度,確定每天的任務是否能如期完成還是需要重新調整;tech lead 會密切跟工程師進行 code review,如果工程師遇上解不開的 bug,tech lead 就會一起討論,適時提供意見和指導;QA 在測試的時候會詳細地提供有關 bug 的描述的資訊,可以幫助工程師更快的判斷問題所在。而要預估整個專案的進度,則會利用循證式時程規劃 (Evidence-based Scheduling, 簡稱 EBS) 估算出合理的開發時間,避免因為意料之外的 bug 而延誤進度。
心法:團結力量大,相信你的團隊,you are not alone!
結語
在開發的過程中,不管是新手還是資深工程師,總會有「啊!原來是這樣!」的時候。Coding 是一門深奧的學問,在開發的道路上難免會感到挫折,就連寫下不少得獎或編輯精選程式的 Oursky 工程師也不例外。
對工程師來說,從寫 app 到參與 web 製作,由前端摸到後台,直到發掘出自己的專長領域,是一個漫長的學習過程。但唯有慢慢培養實力,累積經驗,才能鍛練到快速精準的開發。如果將來有天,一位新手工程師向你請教「我是不是寫 React Native 就不用學 iOS 呢?」不妨給予一個鼓勵的微笑,耐心地跟他分享你的經驗吧。
Oursky 致力幫助品牌與企業家實現他們的點子。如果你正在尋找合作夥伴一起建立下一個自家數碼產品,來跟我們聊聊吧!