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

  • 相关阅读:
    LeetCode 842. Split Array into Fibonacci Sequence
    LeetCode 1087. Brace Expansion
    LeetCode 1219. Path with Maximum Gold
    LeetCode 1079. Letter Tile Possibilities
    LeetCode 1049. Last Stone Weight II
    LeetCode 1046. Last Stone Weight
    LeetCode 1139. Largest 1-Bordered Square
    LeetCode 764. Largest Plus Sign
    LeetCode 1105. Filling Bookcase Shelves
    LeetCode 1027. Longest Arithmetic Sequence
  • 原文地址:https://www.cnblogs.com/lenkevin/p/5552133.html
Copyright © 2011-2022 走看看