大道三千,何以证道?
最近有私信、邮件给我咨询一些职业生涯规划的同学,我在这里以过来人的身份给大家一些建议。
任何行业,任何职位,无论高低,无论大小,都可以分为广博、精深两个方向。
精深自然指的是在某一领域造诣深厚,当然也不会是对别的技术一无所知,否则就成了独腿人,岂能走得远?
广博自然指的是涉及面广,知识丰富,对各种技术都有所涉猎,当然不会是浅尝辄止的接触,所谓的全栈程序员自然属于这一类型,我本身也是这一类型的。
精深
首先说一下精深,作为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