移動開發興起的時間并不長,但發展十分迅猛。
這些天經歷了一些工作上的波折,出來面試找工作,發現市場的變化實在太快了。
自己進入了一個泥潭,技能不夠,面試時毫無優勢。
于是自己思考了許久,到底是哪里出了問題,寫下一些分析和感悟,希望自己能夠走出這個泥潭,找到自己正確的方向。
移動開發興起的時間并不長,但發展十分迅猛。我們可以通過一些時間點來看:
- 2011年8月推出小米1,當時我是第一批前10w預約的用戶,拿到手了都已經是2012年初(熟練的耍猴功底)。
- Android 4.1Jelly Bean(果凍豆):2012年6月28日;
- Android 4.2Jelly Bean(果凍豆):2012年10月30日;
- Android 4.4KitKat(奇巧巧克力): 2013年9月4日;
4.X系統是在移動開發興起時使用人數最多的,大部分開發也正是在 API 16的時候加入進來。
來看一下當時的大環境,在2013-2015這幾年,移動開發處于風口,大量的投資者和公司都想做個 APP 出來,無數的人和資金涌向互聯網移動開發。一時間造成了前端開發供不應求,大量的零經驗培訓應運而生,也有不少后臺轉行學習前端,我正巧是這批人的其中一員。
這個時期大部分的公司,想做的 APP 都只有一個功能點 - 數據展示。
數據展示應該是 APP 最基礎的功能。說白了,APP 就是一個給用戶展示數據的前端,例如:淘寶、京東、美團等,就是將商品信息等數據,展示在 APP 上。而 APP 還需要一些美化,例如動畫效果、自定義控件等等。也就是說,這些在移動開發風口投入到 Android 開發中的,大部分都是做** UI 界面開發**,這也是最常見 Android開發。
回到現在,如果有人說想學習 Android,很多人都是不推薦的;如果有人想跳槽,那么大多數人給的建議是不要裸辭,為什么?
時代變了。
在市場的激烈競爭和淘汰下,有很多公司都已經不復存在了。公司沒了,但開發人員還在這個市場中,這就造成了開發人員供大于求,就連培訓機構都不開設 Android/iOS 培訓班。
同時有經驗和沒經驗的相差不大,打個比方,一個有經驗開發人員可以通過各種方法比如之前的項目、GitHub、Google等等,快速的將項目打造完畢,不用加班效果還很不錯;
而一個剛出來沒經驗的開發人員,通過加班加點、百度Google、自己琢磨等方法,還是能打造出一個能用的項目,雖然效果可能沒有那么好。
這讓有經驗的開發的優勢變的不那么明顯。更重要的是工資擺在哪,每個老板都想花更少的錢做出產品,從業人員基數大、需求少、經驗差距不明顯等因素,造成了一個工作難找的現象。
移動端開發的人基本都同意工作不好找,并且都認為這是屬于正常現象,市場歸于常態。那么是不是也用這樣的話來安慰自己:多找找總能找到好的。
不對,應該多學習,從而提高自己競爭力。
從2013年到現在,短短的4年時間,技術變更太迅猛。原先以為在學習了 UI 開發,花個2-3年時間鞏固加強,在尋找其他方向就可以,但實際上完全沒有鞏固的時間,在鞏固舊技術的時候,新技術已經誕生并應用,也就是說不應該去鞏固熟悉技術,而是要不斷的學習和使用新技術。
現在市場依然有一大堆開發人員在和你競爭同一個崗位,如果你僅僅只是比別人多做了兩個項目,多用了幾個第三方 SDK,多用了幾個開源庫,那么一下子就落后了。因為使用的這些東西都是別人已經使用過的。
想從開發人群中脫穎而出,最關鍵的還是掌握別人需要花時間來才能追趕你的技術。
如果現在的工作還只是做一些沒有什么難度的需求,寫個RecycleView,把數據展示出來,修復一下測試提出的Bug,自己封裝了幾個方法,為此就洋洋自喜:我這代碼寫的真不錯!那么可能就要思考一下這個問題:你做的這些,換成別人來做需要多久時間?
你想到的別人早就已去做了。
從哪些方面入手,該學什么,這也是我這幾天在摸索的東西。個人覺得,首先需要的是多方面的了解,也就是廣度,其次再談深度。不能一味的只做 UI 開發,應該更多方面去了解和學習其他方面的技術。有了廣度之后,結合工作上的內容,深入學習,才能真正擁有核心技術,讓自己更有競爭力。
以下是我自己最近看到的一些技術點
熱更新
熱更新是最近一兩年特別火的技術,已經趨向于完善,一定不要去在意什么蘋果公司禁用熱更新云云,上有政策下有對策,這個技術始終是要去克服的。
目前比較流行的熱更新技術有:Dexposed、AndFix、ClassLoader、Tinker、Nuwa、Robust等等
相關文章 Android 熱修復專題模塊化
模塊化也是最近經常被提起的一個技術,以前的移動開發都是重功能,輕架構,實現模塊化不僅是功能上的,還需要架構方面的知識,例如MVP、MVVC。
相關文章 安居客 Android 項目架構演進動態加載
動態加載一般是結合模塊化。比如說一個 APP 有 A、B、C三個模塊,在安裝完 APP 后,只有A模塊可以直接使用,B 模塊需要通過網絡下載,也就是動態加載后才可以使用,這樣就可以減小 APK 體積
還有的 APP 隨著功能的增加,引用到分第三方 SDK 越來越多,導致 APK 大小過于龐大,最主要的一個原因就是加入了太多的 .so文件,也可使用動態加載,先判斷自己的機型再來加載相應的 .so文件
相關文章 動態加載簡單易懂的介紹方式launcher開發
這也是我最近面試看到的,有關的資料我也在查看。
launcher其實就是一個app,它的作用用來顯示和管理手機上其他App。目前市場上有很多第三方的launcher應用,比如“小米桌面”、“91桌面”等等
相關文章 Launcher開發——入門篇SDK 開發
我用過很多第三方 SDK 比如友盟、百度地圖、支付寶、微信、新浪等等,感覺 SDK 都是大公司做的,似乎跟自己沾不上邊。
然而有很多其他公司也會做自己的 SDK,他們也有著自己的市場。比如通過手機連接攝像頭查看視頻,這就需要自己的 SDK 開發,讓使用者調用。
相關文章Android SDK 開發(第一部分)視頻開發
要說這一兩年最火的莫過于直播行業,這就涉及到視頻播放、視頻壓縮、視頻上傳、在線播放等許多技術
BILIBILI播放器 github - ijkplayer
吐槽第三方Android客戶端 github - Tucao反編譯
反編譯這塊我自己也不是很了解,個人覺得應該是類似360加固的這種,需要用到這個技術.
網上很多反編譯的文章都停留在2014年,相關工具早已不能使用,可以搜索關鍵詞:Smali 、jd-gui。
-游戲開發
游戲開發已經脫離了 APP 層面,需要更多技術來支持
相關的技術點視乎很多,想要全部精通視乎遙不可及。我工作了兩三年了,現在開始尋找一個好的平臺來發展自己,剛步入開發的時候,并不需要想這么多,技術都是在工作中去積累的。而當自己需要提高的時候,公司平臺的重要性就會體現出來。為什么這么多人想去BAT等大公司,就是因為那里的開發環境和氛圍好,有良好的團隊和人群一同交流進步。如果在一個公司,沒有自己的技術團隊,沒有人愿意去做技術的更新和重構,那么你的技術和工資就水平就很可能止步不前。技術還是要在工作上去使用才能更快的掌握和進步。
另外更重要的就是基礎,我也買了一本 Think in Java來看,Google的Android文檔現在也已經翻譯了不少developer.android.com,也可以在閑暇之余看看。
自勉。