Android開發如何進階?
本著每周至少有乾貨產出的原則,今天必須寫篇乾貨來回饋大家,我這的乾貨可是不收費的哦,爭取以後的目標是讓你們看完我的文章不讚賞都覺得虧得慌!
之前不少人都問我同一個問題,就是我學習Android有一兩年了,但是遇到瓶頸了,感覺沒什麼進步,到底怎麼才能進階呢?
我相信有不少人遇到這樣的困擾,那麼今天我就以一個過來人的身份給大家系統的解答各個階段遇到的問題。
初學者
一般來說初學者需要一本書,結合視頻,把書本看完基本上就算初學者了,需要提醒的是一定要記得把書中的demo全部敲一遍並親自運行,很多時候看不如敲,敲遠比不上親自運行。這個時間每個人學習能力不一樣,專職學習的話1-3個月差不多了。
初級工程師
一般工作一年以下的都算初級工程師,這個時候基礎知識基本都能掌握,比如四大組件的使用,常用的布局與控制項的使用,一些簡單的動畫與自定義View等,這個階段相對來說算進步挺快的,這個時候只需要找家相對靠譜點的公司,主動做事,多承擔任務,不要怕吃苦,多加加班,雖然說到加班大家都反感,但是現實就是這個時候你不加班多做點事,難不成等著以後覺得技能不夠用了再加班么?這個階段完全不用考慮生活與工作的平衡,因為這個時候你根本談不上生活。這個階段多努努力,很容易快速成長為中級工程師。
中級工程師
這個階段因人而異,大概工作經驗1-2年之間。但是往往這個階段才是遇到瓶頸的時期,這個時期也許你承擔app中單獨的某塊功能完全沒問題,對一些常用的開源庫也都能耳熟能詳,項目中也會採用一些比較流行的開源庫等,對常見的一些動畫、自定義View與布局也能很快實現,可能也會注意一些常見的代碼技巧,但是這個時候再也不是加加班就能對你的技術有很大提高的階段了,這個階段需要方法、實踐與執行力,那麼就這個階段如何進階我總結了以下方法:
1. 堅持寫博客
中級工程師不只是一味的去做事、學習,其實更多的需要對知識的總結與歸納,而寫博客是最好的手段,堅持寫博客其實就是對你知識體系的回顧與總結,很多時候你對某塊領域自認為掌握了,但是能寫出來,並且能讓別人看懂,那才是真正的熟練掌握呢,不說別的,就說一些IT界業內的大牛一般都有自己的博客,那些博客文章才是你知識沉澱的最好見證。至於更多寫博客的好處見這篇文章「我為什麼堅持寫博客?」
2. 在GitHub上參與開源項目
我曾無數次提醒大家GitHub堪稱程序員必備,聚集了全球各個領域的程序員,在上面你可以直接閱讀Google、Facebook頂級公司的開源項目,可以一睹頂尖工程師的風采,在這裡你絕對打開了另一扇世界大門,你可以閱讀大牛源碼,並試著貢獻自己的代碼,走出第一步,多參與,多交流,那句話怎麼說來著:「與優秀的人接觸,自己才會變得優秀。」同樣的道理,閱讀大牛們的代碼多了,自己不知不覺中就會成長進步。GitHub並不僅是一個名片,更是進階必備神器!
3. 有自己的完整作品
也許我們在公司參與不少功能的開發,不管是公司原因還是產品原因,或多或少我們為了趕進度也好,為了盈利也好,總有一些我們覺得不滿意的地方,比如設計風格上不夠Material Design,產品經理的一些天馬行空的垃圾想法,甚至一些KPI導向的功能實現等,我相信這個階段每個人心中都有這個想法,都覺得自己家的app不夠酷,不叫Android,所以這個時候就付出行動吧,利用業餘時間開發一款屬於自己的完整作品,你可以嘗試最新的技術與框架,用你認為最棒的工具,適配你認為的Material Design風格,這個過程不僅親自實踐了你之前想嘗鮮的新技能,還完整經歷了一個產品的構思與迭代過程,甚至最後把它開源,這個過程是非常寶貴的,其中你會遇到並克服各種問題,不知不覺中就在成長,開源之後你會在潛意識裡對自己的代碼要求更高,而且這款作品也會成為你之後簡歷上的加分項。所以如果你還沒有過這個階段,那從現在開始,著手準備並經歷這個階段吧,哪怕你沒有什麼有創意的idea,甚至高仿下開源社區或者市場上的一些app都可以,畢竟你是用來練手,不是用來商業,idea這個階段不是特別重要。
4. 看一些進階的書籍
看書是每個階段進步必備的過程,但是這個階段你需要看的是一些進階類的書籍了,不管是關於Java還是關於Android,你需要看一下以下書籍:
「Thinking In Java」
也許之前你看過,但是我相信對於一些高深的知識你肯定沒理解,這個時候再回頭看一下這本書,估計又是一番收穫。
「Effective Java」
這本書堪稱Java進階必備,裡面教你一些你不知道的Java技巧,以及一些常用的設計模式與原則,真正教你如何優雅的寫Java。
「Android開發藝術探索」
這本書是面向Android中高級工程師,裡面講到的一些知識點與技能很不錯,Android進階必備。
5. 閱讀Android源碼,理解一些高級概念
Java語言進階了,同樣關於Android你也需要進階,並不能停留在一些基本api的使用上,應該往更深層次的方向去研究,比如activity、view的內部運行機制,比如Android內存優化,比如aidl,比如JNI等,並不僅僅停留在會用,而要通過閱讀源碼,理解其實現原理。
高級工程師
我相信如果做到了以上幾個方面,加上時間的考驗你已經是一位高級工程師了,一般在工作3年以上。但是即使成為了高級工程師,你依然有更多需要學習的,比如技術方面關於網路,關於架構,服務端相關知識,都需要繼續學習與實踐。但是除了技術之外,高級工程師的區別就在於還會關心產品與業務,在考慮問題的思維方面其實就已經發生了蛻變,並不僅僅是從技術方面去考慮問題了,不再是一個單純的編碼機器,工作內容而是會橫向的擴散到其他方面。
我一直都說過,技術不是一切,哪怕你想走一個單純的技術路線,以後發展架構師或CTO,最終也一定是要參與產品、管理團隊、了解業務的,只不過側重點不太一樣,除非你想一輩子當個碼農,兩耳不聞窗外事,只想安安靜靜的躲在角落敲代碼,否則你都必須多方位發展。只不過在你們成為高級工程師之前這些都可以先不用考慮,等你們到了這一步我相信你們自然會理解今天我說的,如果你們感興趣,以後我再抽時間寫篇技術人的職業發展路線吧。
最後送大家一句話,人生每個階段都有每個階段該乾的事,你當下能做的就是踏踏實實做好現在的事,最好你能比你身邊的人更努力些,不用太著急,你想要的,歲月都會給你!
推薦閱讀:
※手機跑分的實踐性是否有如一些廠商所吹的那麼高?
※如何評價R11s開始測試基於Android 8.1的系統,並支持Project Treble?
※給 Android 初學者的 Gradle 知識普及
※加快 Android Gradle build 的十個建議
※面試阿里客戶端開發工程師(Android)實習生需要具備怎麼的能力?