给菜鸟级Android程序员的一封信 http://blog.sina.com.cn/s/

首先恭喜你加入这个正在改变世界人们对移动终端的看法的大平台,Android的市场占有率已经不用多说,远远超于苹果的ios。当然,最近苹果也宣布要走低端市场,但是你可以想想,一种产品怎么让它最容易让人接受,那就是免费,为什么人们那么容易接受android因为android开源。开源,就是免费。消费者是不懂这些的,厂商出什么新东西,他们就会去买,而且普遍消费者都有一种很傻的观点,认为越贵就是越好。所以,商家会想尽办法让自己的成本最低,售价最高。成本最低,首选Android系统。

很多菜鸟踏进Android就开始写控件什么的觉得挺容易上手,确实面向对象思想这种高级语言Java是比较容易上手,但是仅仅上手入门这种程度并不满足写程序的要求,只能称之为写代码。写程序和写代码最大的区别就是程序的完整性能够顶住大部分的异常,除了代码本身异常,就是用户的异常操作,有时候真想不到他们是怎么操作的可以让自己的程序奔溃。当然,写代码是基本功,也只有在打好基本功的基础下才能够能力搭建好上层建筑。

想学好Android,第一步打好JavaSE基础,这个是基础到不能再基础的问题了。记得有一次版主群里有个人还说有个HR给他打电话,说他们公司要招做Android的,你会Java吗?行业内听到这句话就会爆笑,会Android的肯定会Java,但是会Java的不一定会Android。因为Android平台下的app基本上都是用Java语言开发,当然现在C++和C#也可以开发Android应用了。是不是做Android的就不需要理解JavaEE呢?答案肯定不是,需要了解JavaEE,因为JavaEE做出来的网站是最强大也是最复杂的网站系统,Android作为客户端需要经常跟服务器打交道,你去了解一个最难的服务器网站框架,那碰到其他语言做的网站服务器那不是更容易了吗?如果不将自己的职业方向定位在互联网的朋友,你们可以只学JavaEE的基础部分,也就是servlet和jsp部分就够了,有时间还可以了解下webservice的搭建。接着就是Android基础,UI编写(别小看这个东西,很多人还是不太会写),各种基础控件要会使用,各种高级控件要了解怎么用,真正用到的时候才去深入学习,四大组件的生命周期,作用,什么时候应该使用必须深入掌握。有些人会问学了那么多东西,不记得。是的,一下子学太多东西是会不记得,因为你用得少。所以需要通过做项目,小demo去深入所学知识。网上也有很多小项目的视频,可以学着去做,做完再去深入的思考能不能用别的方式去做,能不能再加点什么功能,在性能上怎么去提高运行速度,怎么防止内存外溢,怎么防止ANR这些常见的问题。

有些菜鸟有些习惯不太好,就是一碰到问题就问人,一是浪费别人的时间,二是显得自己更菜更不具备思考能力。作为程序员,自学能力强是必须的。计算机行业的信息更新速度比任何行业都要快,不学习就意味着被淘汰,成为行业中的低层人士。为什么有些人工作了六七年还是五六千的工资,为什么有些人工作了三年工资就能上万呢?因为他们的学习态度影响了他们。并不是人人都那么有想法,不是人人都那么有野心想往上爬,也并不是人人都会除了做出上司给出的要求又能想到更好的东西加到项目中,也并不是人人都想成为行业中的领头羊。总之,没有想法的人是最可怕的,因为他们怎么努力都爬不上去。当碰到问题的时候,首先要做去是上网去查,很多人喜欢用百度,但是百度百不出什么专业知识,我都建议大家用谷歌。中文字查不到,然后再用英文去查,都查不到了,在技术行业相关的论坛发帖,问人。开发android首选论坛是eoe论坛,CSDN虽然是全国最大的开发者论坛,但是在移动设备方面做得没有eoe好,eoe论坛好是好在他们的学习氛围,很多热心的前辈乐意解答问题,相互学习,共同进步。英语是一个很重要的工具,它几乎成了你以后想要在行业内提升更高阶梯的必要工具,IT行业最发达最新的东西都是来自美国,通常第一手资料都是以英文的方式传播,如果英文没锻炼好,还要等别人翻译给你看,那也要至少一年的时间,那你就比别人落后了一年,再不好就是翻译的人并不是IT专业的人,把专业的东西翻译成乱七八糟,还搞错了意思,那就比别人落后不止一年了。最典型的2012年,Android系统版本从2.3到4.1,几个版本性的飞跃就在一年时间内发生,根本是来不及更新翻译文档。程序员要多去看看别人的成功的软件,用户体验,才能设计好自己的软件,做精品软件。国内有很多自己的app,感觉不管从界面上还是功能上,跟国际软件相比差一大截。在做项目的过程中和用别的产品的同时要不断吸取好产品的功能,性能优势,添加到自己开发的项目当中。项目多了,自然积累了比较多的项目分析经验,通常这种也就是所谓的需求分析,分析市场的需求,市场需求决定软件能否被人接受,决定了软件是否能盈利,而不是我想做什么功能它就有价值。学会分析一个产品的需求,这是系统架构师必备的职业素养,也是未来要继续往程序员行业上爬的一个高度,当然,系统架构师之前,还有分析员,项目经理,软件工程师。

