zoukankan      html  css  js  c++  java
  • 程序员之路:以Android证道

    大道三千,何以证道?

    最近有私信、邮件给我咨询一些职业生涯规划的同学,我在这里以过来人的身份给大家一些建议。

    任何行业,任何职位,无论高低,无论大小,都可以分为广博、精深两个方向。

    精深自然指的是在某一领域造诣深厚,当然也不会是对别的技术一无所知,否则就成了独腿人,岂能走得远?
    广博自然指的是涉及面广,知识丰富,对各种技术都有所涉猎,当然不会是浅尝辄止的接触,所谓的全栈程序员自然属于这一类型,我本身也是这一类型的。

    精深

    首先说一下精深,作为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

  • 相关阅读:
    85 容器(十二)——队列与栈:LinkedList的光芒万丈
    84 关于数据结构中的添加与取出的方法:push pop poll offer add get...
    83 lambda表达式
    82 subList()方法于asList()的細節以及UnsupportedOperationException
    81 Javaassist——class文件的操作
    80 脚本引擎——js脚本引擎
    03 NoClassDefFoundError
    79 动态编译与动态运行
    78 反射——概念、类的各种信息的获取(类名,属性,方法...)
    002 为什么接口中可以同时使用public与default 修饰抽象方法?
  • 原文地址:https://www.cnblogs.com/lenkevin/p/5552133.html
Copyright © 2011-2022 走看看