前言
和朋友們組建的一個Android技術交流羣最近很熱鬧,每次看消息都是99+,以前除了開車可見不到這樣的盛況。
企鵝頭像一直在閃,一直苦於沒有時間,後面點進去後發現,原來都是在談論找工作和麪試的話題。
圍城
事情的起因是羣裏來了一個小新人,是個女孩子,先是用甜甜的聲音請教了一些技術問題,羣成員瞬間活躍異常。
(別問,問就是沒見過女的,羣成員90%都是男的,剩下的10%說不準還是女裝大佬)
一開始還在正經的回答問題,結果到後面大家的話題就越來越歪了:建議轉行;祝早日離職;趕緊辭了吧……
本來想加入話題的我,看見了這些開始陷入沉思,靠在椅子上,忍不住點了一隻煙,我想起了錢鍾書先生在他的作品中寫過的一句話:婚姻是一座圍城,城外的人想進去,城裏的人想出來。
這話放在我們這份工作上也挺合適的:程序員這份工作也是一座圍城,城外的人想進去,城裏的人想出來。
城外的人想進去
在任意一個瀏覽器輸入“程序員”三個字,以360和百度爲例,在這個推薦的20條搜索中,有五條是關於“程序員入門”,“程序員自學”等相關的,而且排名很靠前。
上面的信息很直白的在傳遞着一個信息:很多人都想學習編程,想要成爲程序員。
此外,除了“學習”相關的熱門搜索,另外一個大家比較關注的點就是“工資”。程序員這份工作的平均薪資水平多次佔據榜首,這也是大家對程序員這個行業如此熱衷的原因之一。
2019年,IT行業薪酬水平穩居榜首,年平均工資爲161352元;排在第二的是科學技術,爲133459元;排在第三的是金融,爲131405元。
再看看下面這張圖,更直觀了,有70%的程序員薪酬在十萬以上。
上面這些原因導致一度出現三百六十行,行行轉IT的盛況。
城裏的人想出來
我記得我在逛某乎的時候,有幾個問題經常上熱榜:
“Android開發涼了嗎?” “程序員的出路在哪裏?” “感覺中國的程序員前途一片灰暗,是這樣嗎?”
這些話題下面有很多程序員都在吐槽自己,吐槽程序員這個行業
真相到底如何?
事實上,整天覺得世界灰暗的人,他們絕大多數都是那些些隨便學了一兩個月技術,項目都沒做過一個就想來拿高薪的人。
但是結果沒能如他們所願,工作只是每天敲些老代碼,上網搬輪子,坐着等加薪等升職,等提車買房的美夢落空了。於是上某乎吐槽。
其他那些認認真真學習技術,打磨了四五年的人他們大都換了個稱呼,他們叫做工程師,技術人,技術專家,技術經理。他們的前景一片光明,讓他們做一個月兼職的收入都比那些一味抱怨生活和工作,但是又不努力,不改變的二流程序員高。
如何做一個前景光明的程序員?
程序員這個行業靠不靠青春喫飯我不確定,但一定是靠技術喫飯的。
很多人帶着勞動密集型的思維來做技術密集型的事情。
體力勞動的附加價值能有多高?
而且程序員這個行業的出現真的拯救了很多不擅長混職場、不願意與人打交道的人,只要你能解決問題,哪怕你不說話,你的老闆也照樣給你加薪。
但這一切都是建立在你的「無可替代性」上的,如果你只會敲敲基礎代碼,搬搬輪子,百度一下,那你就很容易被替代。這樣的你也根本沒有底氣沒有籌碼談待遇,因爲這些工作是體力活而不是腦力活,而程序員應該是建築師而不是搬運工。
如何提升自己?
這裏我們可以從深度和廣度努力。
- 提升廣度
如果你選這個方向,可以嘗試做一名全棧工程師,而所謂全棧工程師是指掌握多種技能,勝任前端與後端,能利用多種技能獨立完成產品的人。
朝這個方向發展,不需要你每個方向的技術都學得多麼深入,每一種語言掌握80%左右即可。你可能解決不了很多高深的技術難題,但你可以一個人解決前後端大部分的問題。而且因爲對開發工作全局的瞭解都很熟悉,是離項目經理最近的開發人員。
- 鑽研深度
而如果你選擇第二個方向,就需要將某個技術領域的某一門或兩門編程語言學習透徹,要做到這個技術領域上的所有問題到你這裏都能得到解決。而常見的技術領域包括前端、後端、移動端、iOS開發等傳統領域,還有近幾年興起的人工智能、大數據分析、物聯網等。
具體方法有哪些?(此處只講Android程序員)
(一)學什麼?
當下時代,5G迅速鋪開,在智能手機普及,流量降價的大環境下,NDK技術是必不可少的。
此外還有很多技術都是被大廠所看重的,歸納之後大致有以下技術要求:
深度理解Android平臺架構、主要組成和工作模式;
有linux內核、framework和jni、虛擬機、安全逆向等底層技術經驗;
深入理解設計模式,能夠設計出高內聚,低耦合的系統框架,提升開發效率;
具有比較強的客戶端系統架構設計能力,在通用性、跨平臺和複用性方面有深刻的理解;
有大型軟件架構設計和重構經驗。
這裏推薦閱讀:
(二)怎麼學?
這裏給大家分享一下我自己的學習思路:
1. 學習基礎知識
Activity相關實體知識體系
• Task啓動原理與調用棧內核
• 生命週期與內核管理原理
• ViewGroup源碼解析
• View源碼分析與高級自定義View項目實戰
• 事件分發的核心機制
• Handler通信原理與框架手寫
• Intent數據傳遞原理和內核
• Hook Resource源碼實現
Fragment 內核
• Fragment事務管理機制與控件混合應用原理
• Fragment事務管理的原理
Service 內核原理
• 生命週期及AMS關係
• 兩種啓動方式啓動原理
• 基於內核的應用實戰
• Service進程優先級調優與實戰
• Service職責原理
實體間的通信方案
實體中數據存儲專題
2. 閱讀源碼+實戰運用
關於源碼的閱讀和實戰運用,我這邊梳理了一份筆記,還有在網上整理的一套實戰的教學視頻。
如果大家有需要,可以點個贊,留言“111”,支持我一下,然後口可以點擊此處藍色字體直接進我們兩千人的技術交流小圈子在羣文件取或者直接找我拿。
推薦閱讀:牛掰!阿里P7大佬爆肝半個月,把安卓源碼解析編成了508頁的PDF
最後
說這麼多,並不是想給大家制造焦慮,而是想告訴大家:堅持一個目標走下去是辛苦的,但是你的付出不會白費。
Android沒有涼,也不可能涼,畢竟當下Android用戶量是明顯擺在那裏的事實。只是,現在的Android對從業者的要求變高了,競爭變的激烈了,在這種環境下,我們更需要奮鬥,不是嗎?
最後,如果你覺得本文對你有幫助,希望可以點個贊,留個言,支持一下我,感謝。