Android开发的技术层次

任何一种移动开发生态系统其技术人员都是呈现金字塔式分布的。我借此也说说Developer和Programmer的区别:html

 

Programmer是真正意义上的程序员,写程序的。灵魂级java

Developer是码农,搬砖的,砌代码,体力活。肉体级android

 

作Developer的感受就仿佛行尸走肉,被工做绑架,被代码绑架,而不是驾驭代码。若是天天,你感受本身仿佛就是一坨肉,天天把本身运到公司, 灵魂出窍式,条件反射式地CODING,而后下班又运回家,回到家你才真正解脱,真正找到自我。富士康的小弟小妹们也有一样感受。那恭喜你,你就是一名 “Developer”。应该说,广义程序员范围内,99%都是Developer,只有1%才能称之为真正意义上的狭义的Programmer。软件行 业也愈来愈变成,不须要每一个人都具有创造力,而只须要大量软件蓝领的行业。而Programmer也正是让软件行业保持持续创造力的灵魂力量。程序员

其实,真正让软件行业不断往前发展,进步的应该是那些或许根本不会编程的计算机科学家,这个暂时不在这篇文章探讨的范畴。web

将来软件发展的趋势,就是“Programmer驾驭Developer
广泛意义上如今中国软件行业的工程师分为如下几种数据库

1)地板级,NULL级别 编程

同事驱动型,这种纯粹是“鸟笼型”公司用来凑人头的,“坐台型选手”。服务器

2)菜鸟级网络

Google驱动型,类库王子,API王子,浮躁型选手,通常没有网络就没法工做,极度容易陷入比较模式,喜欢在论坛和QQ聊天群里面装本身的B扯别个的蛋,又极度敏感,工做中擅长CPM模式(copy+paste+modify)。忽悠型技术人才,运气好的时候,能混到一份不错的工做。地板级和菜鸟级造成了中国程序员的主流人群,其余级别的在中国均可以称之为“非主流程序员”。框架

3)大哥级

官方文档驱动型,开始有独立思考抽象问题的习惯,感慨虚度了大学时光,开始喜欢写博客,有必定的概括归纳能力,能独立写程序,身边有必定数量的技术小弟。英语方面已经能初步有能力实现无障碍阅读。

4)大侠级

理论驱动型,开始对理论书籍有独特的钟爱,什么都喜欢上升到理论高度。能无障碍阅读大型开源项目的源代码,并理解其设计理念。

5)大牛级 

论文驱动型,喜欢阅读论文,并随时关注前沿动态,能很容易地开发一些大型项目原型。

6)大师级

直接写出对别人有实际意义的论文, 在大陆属“稀有濒危物种”。

 

Android系统也是同样,在庞大的Android开发人员群体中,我认为能够由低到高分为如下四个层次:

1)应用层开发

使用java语言,基于android的框架和类库,进行应用层程序的开发。这类开发通常依赖于短时间记忆,也就是咱们所说的类库王子、API王子。 这类人员,只要会UI布局,熟悉经常使用的widget,写几个消息回调函数,鼓捣一下网络类,简单的数据库操做,会读写保存点配置信息,调用一下播放器,发 一下短消息。再用一哈好比Gallery这样外行看起来表面上比较炫的类。

这类开发人员通常自我感受良好,比较自大,认为android开发也不过如此。这类技术门槛很低,这类开发人员中的真正的熟手和高手,是充分熟悉官方文档的,已通过了什么都去Google的阶段,达到了查什么都直接去查

http://developer.android.com/reference/packages.html  的地步。
并且在大脑中已经造成了一个官方文档的索引,查什么都能达到时间复杂度为常数的地步。充分利用好官方文档,所有类库在大脑中有比较有条路的记忆,告别了杂乱无章的短时间记忆。成为了一个高级的“类库王子”。

虽然依然知其然不知其因此然,可是已经从“码农”升级为一个“高级码农”。全部的框架和高级语言技术,其实都是为了实现软件的工程化,为广大蓝领工 人准备的。这些工程技术,下降了软件开发的难度,使一些比较难的,抽象的晦涩的高级技术和概念彻底对应用层开发人员透明,可是这是以牺牲必定的软件效率为 代价的。

不过还好,软件开发不是竞技比赛,不是以难度值为判断标准的,实用、经济、快速适应市场才是最重要的,同时飞速的硬件和底层基础性软件系统的研究进展,和自始至终的软件分层的思想,让一切阻挡软件工程化的障碍都再也不存在。

这部分人中的大部分人,通常比较注重经济利益,有必定的经济压力。还没有把编程做为本身的一种爱好和自我实现的途径。多半感兴趣的是怎么找到一份好工 做,怎么获得一份好薪水。可是他们忽视了,从长远来看,中国的软件职场,最终的发展方向确定不是“五分运气,三分作人,两分技术”。对于一个技术人员来 说,技术才是得到竞争优点的惟一途径。在技术上没有竞争优点,你就失去了一个技术人员的安身立命之本。

他们也推崇所谓的“实用主义”,强调“作出好产品才是王道”,可是真正的好产品,都离不开一个好的技术平台。另外不对本身实用的技术平台,有比较深刻的理解,是不可能作出真正的好产品的。

 

2)中间层开发

中间层是为应用层提供  “Infrastructure”  基础设施。 其须要更加深厚的技术功底。不过我以为,从应用层开发达到必定技术水平后,转到中间层或者称之为“框架层”开发的人,比一开始就坐框架层开发的人,更容易 深刻。作过应用层开发的人,更有所谓的“切肤之疼”,从而更能理解一些策略和为何的原理性的东西。使用C/C++语言,基于NDK JNI方式的开发。须要对Android的总体框架机制和Android系统codebase很是熟悉,通常都会本身本身下载Android的系统源代 码,本身编译IMAGE,熟悉Android系统的Custom Building System。能修改和扩展Android的框架和服务。移植和定制nativelibray 和框架 ,如opencore、opengl、webkit定制一套系统的UI,制做点ROM也就是咱们国内所谓的自主研发的手机操做系统。

这类开发人员通常属于稍微资深一点的,通常都有强烈的技术饥饿感,以为本身懂的不多,不停的去提升充实本身。

 

3)操做系统级别的开发,系统定制

熟悉Linux驱动开发,Linux内核结构;针对特定硬件的移植。这类开发的技术含量其实和中间层开发差不太多,从某种意义上还不如。其实,驱动 开发更主要的要求须要必定的硬件知识。这类开发人员通常是各大手机厂家的开发人员,因为接触的面比较窄,技术饥饿感不如中间层开发人员。

第二,第三层的开发人员一般在国内的厂家任职,好比魅族、小米、HTC。只有这个样的厂家通过必定的技术沉淀,才会向最高层进军,中国软件行业才会作出真正意义上的自主的平台。

 

4)找出Android的不足,帮助Google持续改进Android
这种人是真正意义上的android程序员,他们会有选择的去阅读Android框架源代码,会认真的去阅读dalvik的源代码。自身知识结构也比较成 熟,知识面比较广。会不少上面三类人都不具备的调试和跟踪技巧。对一些操做系统和平台设计的思想和策略,了如指掌。在问题域和技术域之间左右逢源。

这些人,多半也精通其余移动平台,好比Symbian、Meego、IOS、WP甚至Windows NT, Linux  edition for Server等桌面或者服务器操做系。

 

转自:http://blog.csdn.net/theorytree/article/details/6649825

相关文章
相关标签/搜索