如何做一名有高度的移動開發工程師?10年大廠Android開發者經驗總結

如何做一名有高度的移動開發工程師?10年大廠Android開發者經驗總結

2019年對應程序員來說,是一個多災的年份,很多公司都進行了不同比例的優化和裁員。最近是找工作的高峯期,從很多同學的面試經歷來看,現在只會單純寫業務代碼的人找工作特別難,比如很多大廠的面試官都會針對性能優化的細節,考察你是否真正搞懂底層的機制和原理。環境的要求越來越高,所以我們也要積極轉變,踏踏實實的學習。

如何成爲一名 Android 開發高手,是很多Android開發人員的終極理想。作爲一名Android開發工程師,除了需要掌握基礎的Android知識,能夠熟悉的進行應用開發之外,瞭解Android 系統層、Linux 內核層再到硬件層的優化路徑,也是想要成爲 Android 開發高手的必備技能。

之前,我寫了一篇《2019總結:Android 寒冬難前行?—我的進階之路,送給正在迷茫的你!》的文章,文章中將Android開發進行了初級、中級、高級和專家的劃分,當時思考的是層層遞進,並不是說掌握某項技能你就是專家了。

做一名有高度的工程師

作爲一名技術工程師,不管你是從事前端開發還是後端開發,T 型技術人才理論都比較適合,所謂的“T”指的是橫向和縱向兩個維度。縱向解決的是深度問題,橫向解決的是廣度問題。並且我比較推崇先有深度再有廣度,因爲技術都是一通百通的。

作爲一個有高度的移動開發工程師,需要能縱向深入,也要能橫向全面地思考每一個問題。比如說,我們需要實現一個數據埋點上報系統,團隊希望治理數據的準確性和實時性問題,如果站在客戶端的角度上看,就是思考如何去實現一套數據不會丟失、實時性高以及高性能的埋點上報組件。我們知道,這裏面的進程模式、存儲模型、同步機制等都很複雜,要做一個高可用的上報組件確實需要具備一定的技術深度。

但是如果站在更高的角度上看,你會發現上報組件的優化並不能從根本上解決團隊的數據問題。埋點的規範是什麼?埋點的流程是什麼?產品、研發、數據、測試幾個團隊對於數據有哪些痛點?我們需要梳理一個埋點從產品定義、客戶端埋點開發、測試驗證、後端數據處理、數據展示和監控的整個過程。針對團隊的數據治理,我們需要體系化的思考每一個點的問題,從更高的角度去全局考慮。

單一終端到跨端

作爲一個誕生了10餘年的移動操作系統,Android的發展經歷了石器時代,農耕時代和電氣化時代,現在Android系統已經非常完善,資料和框架也很多。

回想一下,因爲當時 Android 系統的不成熟和不完善,反而造就了一個百花齊放的移動開發時代。在這個時代裏,我們總可以找到很多優化的點,並且持續打磨。隨着應用業務複雜性和要求的提升,單純在客戶端的單點優化已經滿足不了業務的訴求了,比如在直播、小程序這樣的複雜場景。

如何做一名有高度的移動開發工程師?10年大廠Android開發者經驗總結

此時,我們第一步就是要跳出自身客戶端的角色限制,從更爲全局的角度看問題、思考問題。你需要明白,客戶端的實現只是其中一小塊內容而已。

假如你接到一個提升H5頁面打開速度的任務,極致優化的基礎是我們能深入研究瀏覽器的渲染原理和緩存機制,但是前端和後端能夠做些什麼,又應該做些什麼呢?除此之外,頁面哪裏產生、如何發佈、發佈到哪裏、如何下載、如何解析、如何渲染、如何衡量和監控頁面的性能,這些全部都是我們需要思考的問題。

從平臺到中臺

相信很多搞過Android開發的同學都搞過組件化,所謂組件化,指的是可編譯成單獨的app,一般只負責單一業務,具備自身的生命週期。
組件化只是客戶端技術最基本的抽象的體現。怎麼理解呢?以性能組件爲例,雖然我們收集了應用各個維度的性能數據,但是這些數據在後臺如何聚合、如何存儲、如何分析、如何報警,我們並沒提供解決方案。

每個接入的應用還是要花很大的力氣去搭建一整套系統,爲了解決這個問題,集成式服務化的建設開始出現,比如以 Google 的 Firebase 爲代表的各個開發者平臺。爲了解決應用不同的場景,我們不斷地孵化出不同的服務平臺,此時中臺的概念被提了出來。

什麼是中臺呢?簡單的理解就是把這些分散的平臺又統一爲一個超大的平臺。有人會想我們是不是在開歷史的倒車?還記得當年我們將一個龐大的系統分拆成各個子平臺是多麼的艱難。事實上,這裏中臺的“統一”,更多是面向開發者層面的,例如都使用同一個賬號、不需要重複註冊、平臺之間互相閉環等。

在國內,阿里的中臺是做得最好的。當然騰訊、頭條這些公司也都意識到了它的重要性,最近都在積極調整組織架構,成立了專門的中臺部門。但是無論是中臺還是平臺,都是靠無數大大小小的優化點堆積起來得,它們都需要慢慢地積累,很難在非常短的時間內建設得非常完善。

關於中臺,可以參考阿里的《從平臺到中臺【上】》《從平臺到中臺【下】》

總結

經歷了10餘年的打磨,Android早已過了爆發期,現在更多的是走向平穩,所以移動應用也更多的專注在性能和優化上,如果你既有技術深度,又要有廣度那肯定是會受人追捧的。

所以對於工作年限不是很久的開發者來說,是應該先鑽研深度,還是擴展廣度呢?

我建議你應該至少先在一個技術領域付出大量的精力,深入鑽研透徹,然後再去思考廣度的問題

這是因爲經驗豐富的程序員學新的東西都非常快,因爲現在已經不那麼容易出現太多全新的技術,所謂的新技術其實都是舊技術的重新組合和微創新。成長是沒有捷徑的,只有深度原理,瞭解它的實現流程,你才能走的更遠。

所以無論你是在初創團隊,還是在大廠,都要在業餘時間堅持學習,持續探索自己的技術深度。這樣在將來,無論是初創團隊內部的晉升,還是跳到大廠,這樣努力的經驗都可以成爲未來無數次面試、加薪的一大亮點。

最後

對於程序員來說,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提升自己,從來都是我們去適應環境,而不是環境來適應我們!

當程序員容易,當一個優秀的程序員是需要不斷學習的,從初級程序員到高級程序員,從初級架構師到資深架構師,或者走向管理,從技術經理到技術總監,每個階段都需要掌握不同的能力。早早確定自己的職業方向,才能在工作和能力提升中甩開同齡人。

Android高級進階知識點總結

如何做一名有高度的移動開發工程師?10年大廠Android開發者經驗總結

在這裏小編分享一份自己收錄整理上述技術體系圖相關的幾十套騰訊、頭條、阿里、美團等公司19年的面試題,把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節,由於篇幅有限,這裏以圖片的形式給大家展示一部分。

還有 高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料 幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習。

【Android高級架構視頻學習資源】

如何做一名有高度的移動開發工程師?10年大廠Android開發者經驗總結

【Android核心高級技術PDF文檔,BAT大廠面試真題解析】

如何做一名有高度的移動開發工程師?10年大廠Android開發者經驗總結

【Android思維腦圖(技能樹)】

如何做一名有高度的移動開發工程師?10年大廠Android開發者經驗總結

上述【高清技術腦圖】以及【配套的架構技術PDF】可以 加我wx:X1524478394 免費獲取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章