大道三千,何以證道?
最近有私信、郵件給我諮詢一些職業生涯規劃的同學,我在這裡以過來人的身份給大家一些建議。
任何行業,任何職位,無論高低,無論大小,都可以分為廣博、精深兩個方向。
精深自然指的是在某一領域造詣深厚,當然也不會是對別的技術一無所知,否則就成了獨腿人,豈能走得遠?
廣博自然指的是涉及面廣,知識豐富,對各種技術都有所涉獵,當然不會是淺嘗輒止的接觸,所謂的全棧程式設計師自然屬於這一型別,我本身也是這一型別的。
精深
首先說一下精深,作為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