30. The END
I did it!
沒想到自己可以堅持 30 天不中斷的完成「Android 十全大補」系列文章,身為一個要工作的爸爸,雖然必須每天焦頭爛額地擠出時間,但同時也是真心覺得開心可以把時間投入自己有興趣的領域,感謝幫忙照顧小孩的老婆,感謝颱風假、不用補班的工作、國慶連假,以及所有的讀者。
很開心能有這次的機會重新全面的檢視自己這十年來的在 Android 上的心得,可以重新把整個 Android 開發所需要的知識、工具,都再一次的回顧、學習感覺非常的好。
回顧
在 30 天的篇幅裡,我們大家一起從基本的 IDE 安裝、Hello World,到了解 View/Activity/Fragment 機制,學會使用特殊的 View 諸如 RecyclerView 呈現列表式資料或是 ConstraintLayout 來平坦地描述各個 View 之間的關係。
中期我們學會了如何用 Retrofit 從 api 獲取資料並使用 Room 存在 DB 裡,使用 RxJava 輕鬆的切換在多個不同的 thread 間切換觀察資料的流動,探討 Annotation 的定義以及 Annotation Processing 是如何在 compile 的時候幫我們建立程式碼。
慢慢進階到討論了 SOLID、Clean Architecture、MVVM、Modularization 等架構問題,學會如何使用 Dagger 或 koin 從外部注入 dependency。
緊接著是測試三部曲,Unit Test 執行單元測試、Mockito 模擬外部依賴、Espresso 來運行 UI 測試,Jenkins 的基本介紹與 hook ,以及最後的 App Bundle 來打包我們所有程式碼讓 Google play 動態產生最終使用的 apk。
希望這樣的編排與內容能讓你可以循序漸進地熟悉整個 Android 開發的流程,Android 還有很多有趣的內容是我們沒能在 30 天的內容裡提到的,希望我們提供給你很好的起點繼續探索 Android 的世界。
當這個系列越來越多人看的時候,內心非常開心,卻也十分煩惱,要是哪裡寫錯了,或是寫到一半因為任何因素放棄,或是文章品質不佳,感覺對各位讀者以及背後支持我參賽的人們很抱歉,所以憑著意志力,雖然有幾天拖到快寫不完,最後還是在時限內擠出來了。
身為一個工作超過十年的 Android 工程師,從參賽一開始自詡要分享自己十年來的經驗給讀者,慢慢的發現自己其實還有很多地方需要學習,一天一天的累積下來,最後我相信自己學到的可能比所有讀者都多,也鼓勵大家如果有其他類似機會、或明年的 iT 邦幫忙鐵人賽,可以把握這種鞭策自己的機會。
展望
這是 Android 的第一個十年,希望還能看到下個十年,但會不會有呢? Google 是著名的左右互搏高手,後起之秀 Flutter 崛起速度很快,同時能開發好幾個平台加上效能幾乎沒有差異,實在是令人眼睛一亮,但二個親兒子間的對決到底鹿死誰手,或許還要讓子彈飛一會兒。
更多 Google 砍掉的服務: https://github.com/codyogden/killedbygoogle
但不管如何可以確定的是最近幾年、甚至接下來十年都將會是開發者的黃金時代,筆者剛開始寫程式第一份工作月薪不到三萬,但現在可能整個台北都找不到月薪不到三萬的 Android 開發者了吧,而學 Android 跟其他領域比起來有什麼好處呢?筆者覺得:
vs Backend:
Backend 跟 Android 同樣程度薪水可能略高,但通常需要 on call,壓力可能稍微大些。
但以工程師生涯來說,擁有 Backend 的經歷是蠻重要的,比較有規模的公司很少看到 CTO 是純 Mobile/Web 出身的,通常是純 Backend 經歷或是混合多種技能居多。
vs iOS:
iOS 的開發限制比起 Android 多了些,Android 相對自由些。
但 iOS 開發者通常感覺比較潮,私底下跟朋友開玩笑討論過一個話題,怎麼分辨身處 Android 開發者聚會或 iOS 開發者聚會呢?主要差別在於下雨天時,腳臭味的程度。
vs Web:
Web 技術應該是演化最快的一個領域了,而且相較於 mobile,擁有更多工程師與更高的關注度,看 iT 邦幫忙鐵人賽的參賽人數就可以略知一二,不過筆者對 JavaScript 實在是說不上喜歡。
以上比較心得純屬個人好惡與個人觀點,不一定真正反映現實世界,只要有心人人都可以在各自的領域成為高手,也歡迎分享你們的心得呦~
最後不敢說 30 天內完成了一份曠世巨作,但希望我的心得與分享能讓各位順利的入門或是進到 Android 開發的下一個境界,再次感謝照顧小孩的老婆,感謝颱風假、不用補班的工作、國慶連假,以及所有的讀者。
Last updated
Was this helpful?