不懂得產出學習,只能原地眼紅別人成長過快!老闆:新來了一個Android高級開發你收拾一下提前過年吧!

有朋友吐槽,工作幾年每天做着crud的工作,漸漸的沒有了成果產出,學習能力也退步了,每天做着重複的工作等着下班,結果有一天被老闆炒魷魚了,僅僅是因爲招來了一個好學的Android高級開發。。。。被辭之後他才意識到要技能提升,所以問我有沒有什麼好的學習路線或者什麼學習的捷徑。

大家都清楚,我們提升自己的學習方式,一般分爲:

1. 自學,自我提高的一個過程;
2. 跟着公司項目成長,就是我們所說的做業務迭代的過程。

算了算,我也快工作七年了,這七年在不同時期有着不同的認知,也浪費了不少的學習機會,不過也總結了一些良好的學習習慣,今天跟大家分享下如何正確的利用工作環境學習。

一、線上疑難雜症

首先工作環境下,和自學是不同的,這裏是實戰,也就是將你所學的知識應用到線上,經過無數用戶對你的代碼進行驗證,在不同配置的機型,不同的使用習慣,不同的網絡環境下,會遇到很多問題:

① crash ,一般爲應用添加監控主動上報
② 兼容性問題,一般由用戶主動反饋

以上兩類,一般業務上引發的問題,都能解決。

最後在平臺上,都會剩下一些非常難解決,影響也不大的,我們稱之爲線上疑難雜症。

這類問題,想必大家都會遇到,很多時候,我們的態度是:

"沒什麼影響,大家都有"

"又不是我搞得,不管"

這樣的態度是極其不正確的,這些問題纔是學習的非常好的材料。

很久以前,曾經我參加過一次面試,問題就是有沒有遇到過一些難搞的異常,是如何解決的?

當時我參與業務開發並不多,一時語塞,自己好像並沒有特別關注過這些。

現在想想,是極其不應該的。

很多時候,我們抱怨做業務沒有成長,恰恰相反:

我們在業務過程中,面臨百萬甚至千萬級用戶,總會遇到各種各樣難解的問題,這些問題恰好是幫主我們成長的非常好的學習資料,而往往被我們自己懶惰 or 逃避的心態放棄了這樣的學習機會。

所以,如果你看到這篇文章,不妨多關注這些問題。

有一個好消息是這些方案,一些業界大廠都會比較追求極致,往往也會分享一些技術性文章解釋如何解決,我簡單舉幾個例子:

1. finalize time out Exception

滴滴曾經分享:

  • 滴滴出行安卓端 finalize time out 的解決方案

2. bad token Exception

bugly 也分享一篇 window 的文章,其中對 token 也有一定的解釋:

  • 淺析 Android 的窗口

也有一些非常優秀的個人開發者,針對 toast bad token exception 開源自己的方案:

https://github.com/PureWriter/ToastCompat

3. SharedPreference 導致的anr

頭條技術團隊,對於 SharedPreference apply 引發的 ANR 問題的分析與解決。

  • 剖析 SharedPreference apply 引起的 ANR 問題

4. webview的一些崩潰與兼容性問題

5. RxJava 使用不當引發的一些奇怪的問題

...

這些疑難雜症就擺在你的面前,而且有非常多的解決方案,可以讓你去嘗試解決,線上的環境又可以支撐你去驗證。

不妨追求極致,嘗試去修復這些問題。

這些可是自學環境下學不到的,即使你自學學到了這些問題的解決方案,也沒有足夠的條件讓你線上驗證。

另外,在工作中有什麼追求極致的想法,例如一些極致的優化方案等,千萬不要藏着掖着,嘗試幹一波,上線驗證一波。

不經過線上驗證的都是紙老虎,你永遠沒有辦法瞭解方案的穩定性。

二、線下疑難雜症

另外,我們在正常的業務迭代過程中,自己或者同事,偶爾也會遇到一些比較難搞,或者極度不符合預期的問題,一般有:

