大道三千,何以證道?前端
最近有私信、郵件給我諮詢一些職業生涯規劃的同窗,我在這裏以過來人的身份給你們一些建議。程序員
任何行業,任何職位,不管高低,不管大小,均可以分爲廣博、精深兩個方向。數據庫
精深天然指的是在某一領域造詣深厚,固然也不會是對別的技術一無所知,不然就成了獨腿人,豈能走得遠?
廣博天然指的是涉及面廣,知識豐富,對各類技術都有所涉獵,固然不會是淺嘗輒止的接觸,所謂的全棧程序員天然屬於這一類型,我自己也是這一類型的。編程
首先說一下精深,做爲Android程序員,所必需掌握的基礎知識:
0. Java核心編程
Android的開發語言是Java,因此Java是做爲一名Android程序員所必須掌握的。
我這裏推薦幾本書,Think in Java(Java編程思想)、Core Java(Java核心技術)、Effective Java,看過這三本書,你的Java技術就至關有保障了。性能優化
1. Android基礎知識
Android四大組件及生命週期
Layout佈局方式
各類控件的使用方式
Activity間傳值、Activity與Fragment間傳值
不一樣分辨率的界面適配
事件及回調機制
本地數據存儲
HTTP訪問網絡
Widget的使用
針對各個Android版本的適配前端框架
2. 進階
adb命令的使用
Activity、Service、Broadcaster互相調用
通知欄Notification的使用
Alarm的使用
SMS的使用
線程的使用
Handler消息機制
AsyncTask異步調用機制
Intent、Intent-filter的使用
使用自定義style、theme、drawable等方式美化界面
動畫效果的使用
硬件調用,攝像頭、錄音、錄像、地理位置
APP版本升級、本地數據庫版本升級
音頻、視頻處理
自定義佈局、界面
WebView的使用以及WebView和本地代碼間通信
各類第三方類庫的使用
各類第三方平臺的使用網絡
3. 高階
2D/3D圖形應用
傳感器的使用
藍牙、NFC等的使用
性能優化
NDK的使用
Framework層修改
自定義ROM
適配Android系統到不一樣的硬件設備前端工程師
我我的認爲,
基礎階段能夠製做出能用的功能簡單的APP、這是一個普通開發人員所必須掌握的;
進階階段能夠製做出好用的能吸引人的APP、這是一個技術負責人所必須掌握的;
高階階段則能夠製做出MIUI這樣的系統級別的框架了;更能夠進軍眼下火熱的智能家居、智能眼鏡行業了。這是一個技術總監所應具備的素質。框架
若是你要是想走廣博這條路,那麼會有不少新奇的、好玩的技術等着你。異步
可是首先,你要達到Android進階水準,不然就不要自稱是Android程序員了。
當你達到了進階水準後,你的興趣可能就不只僅止於Android,可能你對iOS有興趣,對服務端開發有興趣,對Web開發有興趣,對HTML5開發有興趣,對設計有興趣,對遊戲開發有興趣,等等等等,我這裏對每個方面都作一些簡單介紹吧。
iOS:
iOS和Android就是一對兒雙胞胎,不少人在作了一段時間的Android開發後,或者作了一段時間的iOS開發後,都想學學對方的技術。
我的認爲iOS的學習曲線較Android要高,學習成本也較大,蘋果三件套是必備的,不過iOS開發真的很火呀,並且開發出來的APP美觀度比Android不知道高到哪裏去了。
服務端:
Android APP是客戶端,那麼對於大多數的APP來講,是須要服務端提供服務、數據之類的,那麼現今流行的服務端有哪些語言呢?
首推Java,Java的框架多呀,開發快呀,資料多呀,像SSH、Spring MVC、Jfinal、ofBiz呀,這些都是很流行的框架,我這裏推薦Jfinal,典型的快速開發框架。
其餘像Python的Django、Ruby on Rails、ThinkPhp等都是動態語言Web框架的經典,能夠根據各自興趣着重學習一種。
最不推薦的就是.Net,雖然VS很強大,WebService也很不錯,可是我的認爲不像Java那麼規範,也不像動態語言那麼快速,最不喜歡.Net框架,我的偏好而已。
前端:
我把前端技術定義爲HTML(5)、CSS(3)、JS等這些技術的合併體,網頁所最終呈現出來的效果都是由咱們的前端工程師完成的。
並且如今有很是多的前端框架,像Bootstrap、JQuery UI、Semantic UI、NEJ、Pure UI、Amaze UI等等,都是如今很流行的框架,你們能夠學習學習。
設計:
我認爲的設計分爲交互設計、視覺設計,
視覺設計確定要掌握Photoshop之類的設計工具,而且有必定的美感(這個就仁者見仁了),
交互設計是如今設計中很須要強調的一部分,不少網站、APP外觀看起來也不錯,可是實際使用就感受有些彆扭,不盡如人意,那就是交互設計有缺陷。
一個經典問題:彈出框的[肯定][取消]按鈕,iOS默認肯定在右,Android默認肯定在左,那麼若是你是一個交互設計師,你的APP須要同時在兩個平臺發佈,這個按鈕你應該如何設計呢?
遊戲:
如今遊戲也是多種多樣,頁遊、端遊、手遊一波一波的,我這裏只對手遊有過了解,因此只說說這一部分。
手遊如今國內最火的框架就是cocos2d了,支持多種平臺,並且有不少的資源能夠參考;
另外像Unity、OGEngine、AndEngine、LGame、也都是不錯框架。
等你掌握了以上這些技術以後,你就是一個典型的全棧工程師了,從設計到開發到運營你均可以勝任,這個時候,你就能夠跟老闆說:我能夠幹五我的的活,只要三我的的工資了。
更能夠在家Soho了,做爲自由職業者,或者創業也都是不錯的選擇的。
看到這裏,你確定已經有了本身的選擇了。
我我的的見解是,走本身的路,讓別人說去吧。
本文章系本人原創,如需轉載,請註明出處 www.liuzhibang.cn