如何作一名有高度的移動開發工程師

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

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

以前,我寫了一篇《Android開發初級中級高級怎麼劃分》的文章,將Android開發進行了初級、中級、高級和專家的劃分,當時思考的是層層遞進,並非說掌握某項技能你就是專家了。面試

作一名有高度的工程師

做爲一名技術工程師,無論你是從事前端開發仍是後端開發,T 型技術人才理論都比較適合,所謂的「T」指的是橫向和縱向兩個維度。縱向解決的是深度問題,橫向解決的是廣度問題。而且我比較推崇先有深度再有廣度,由於技術都是一通百通的。小程序

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

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

單一終端到跨端

做爲一個誕生了10餘年的移動操做系統,Android的發展經歷了石器時代,農耕時代和電氣化時代,如今Android系統已經很是完善,資料和框架也不少。緩存

回想一下,由於當時 Android 系統的不成熟和不完善,反而造就了一個百花齊放的移動開發時代。在這個時代裏,咱們總能夠找到不少優化的點,而且持續打磨。隨着應用業務複雜性和要求的提高,單純在客戶端的單點優化已經知足不了業務的訴求了,好比在直播、小程序這樣的複雜場景。
在這裏插入圖片描述
此時,咱們第一步就是要跳出自身客戶端的角色限制,從更爲全局的角度看問題、思考問題。你須要明白,客戶端的實現只是其中一小塊內容而已。性能優化

假如你接到一個提高H5頁面打開速度的任務,極致優化的基礎是咱們能深刻研究瀏覽器的渲染原理和緩存機制,可是前端和後端可以作些什麼,又應該作些什麼呢?除此以外,頁面哪裏產生、如何發佈、發佈到哪裏、如何下載、如何解析、如何渲染、如何衡量和監控頁面的性能,這些所有都是咱們須要思考的問題。架構

從平臺到中臺

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

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

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

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

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

總結

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

因此對於工做年限不是好久的開發者來講,是應該先鑽研深度,仍是擴展廣度呢?
我建議你應該至少先在一個技術領域付出大量的精力,深刻鑽研透徹,而後再去思考廣度的問題。

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

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

相關文章
相關標籤/搜索