1. 正常開發過程中遇到的難搞的需求;
2. 實現過程中與預期極其不匹配的情況;
3. qa報的比較偶現的bug;

這些問題,可以適當的關注一波,當然並不是把這個問題攬過來,可以去了解下這個問題,嘗試自己解決下,或者思考爲什麼會這樣,有結論了可以和同事討論一下,共同解決。

沒有結論,作爲未知知識,後續同事解決了,問一波,再看下代碼,也算學到了。

不是所有的需求都能遇到疑難雜症,遇到了不要退縮,反而應該慶幸,感覺要學到了,今天又賺到了。

記得有一次,我們遇到一個非常奇怪的線上問題,和同事一起搞了好多天,連續發了多個版本驗證,針對遇到的問題,各種猜想、驗證。頂着壓力解決後,後面回顧這段時間,都會說道:

這波不虧,學到了。

在一個團隊中,這樣做事不設邊界,除了能學到更多,也能和同事相處更加融洽。

三、總結

很多時候,有同學問我

「有哪些具體的知識學了之後就能成爲高級工程師呢?」

沒有。

職級都是公司賦予你的,並沒有什麼具體的知識學完就是高級工程師了,更多的還是要結合實際的項目經歷,所以選擇一個自己認可的公司,不斷學習與積累,跟隨項目成長,最終得到認可,賦予你 "高級"的 title。

而想要快速成長,文中給出了兩點可以借鑑的方案。

其次,咱們這一行,絕大多數問題都不需要拼智商,90%的你遇到的問題,別人都遇到過,都能靠着搜索引擎解決。

但是每次解決後,如果你有心,去探索背後的原理:

1. 爲什麼會有這個問題?
2. 這個解決方案,最終解決問題的本質是?
3. 瞭解了本質後,是否還有更佳的解決方案。

長此以往,差距慢慢就顯現出來了。

”有些同學遇到問題,依舊依靠搜索引擎“

”有些同學遇到各種問題,基本上看一眼報錯,結合上下文,馬上能想到問題的本質。“

想要快速技術成長,先擺正自己的態度,做好長期積累的準備。

四、如何長期的技術積累?

綿薄之力:

不知不覺自己已經做了幾年開發了,由記得剛出來工作的時候感覺自己能牛逼,現在回想起來感覺好無知。懂的越多的時候你纔會發現懂的越少。

不用多說,相信大家都有一個共識:無論什麼行業,最牛逼的人肯定是站在金字塔端的人。所以,想做一個牛逼的程序員,那麼就要讓自己站的更高,成爲技術大牛並不是一朝一夕的事情,需要時間的沉澱和技術的積累

關於這一點,在我當時確立好Android方向時,就已經開始梳理自己的成長路線了,包括技術要怎麼系統地去學習,都列得非常詳細。

至此,做爲一名Android開發者,在工作項目上可能給不了大家太多實質性的幫助,只能在同學們自學的路上儘自己一點綿薄之力,接下來我想分享一下這些年來,我對於技術一些歸納和總結,和自己對作爲一名Android高級開發者需要掌握那些技能的筆記分享,希望能幫助到有心在技術這條道路上一路走到黑的朋友!

  • 架構師築基必備技能

目前Android APP開發主流語言就是Java語言,Java語言最大的特性就是提高了軟件的交互可能性,可以說安卓手機幾乎所有應用程序都是利用Java語言來進行編寫的。

知識要點:
1、深入理解Java泛型
2、註解深入淺出
3、併發編程
4、數據傳輸與序列化
5、Java虛擬機原理
6、高效IO





設計思想解讀開源框架

隨着互聯網企業的不斷髮展,產品項目中的模塊越來越多,用戶體驗要求也越來越高,想實現小步快跑、快速迭代的目的越來越難,插件化技術應用而生。如果沒有插件化技術,美團、淘寶這些集成了大量“app”的應用,可能會有幾個g那麼大。

所以,當今的Android移動開發,不會熱修復、插件化、組件化,80%以上的面試都過不了。

