無論是開發、測試、運維,每一個技術人員內心都有一個成爲技術大牛的夢,畢竟「夢想老是要有的,萬一實現了呢」!正是對技術夢的追求,促使咱們不斷地努力和提高本身。java
然而「夢想是美好的,現實倒是殘酷的」,不少同窗在實際工做後就會發現,夢想是成爲大牛,但作的事情看起來跟大牛都不沾邊,例如,程序員說「每天寫業務代碼還加班,如何才能成爲技術大牛」,測試說「天天都有執行不完的測試用例」,運維說「扛機器接網線敲shell命令,這不是我想要的運維人生」git
提高技術的誤區: 有人認爲想成爲技術大牛最簡單直接、快速有效的方式是「拜團隊技術大牛爲師」,讓他們平時給你開小竈,給你分配一些有難度的任務。程序員
有這種想法是錯誤的,主要有這幾個緣由:面試
一、首先,大牛是很忙的,一個團隊裏面,若是大牛平時常常給你開小竈,不免會引發其餘團隊成員的疑惑,我我的認爲若是團隊裏的大牛若是真正有心的話,多給團隊培訓是最好的。然而作過培訓的都知道,準備一場培訓是很耗費時間的,課件和材料至少2個小時(還不能是碎片時間),講解1個小時,大牛們一個月作一次培訓已是很高頻了。算法
二、大牛很少,不太可能每一個團隊都有技術大牛,只能說團隊裏面會有比你水平高的人,即便他天天給你開小竈,最終你也只能提高到他的水平;而若是是跨團隊的技術大牛,因爲工做安排和分配的緣由,直接請教和輔導的機會是比較少的,單憑參加幾回大牛的培訓,是不太可能就成爲技術大牛的。shell
不少人覺得要學習就要像學校上課同樣,給你一成天時間來上課纔算學習,而咱們平時加班又比較多,週末累的只想睡懶覺,或者只想去看看電影打打遊戲來放鬆,因此就沒有時間學習了。小程序
實際上的作法正好相反:首先咱們應該在工做中學習和提高,由於學以至用或者有實例參考,學習的效果是最好的;其次工做後學習不須要大段時間,而是要擠出時間,利用時間碎片來學習如何想辦法真正的提高本身:more and morewindows
作的更多,作的比你主管安排給你的任務更多。熟悉更多業務,無論是否是你負責的;熟悉更多代碼,無論是否是你寫的微信小程序
這樣作有不少好處,舉幾個簡單的例子:設計模式
需求分析的時候更加準確,可以在需求階段就識別風險、影響、難點
問題處理的時候更加快速,由於相關的業務和代碼都熟悉,可以快速的判斷問題可能的緣由並進行排查處理
方案設計的時候考慮更加周全,因爲有對全局業務的理解,可以設計出更好的方案
Android應用是由Java語言進行開發的,SDK也是由Java語言編寫,對於Android來講,只要SDK沒有用kotlin重寫,那麼Java語言是都須要學習的。並且Android apk的後臺服務器程序大機率是java語言構建,因此學習java也是一種必然。那麼Java中哪些東西是咱們Android程序員須要學習的呢?因爲Android程序員習慣了 C V 代碼塊,因此與Android中比較相關的稍微比較難的Java基礎幾乎都是一個門檻,像 泛型,多線程,反射,JVM,Java IO,註解,序列化等,都是被 CV 的對象,而程序員是不懂原理的,具體內容如大綱所示。
這塊知識是現今使用者最多的,咱們稱之爲Android 2013~2016年的技術,可是,即便是這樣的技術,Android開發者也每每由於網上Copy代碼習慣了而致使對這塊常常「使用」的代碼熟悉而又陌生,因此咱們須要重新的角度去分析這些知識點,深刻研究他們,要學習源碼,模仿源碼,而後再hook源碼,這樣才能說本身懂這塊的知識。這些都是作Android開發,作高級工程師的基礎。
一個app的性能好很差咱們須要從兩個層面努力。第一個層面:書寫高性能代碼;第二個層面:調優。 如何寫出高性能的代碼呢?那就須要咱們具有深厚的代碼功底,這就是代碼的基礎。另外,對經常使用的算法有本身獨到的看法,leetcode上有刷個上百道題,這樣差很少能夠達到精通最經常使用的排序查找動態規劃等算法的能力。再者,高效的算法以及節省內存的數據結構若是配合優秀的符合應用場景的設計模式,那麼,這些就爲高性能的代碼提供了實現依據。 另一個就是對寫好的代碼進行調優,那麼調優的方向就是使用Profiler工具進行測試和檢查,看哪裏有性能消耗大的操做,而後分析對於代碼的問題。調優的方向就變成了如何對內存調優,對耗電調優,對網絡流量調優,固然,還有對啓動速度,頁面切換效果與速度,開機白屏體驗,閃屏方面的緣由等進行分析和調優。最後再加上一個屏幕適配相機適配。
如今去不少公司面試,除了你具有基本的可以寫一個高性能app的能力後,通常都會在本身的app裏面加一些現有的相對較 6的技術,這些技術咱們稱之爲前沿技術。他們通常包含熱升級,熱修復,App Instant,強制更新,組件化路由架構Arouter,RxJava,IOC架構方法,Hook技術等等,固然,這些技術你不能只會用,你須要知道他的原理,有時候,你還須要知道如何對這些架構進行改進。另外,很是重要的一點,Android開發者不肯意接受新知識,因此對於如今Google推出的新的技術方案毫無感受,這些都是被 control C 和control V所毒害,開源讓開發者失去了自我,失去了基本的編碼能力,失去了深刻學習的信心和毅力,因此對於不少google推出的新技術好組件(Google I/O 大會新技術),好框架已經不少人不肯意去學習了這是不該該的,咱們須要好好學習啊。
音視頻/高清大圖片/人工智能/直播/抖音等等這年與用戶最緊密,與咱們生活最相關的技術一直都在尋找最終的技術落地平臺,之前是windows系統,而如今則是移動系統了,移動系統中又是以Android佔比絕大部分爲前提,因此Android NDK技術已是咱們必備技能了。要學習好NDK,其中的關於C/C++,jni,Linux基礎都是須要學習的,除此以外,音視頻的編解碼技術,流媒體協議,ffmpeg這些都是音視頻開發必備技能,並且OpenCV/OpenGl/ 這些又是圖像處理必備知識,這些都在咱們課程裏面有原理級的實戰項目。
工欲善其事必先利其器,如何提升開發的效率,不少開發者在開發的過程當中因爲gradle不會用致使加載代碼很是耗時,這些就是工做成本。還有就是git的使用能夠幫咱們管理好咱們的代碼,這個很是關鍵,由於這個工具可讓咱們修改的代碼不會由於錯誤的操做而致使代碼丟失。另外,移動開發者,咱們至少須要知道如何抓取網絡包吧,其中,最經常使用的stetho就是一個很好的能夠進行網絡抓包的工具。
架構師不是天生的,是在項目中磨練起來的,因此,咱們學了技術就須要結合項目進行實戰訓練,那麼在Android裏面最經常使用的架構無外乎 MVC,MVP,MVVM,可是這些思想若是和模塊化,層次化,組件化混和在一塊兒,那就不是一件那麼簡單的事了,咱們須要一個真正身經百戰的架構師才能講解透徹其中蘊含的深理。
對Android進階,架構方面感興趣的朋友,歡迎加QQ羣:818520403 ,一塊兒學習,相互討論。 關於以上的技術選型,我這都有整理好的資料包括高級技術大綱以及一套系統全面的Android進階視頻,羣內也有各類大佬技術面試心得的交流和分享的資料,歡迎你們踊躍加入咱們,免費領取資料。
要想有機會,首先你得從人羣中冒出來,要想冒出來,你就必須作到不同凡響,要作到不同凡響,你就要作得更多! 成爲技術大牛夢想雖然很美好,可是要付出不少,無論是Do more仍是Do better仍是Do exercise,都須要花費時間和精力,這個過程當中可能很苦逼,也可能很枯燥,這裏我想特別強調一下:前面我講的都是一些方法論的東西,但真正起決定做用的,其實仍是咱們對技術的熱情和興趣!
年薪50W看似很少,可本身不努力一把怎麼知道本身的極限在哪呢?工做年限,年齡,公司大小彷彿這些東西限制了你的發展。可本身都不主動往上爬,你又憑什麼比別人優秀?