有些菜鸟很喜欢问这行好不好就业,待遇怎么样?说真的,有实力还怕找不到工作吗?没有实力才会去愁这些东西。对于没有实际项目经验的菜鸟来说看到招聘写着2年工作经验以上年限的就不要投简历去碰壁了,因为那里要请领头羊或者单干的人,单干对于新人来说学不到东西,进步会相当慢。当然,现在很多公司都写着要找1年工作经验以上的,那没有经验怎么办呢?可以通过学习网上的一些项目视频,先看懂视频,然后可以脱离视频把项目做一次,那就基本上可以写代码了。写真正项目,还需要一些职业素质就是处理异常,前面已经说过了。要注意行业的走势,发觉适合项目发开的书籍,例如性能分析,性能优化诸如此类的书。最后会有菜鸟疑惑到底学Android好还是学JavaEE好,这个真的没有可比性。因为,前者是客户端为主,后者是服务器为主,没有所谓的好坏,而且现在的时代确实,这两者的搭配谁也离不开谁。如果做嵌入式的某些终端,Android还可能是当作服务器来使用,不过这种可能极低。

到底是做应用,做游戏,还是做底层好呢?见仁见智,虽然做底层起初是比较高薪,但是它基本上就是一直在都是在机器打交道,除了单片机就是计算机,后期发展能提升到一个什么高度,我不太了解,对底层有兴趣的人可以向做底层的前辈请教。做游戏的话,比应用的难度要高一些,因为游戏涉及到大量算法,在用户体验上应用和游戏是不分上下的,重在创新。游戏最难是游戏引擎,应用难是应用框架,游戏还有很多各种图像处理,应用如果不是做图像相关的应用对这些要求不大,但是如果应用要做音视频流媒体这种难度也是很大的,总体来说游戏编程和应用编程最终的难度差异不分上下,但是游戏创造的直接盈利比应用要高一些,导致游戏程序员的工资普遍比应用高一些。但是,一个游戏再怎么好玩,人们是会腻的。而做应用的普遍是为商务服务,人们可以不玩游戏,但是人们不能不搞商务活动。所以,总体来说做底层和做应用是最稳定的,游戏也不赖的,只是相对其他两种不稳定些。总体行业来说直接价值,底层最高,游戏其次,接着就是应用了。通常做应用的还有职业方向转移,就是做服务器,JavaEE的范畴。Android+JavaEE这种组合就业工资待遇有多高,我就不说了,大家可以在招聘搜一下就知道了。底层开发通常会跟C++,C语言结合一起,游戏开发,会跟C++语言的OpenGL ES建模技术结合。其实到底做哪个方向最好,哪个最赚钱是没有标准的答案,在于你是否感兴趣,是否愿意投身于此方向,是否在这个方向锻炼到了,学到了东西,掌握了知识,用到了真正的项目上,最后用最短的时间去完成。

加油吧,有梦想的朋友!

更多相关文章

  1. Android(安卓)Studio官方文档之添加多种密度的矢量图形
  2. Android(安卓)Studio 文件提前结束
  3. mobAndroid免费验证短信
  4. Android(安卓)2D游戏引擎AndEngine配置环境
  5. android简单的答题游戏
  6. Eclipse将android 类编译为jar类库
  7. [android开发之内容更新类APP]三、项目的基本功能之布局
  8. android -- 小功能 DownloadManager——Android(安卓)下载 apk
  9. interllij IDEA 导入 Android(安卓)项目后打开xml没有 Design 选

随机推荐

  1. android EditText inputType 及 android:
  2. freetype 在android编译时上的一个makefi
  3. 用Gradle 构建你的android程序
  4. 实现Android(安卓)Studio JNI开发C/C++使
  5. android中的资源访问
  6. Android开发工具和资源精选
  7. Android深入理解WebView——上
  8. RelativeLayout的一些布局属性
  9. Android(安卓)系统framework 概述【转载
  10. 源码茶舍之android:externalService是什