知識要點:
1、熱修復設計
2、插件化框架設計
3、組件化框架設計
4、圖片加載框架
5、網絡訪問框架設計
6、RXJava響應式編程框架設計





  • 360°全方位性能調優

在不同層次的開發工程師手裏,因爲技術水平的參差不齊,即使很多手機在跑分軟件性能非常高,打開應用依然存在卡頓現象。

另外,隨着產品內容迭代,功能越來越複雜,UI頁面也越來越豐富,也成爲流暢運行的一種阻礙。綜上所述,對APP進行性能優化已成爲開發者該有的一種綜合素質,也是開發者能夠完成高質量應用程序作品的保證。

1、設計思想與代碼質量優化

2、程序性能優化

  • 啓動速度與執行效率優化
  • 佈局檢測與優化
  • 內存優化
  • 耗電優化
  • 網絡傳輸與數據儲存優化
  • APK大小優化

3、開發效率優化

  • 分佈式版本控制系統Git
  • 自動化構建系統Gradle

4、項目實戰

  • 啓動速度
  • 流暢度
  • 抖音在APK包大小資源優化的實踐
  • 優酷響應式佈局技術全解析
  • 網絡優化
  • 手機淘寶雙十一性能優化項目揭祕
  • 高德APP全鏈路源碼依賴分析
  • 徹底幹掉OOM的實戰經驗分享
  • 微信Android終端內存優化實踐

  • Android框架體系架構

Android框架體系架構(高級UI+FrameWork源碼) 這塊知識是現今使用者最多的,我們稱之Android2013~2016年的技術。

Android開發者也往往因爲網上Copy代碼習慣了而導致對這塊經常“使用”的代碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道, 天天在複製這些代碼 ;陌生的是雖然天天和這些代碼打交道,但是並沒有深入研究過這些代碼的原理,代碼深處的內涵。

本篇知識要點:
1、高級UI晉升
2、Android內核組件
3、大型項目必備IPC
4、數據持久與序列化
5、Framework內核解析




  • NDK模塊開發(音視頻系列)

NDK(Native Development Kit縮寫)一種基於原生程序接口的軟件開發工具包,可以讓您在 Android 應用中利用 C 和 C++ 代碼的工具。通過此工具開發的程序直接在本地運行,而不是虛擬機。

在Android中,NDK是一系列工具的集合,主要用於擴展Android SDK。NDK提供了一系列的工具可以幫助開發者快速的開發C或C++的動態庫,並能自動將so和Java應用一起打包成apk。

本篇知識要點:
1、NDK開發之C/C++入門
2、JNI模塊開發
3、Linux編程
4、底層圖片處理
5、音視頻開發
6、機器學習





  • Flutter學習進階

2019 年無疑是 Flutter 技術如火如荼發展的一年。

每一個移動開發者都在爲 Flutter 帶來的“快速開發、富有表現力和靈活的 UI、原生性能”的特色和理念而癡狂,從超級 App 到獨立應用,從純 Flutter 到混合棧,開發者們在不同的場景下樂此不疲的探索和應用着 Flutter 技術,也在面臨着各種各樣不同的挑戰。

本篇知識要點:
1、Flutter跨平臺開發概述
2、Windows中Flutter開發環境搭建
3、編寫你的第一個Flutter APP
4、Flutter Dart語言系統入門





  • 微信小程序開發

微信小程序作爲現在比較火的編程開發應用場景之一,深受市場的青睞,這讓不少開發者眼饞不已。但是對於初學者來說,就完全摸不着頭腦了,不知道微信小程序開發製作需要學習那些知識,有需要的朋友可以參考本篇。

本篇知識要點:
1、小程序概述及入門
2、小程序UI開發
3、API操作
4、購物商場項目實戰



  • Android相關源碼解讀

只要是程序員,不管是Java還是Android,如果不去閱讀源碼,只看API文檔,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。

以上內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容

技術之路就是漫長的打怪升級,不斷學習前人的踩坑經驗才能提升自己,切忌閉門造車。所謂獨樂樂不如衆樂樂,分享以上學習資料,希望小夥伴們能在 coding 的路上走的更遠!

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