沒有什麼行業比我們程序猿更重視新知識和學習了,畢竟互聯網行業一直都是走在信息更替的前沿。
但是我們程序猿天天都在 996 ,天天都是業務代碼,我們該如何學習,保持持續成長,提升自己給自己增值呢?
程序猿 996 的普遍現狀
我們安卓這個圈子不大,所以我和幾個大廠的朋友組建了一個移動開發技術交流圈。
大家平時都挺活躍,討論技術、工作還有生活。
最近大家都在感嘆,現在天天都是 996 ,感覺一直都在寫業務代碼,每天就是增刪查改,重複同樣的工作,真的好累,但是又不敢辭職,感覺自己現在就是閒魚,出去肯定要被虐。但是又不想安於現狀。
在這樣的情況下,我們安卓人該如何持續學習,實現技術進階?
這裏面,【持續學習】是一個很重要的關鍵詞。
996 下,我們該如何持續學習?
在學校的時候,我們每天有固定的時間用於學習,還有老師引導方向,答疑解惑。但是工作後,這一切都沒了,我們需要在搬磚之餘自己抽時間學習。
我也是想了很久,才決定歸納整理一下自己的心得,沒有太斟酌文字,供大家參考,只希望可以幫到像我一樣的普通Android開發者。
總的來說,大家根據自己的具體條件找到適合自己的學習方法纔是最關鍵的。
1.爲了喫上飯學習(被動學習)
如果你是在工作中,因爲客觀需要而去學習(比如實現產品經理提出的需求、設計一個技術方案、跳槽面試等)。爲了提高解決問題的能力,喫上飯
爲了喫上飯學習(被動學習)其實也有技巧。
這裏教大家在被動學習中掌握節奏,找到合適的方法。這裏主要分爲兩方面來講:工作和麪試(這是喫上飯的需要攻克的兩大重點)。
(1) 工作
在工作中,需要學習的場景一般就兩種:需求和產出。
- 如何實現這個需求
- 如何更優雅地實現這個需求
- 如何設計一個技術方案
- 總結最佳實踐
- 如何調試、看日誌,如何定位問題
- ...
總結來看就是一個如何在工作中解決問題。在此基礎上,我們會想辦法將它總結、輸出。
- 如何使用 *** 解決 *** 問題
- *** 的最佳實踐
- 深度學習 ***
- *** 在 *** 的應用
- ……
總結的過程也是一個學習的過程。
(2)面試
咱都是面試過的,大家都知道,準備面試真的很累,強度不輸於期末考試,在此期間我們需要持續輸入大量的知識。
但是,這是一個很強的學習動力,也是一次很好的學習機會。
A:總結自己的移動開發知識體系
總結知識體系的過程是一個查缺補漏的過程。遇到沒掌握或者瞭解不深的知識點,務必去了解、搞清楚,否則就不算掌握。
一般都需要經歷以下六步,這裏就不一一展開。
作爲一名有着快八年開發經驗的老Android,這裏我把自己的一個知識體系分享給大家,給大家提供一個參考。
- 底層基礎(或者可以叫他《移動開發架構師築基必備技能》第二點裏面有分享,這份資料是一個基礎知識的整合)
- Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化
- 360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化
- 解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack
- NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
- 微信小程序:小程序介紹+UI開發+API操作+微信對接
- Flutter等跨平臺開發技術
B:總結自己做過的項目
- 難點、亮點
- 技術架構
- 最佳實踐
- 涉及到的所有技術點都可以挖一下,看看有沒有某個點是自己描述不清的
這裏給大家推薦一篇超實用乾貨:震驚!項目經驗不會說?字節跳動小姐姐手把手教你"套路"面試官!
PS:這是一個憑藉實力進入字節的小姐姐寫的攻略哦建議按照這個準備一下項目
C:刷題
不多說,就是刷 LeetCode:劍指 offer、大廠題庫、歸納總結。
這裏可以給大家安利一份面試真題解析:1307頁字節跳動Android面試全套真題解析在互聯網火了 ,完整版開放下載
或者大家比較喜歡真人講解的,可以去B站看這個:https://www.bilibili.com/video/BV1jU4y1Y7Tx
D:覆盤
每面試一輪,就進行一覆盤,回憶一下面試過程,查缺補漏。
這個並不複雜,只要總結一下遇到的面試題,理清思路和參考答案即可。
2.爲了喫上更好的飯學習(主動學習)
如果你不滿足於只是喫上一碗普通的飯,而是想要在工作中提升自己,然後尋求更好的發展,喫上更好的飯,這裏大致總結幾種大多數開發者會用來主動學習的途徑:
- 經典書籍
- 大佬公衆號
- 知識付費
- 開發社區
- 免費公開課
- 長期培訓班
(按推薦指數排序)
在本文中會描述不同途徑的優點和缺點,以及我個人的學習方法分享。
(1)經典書籍
書擁有很多優點:
- 擁有完備的理論,方法論,幫助大家成體系地學習
- 有利於非常基礎、長期穩定的知識體系形成,受益整個職業生涯
- 深入學習,可以成爲理論王者,最後指導實踐
A:Android 開發者,應該看哪些書?
這裏推薦一些計算機類的經典書籍,主要是因爲這些書籍的知識密度大,而且內容都是偏向基礎的,表激動不會很大,不存在跟不上時代什麼的。
- 計算機組成原理知識:《深入理解計算機系統》
- 計算機網絡:《圖解 HTTP》、《圖解 TCP/IP》、《網絡是怎樣鏈接的》,再深入的話推薦《計算機網絡:自頂向下》
- 操作系統:《現代操作系統》、《操作系統—精髓與設計原理》、《Linux內核設計與實現》、《鳥哥的 Linux 私房菜》
- 數據庫:《SQL 必知必會》、《高性能 MySQL》、《Redis 深度歷險:核心原理與應用實戰》、《MongoDB權威指南》
- 設計模式類書籍
此外,一般我還會看業界大佬推薦,或者就是看最近新出了什麼書,如果感興趣都會買一本。
B:如何高效規劃看書學習
- 制定看書計劃
根據書的厚度安排一個期限看完,然後每天看固定量的厚度。
也可以根據自己的時間來安排,比如每天 1 小時
或者按照書的分節來,每天一章節(我是這種)。
- 如何高效看書
看書前: 看目錄
看書時:寫讀書筆記
看書後:實戰鞏固
技術書籍一般附有大量的代碼,可以跟着章節節奏動手敲敲代碼,加深記憶。
- 學會總結
閱讀完全書之後,可以回顧一下自己的讀書筆記,總結一篇全書的讀書筆記。
還可以將總結髮表在社區上,和大家交流討論,這樣你會收穫很大的滿足感,獲得正向反饋,然後有更多堅持看書的動力。
(2)大佬公衆號
很多人覺得公衆號就是垃圾營銷,不能學習,我想說的是,找到方法就能學到東西。
通過公衆號學習,我總結兩個關鍵詞:垂直和取捨。
垂直:關注 1-3 個垂直領域公衆號
獲取安卓領域深度文章、最新資訊、最佳實踐等,爲了深度。
- 關注 1 個計算機領域公衆號(獲取一些計算機領域的文章,擴展視野,爲了廣度)
- 不要在花邊新聞和標題黨上浪費時間(沒有營養,浪費時間)
- 不要關注當下對自己沒用的技術公衆號(容易焦慮,自卑)
取捨:判斷推文是否值得看
通過標題判斷是否值得閱讀
通過內容判斷是否值得收藏
是否需要深度閱讀?
是否未來可能對自己有用?
是否是一個解決方案、最佳實踐?Mobile 端碎片閱讀
由於屏幕和場景的限制,Mobile 端決定了無法深度閱讀一篇文章,這裏推薦的是大致掃一遍文章內容,瞭解通篇的主要內容即可。
- PC 端深度閱讀、分類收藏
在 Mobile 端碎片閱讀之後,如果覺得文章有用,則在 PC 端花時間深度閱讀,並且分類收藏,未來可能就會用到。
(3)知識付費
隨着國民經濟水平以及版權意識等的提高,這幾年知識付費挺流行的,各種培訓課程、專欄、視頻課程層出不窮。
這其實是一把雙刃劍,好的課程可以引導我們,不好的課程浪費時間甚至誤導我們,我們需要正確地看待它。
首先,知識付費存在即合理。天下沒有免費的午餐,想想,別人爲啥平白無故教你,然後來卷他?所以,想要讓別人教你一些東西,還是要等價交換的。當然,這個價不能太貴。
其次,我們需要取其精華去其糟粕。不是所有的付費知識都是值得的,有些很好,有些真的很辣雞。
如何爲知識付費?爲什麼樣的知識付費?
首先,不要反感知識付費,感興趣、有幫助就買,沒用的課程就別浪費錢。我這兩年還是花了不少錢買課的,可能你會說我是“韭菜”?但是我確實從中得到了我想要的東西,當然,我也踩過坑,這裏作爲一個過來人分享下知識付費的經驗。
三個基本點:
定向搜索自己需要體系化的知識點。比如想學 webpack 的時候,繁雜的配置和流程,如果有人能體系地指導一下,就非常好;再比如瀏覽器原理,這東西就很抽象,沒有實戰經驗,就需要有經驗的前輩給你總結一下
當被推薦、種草時。不要馬上無腦買,先打開目錄或者推薦語瞅瞅。這個課程講了啥?是拼湊的還是成體系的?自己能用得上嗎(查缺補漏、擴展視野、最佳實踐等)?
尋找優惠渠道。一般付費課程都有分享返現或者優惠碼的渠道。大家可以先觀摩一下,或者進入一些交流羣進行諮詢。
(4)開發社區
這裏的社區指的是一些社交平臺和技術社區,包括 GitHub、知乎、掘金、Twitter 等。
這裏推薦幾個我經常用的社區:
- GitHub
- CSDN
- 掘金
(按推薦程度排序)
GitHub:可以 follow 一些比較活躍的大 V,看他們的日常動態。
如果他 star 了某個倉庫,
- 點進去看看,瞭解一下這個倉庫幹啥的
- 如果感興趣可以寫個 DEMO 玩玩
- 如果未來可能用到,就也 star 一下,至少保留一個印象
- ...
如果他 follow 了某個人,
- 點進去看看這個人是不是比較活躍
- 是有比較有名的開源項目呢
- 還是有一個非常高頻原創的博客
- ...
準確地說,就是通過大 V 的眼睛去發現一些 GitHub 上的新東西,擴展視野。
CSDN:這是目前國內比較火的一個開發者社區
有非常多值得閱讀的文章。
我們可以每天刷刷首頁的推薦流,取其精華,發現高質量原創文章。
同樣我們可以關注一些大佬。
掘金:也是目前國內比較火的一個開發者社區,和CSDN差不多。
同樣我們可以關注一些大佬。
Twitter:主要還是關注一些大佬。
他們會經常在 Twitter 上討論某個技術方向、某個新工具以及一個有意思的 idea,主要就是看他們都在 “玩” 什麼。
玩社區的核心目的:持續關注和積累,保持好奇心。
平時看到啥技術相關的內容,都可以點進去了解了解。如果已經會了,關了就好;如果不會,就看看;如果可能對自己有用,那就收藏一下。~~俗話說得好,收藏 === 學會(並不)。
(5)免費公開課
由於現在的大環境很卷,包括培訓班也很卷,所以一般都有可以免費白嫖的公開課,大家如果看見了他們的公開課活動,剛好有感興趣的內容,不妨看一下他們的公開課。畢竟能出來做分享的人還是得有兩把刷子的。
說不定就嫖到了有用的東西了。
(6)長期培訓班
這一點我之所以放在最後,是因爲這是一個填鴨式的學習途徑。和上學一樣,這是短時間內進行高濃度的知識攝入,然後迅速的提升,可能會不容易消化。
在這裏,我也只推薦實在是迷茫找不到方向,或者是自己工作太忙是在是抽不出時間進行學習規劃,或者是想迅速就業的朋友試試看。
最後
說這麼多,其實就是想告訴大家:只要思想不滑坡,方法總比困難多。
工作再忙我們也不能縱容自己在技術上當一條鹹魚躺平(不然,遲早被淘汰)。
在這裏給大家推薦一份火爆全網,幾乎所有安卓開發人手一份的學習筆記,還沒有上手的趕緊整一份。
有需要的朋友直接【一鍵三連】,然後直接通過下方代碼塊找我領取。
// Wechat number(可複製):
study5233
- 架構師築基語言基礎
知識要點:
1、深入理解Java泛型
2、註解深入淺出
3、併發編程
4、數據傳輸與序列化
5、Java虛擬機原理
6、高效IO
- 設計思想解讀開源框架
知識要點:
1、熱修復設計
2、插件化框架設計
3、組件化框架設計
4、圖片加載框架
5、網絡訪問框架設計
6、RXJava響應式編程框架設計
- 360°全方位性能調優
知識要點:
1、設計思想與代碼質量優化
2、程序性能優化
啓動速度與執行效率優化
佈局檢測與優化
內存優化
耗電優化
網絡傳輸與數據儲存優化
APK大小優化3、開發效率優化
分佈式版本控制系統Git
自動化構建系統Gradle4、項目實戰
啓動速度
流暢度
抖音在APK包大小資源優化的實踐
優酷響應式佈局技術全解析
網絡優化
手機淘寶雙十一性能優化項目揭祕
高德APP全鏈路源碼依賴分析
徹底幹掉OOM的實戰經驗分享
微信Android終端內存優化實踐
- Android框架體系架構
知識要點:
1、高級UI晉升
2、Android內核組件
3、大型項目必備IPC
4、數據持久與序列化
5、Framework內核解析**
- NDK模塊開發(音視頻開發系列)
知識要點:
1、NDK開發之C/C++入門
2、JNI模塊開發
3、Linux編程
4、底層圖片處理
5、音視頻開發
6、機器學習
- Flutter學習進階
知識要點:
1、Flutter跨平臺開發概述
2、Windows中Flutter開發環境搭建
3、編寫你的第一個Flutter APP
4、Flutter Dart語言系統入門**
……
- 微信小程序開發
本篇知識要點:
1、小程序概述及入門
2、小程序UI開發
3、API操作
4、購物商場項目實戰
有需要的朋友直接【一鍵三連】,然後直接通過下方代碼塊找我領取。
// Wechat number(可複製):
study5233
總結
技術提升需要一定的過程,腳踏實地走好每一步,先定好一個個小目標,然後去一一實現。希望大家好好利用這份資料,最終達成所願。
如果覺得本文有幫助,點個免費的三連支持吧——