Android 專家之路
The way to become a professional Android/Kotlin developer
首先,我是蘋果產品的用戶,我喜歡 🍎 生態圈的高度穩定、產品串聯、隱私保障、高級感受、品牌價值,也曾經想過要成為 iOS developer,然後開始自我懷疑。2023 年,邁入人生的下一個黃金十年(我認為任何一個十年,都可以是黃金十年),開始思索「對我來說,如果成為 iOS developer 是否是最好的職涯策略?」,想解答這個問題,可以從兩大面向 — 「個人」與「平台」,開始進行客觀評估。
個人面向
包含了「個人特質」與「開發經驗」。我自己是對於原理/本質的探究特別感興趣的人,搞懂一個東西背後的運作原理,就會感到特別有成就感!
舉個例子,軟體開發中很常見的難題「非同步的事件處理」,不管是 Android、iOS 、網頁前/後端或是 Server Side 的開發都會遇到,所以我的成就感來源,並不受限於特定開發領域,而是來自於「原理/本質的探究」以及「需求/問題的解決」。
過去的開發與研究經驗,大致包含:網頁後端(PHP/CodeIgniter)、影像辨識(傳統方法/ML方法、Python)、Android(Java/Kotlin)、Server 架設(Ubuntu/Linux command-line)、一點點的 C++/C#/Swift…,這些重要的經驗,構築了自我信心的一部分與對於軟體開發的直覺。
平台面向
包含了「Apple」與「Google」,兩大平台的差異。本質上,蘋果是一家軟硬體整合公司,一直以來,瞄準的就是高端客群(也有較平易近人的產品分支),透過優秀的軟硬體整合、工業設計、說故事的能力,塑造出高級感又效能十足的產品,從賈伯斯時代到庫克時代,仍持續驚艷整個市場。對於蘋果開發者來說,完全可以穩穩地待在「生態圈」裡。
谷歌,由搜尋引擎起家,本質上是一家軟體公司(也透過收購硬體公司部門,來提升硬體開發能力),軟體服務的串連度相當高,只需有一個 Google 帳號就可以存取所有的谷歌服務,基本上大家已經很習慣使用谷歌的各種服務,也能發現谷歌持續在營造自己的「生態系」。
如果說蘋果想表達的是一種高級感,那谷歌想表達的應該是另一件事 — 「資訊傳遞」。
智慧手機的本質
什麼是智慧手機的本質?我想應該是 — 「資訊傳遞」,反過來說,因為人有「資訊傳遞的需求」,所以發展了「資訊科技」,而智慧手機只是實現資訊傳遞的其中一種形式。就像,人有「在空間中移動的需求」,所以發展了「移動載具科技」,而車子只是實現在空間中移動的其中一種形式。
「https://www.android.com/everyone/enabling-opportunity/」這個頁面中提到 Android 的優勢與使命,節錄以下幾點:
- Building a platform that’s open to everyone — 建造一個平台,並對所有人開放(Android is Open Source)
- Driving affordability across the globe — 讓全球各地的人們都負擔得起一支手機的價格
- Choice and openness fuel economic growth — 在全球行動裝置經濟中,驅動了 1300 萬(13 million)個工作機會與 3 萬億美元($3 trillion)的 GDP 成長
- Democratizing access to information around the world — 智慧手機不只是手機,也是通往知識的門路。世界上還有很多區域,沒有行動網路覆蓋,只能透過手機與固定頻寬來上網
老實說,看完這幾點,我真的很慶幸自己可以出生在這個年代的台灣,因為世界上的一些其他地方,可能因為貧窮、戰亂、政治動盪…等因素,導致人民的生活非常艱困,甚至負擔不起一台手機。(推薦聽 N.G.太太 的說書 — 解讀可能性的藝術,會明白台灣真的是寶島!)
選擇 Android
對我來說,Android 可能比較像是玩具,就像當初 Linus Torvalds 開發 Linux kernel 一樣,也覺得這是「玩具」,既然是玩具就會想要一直玩它,一直探索不一樣的玩法,而且越玩越順手,成為頂尖玩家。
最初接觸 Android 開發是在大學時期(怎麼有點像回憶往事😅), 當時版本還在 KitKat,我把筆電灌成 Ubuntu Desktop 使用 Eclipse 進行開發(Android Studio 還沒問世),Eclipse 時常因為不明原因 crash,導致開發體驗不太好,後來轉向研究網頁開發;研究所時期,選擇影像辨識 ML 相關的研究主題;開始工作後,再次接觸 Android 開發,發現經過幾年的迭代升級,Android 系統與開發體驗已經有了相當顯著的進步!
緊接著,就是 Kotlin 成為 Android 開發的主流語言,完整兼容 Java,並提供更多彈性又安全的語法,而且官方推出的 Kotlin Multi-platform Mobile(目前為 Beta),提供開發者跨平台開發的選項,使用同一種語言也能開發 iOS,十分吸引我。
上圖為 Android/Kotlin 延伸之技術主題,使用 Kotlin 也可以進行網頁開發 ,框架包含 Ktor、Spring Boot;在需要提升效能、降低延遲、大量運算的應用中,加入 NDK 的開發做法;有跨平台需求時使用 KMM,Android 團隊中只需加入少量 iOS 工程師,或者請部分 Android 工程師學習 iOS 知識;深入了解系統核心架構的設計後,解決問題或提出方案,才能做到知其然知其所以然。
我相信下一個十年,Android、iOS 都依然扮演著資訊傳遞的重要角色,也很看好 Android 可以在不同硬體上運行的可移植性。另外,我認為可以關注的議題,包含:Flutter & Fuchsia OS(已經在 Google Nest Hub 上使用)、Digital Twin(數位孿生)…。
以終為始地往前邁進
當然,先決定方向然後努力,先有想法然後再有做法:
- 向先進學習,培養領域知識的土壤:官方文件/影片、鐵人賽系列文章
- 埋下種子,並發芽成長:持續開發 Side project、參加今年的鐵人賽
動機就像燃料一樣,驅動一個人去達成目標。這篇文章說明了從個人特質、平台分析,到選擇 Android/Kotlin 可以有怎樣的優勢與延伸主題,大致規劃了未來十年的個人職涯技術佈局,也重新呼應這句話「專注做到最好,錢就會來找你」。
Last updated Jan 10, 2023