自学从来都是一件难以坚持的事情,看过太多人三分钟热度之后就颓然放弃,然后告诉下一个要自学的人,自学很难,还是正儿八经去培训机构吧

所以首先你要对安卓开发非常感兴趣,发自内心喜欢安卓系统,日常手机如果是安卓机子最好了,这样你写完了一个app,立刻就可以在手上体验了。

推荐边学边做项目的模式

生活中缺点啥,咱就用技术去实现它,这种创造力,只有程序员才有!

你实现了自己的需求,感到非常振奋,继续下一个需求,继续振奋,这一直是个很好的正反馈循环。

所以,半年来咱陆陆续续一共完成了4个项目,除了第一个太简单没多大价值,其他3个都已开源。

1:记账类App

小伙伴三个人一起吃饭,充钱、消费,就靠它记录。非常简单实用,以前都是靠脑子算的。。

2:偷拍类App

音量键就可以完成隐蔽拍照,完成了自己造福狼友的愿望。没怎么用,不坐公交车,屌丝也不去逛街。。

3:博客园知乎日报风格的App

园子里的大神都有自己的实现,咱觉得信息太繁杂了,就参考知乎日报简约的风格实现了一个。蹲坑、睡前我都在用他看新闻。。。 离线数据+自己实现的蒙版、配色夜间模式,晚上看着非常爽

4: 集团通讯录App

这是自学阶段最后一个作品,代码上相比前三个都在不断的优化,并且尝到了并发线程池带来的快感!用过app的同事都说好。

看到了吗?都是咱非常感兴趣实用的4个项目,自然会在洗澡睡觉蹲坑时琢磨着怎么去优化他们,怎么去精心优化打动用户。

接下来就说说咱的学习步骤,对咱是行之有效并且能打动面试官拿到满意offer的:

再重申一遍,对安卓开发一定要发自内心热爱

再重申一遍,对安卓开发一定要发自内心热爱

再重申一遍,对安卓开发一定要发自内心热爱

如果只是填补业余时间空白,让自己心底不空虚悔恨的,还是别浪费时间了。。(荒废了4年时间,我明白了这个道理)

0:网上那些泛滥的视频没必要看,太慢

这个可能因人而异,事实上咱个人观点是除非心底没安全感,需要视频老师一步步按部就班教你打出一个可以运行的项目,否则没必要看视频,太慢了。

1:入门不需要太高深java知识,边做别学即可

java语言从c#转过去不生疏 ,一些语法之类的可以参考博客 JAVA快速教程

入门了之后,想提高的话可以去看看《Effective Java 第二版》,看了前几章讲的非常不错

2:挑一本好书入门

推荐一本郭神出品的《第一行代码》,电子书我就不放出来了,因为真的写的很详细易懂,写的很好!值得你花钱去买实体书

你参照着这本书入门,初步掌握了知识点之后,就可以尝试去做自己的项目了,不懂就翻翻看这本书

个人是非常感激这本书的,特别是在我读过《Android编程权威指南》觉得自己很蠢的时候。

3:IDE&管理工具

IDE使用android studio

这几天从面试结果看,很多杭州的公司都在逐渐使用这个平台了,用下来感觉非常的痛快,硬件最好有SSD+8G内存,会让你飞起来的。官方地址被墙了,国内下载地址最新百度网盘

管理工具使用git

写给新手朋友看的图文git入门教程

4:出了问题怎么办?

学习的过程中,写代码出BUG,报错是很正常的,不用担心,把错误的关键提示复制下来,去stackoverflow上搜,80%都能搜到答案。

英语不行也可去百度上搜,不过有些答案都是雷同或质量很低的,需要自己去判断

5:项目优化

android studio里面有个code inspect选项,可以智能帮你分析出项目里面可能drawcall过高啊、潜在的内存泄露风险啊、潜在的bug啊之类的

对照着提示,有选择性的去改就好了(因为机器智能分析不可能尽善尽美)

为什么会drawcall太高,为什么会有内存泄露,怎么优化请参考谷歌性能优化典范,有个博客翻译的非常好,看下来你一定会收获太多!

6:快速提高

无他,多做项目,多思考,多总结。

比如咱的图片功能模块,从第三个项目博客园新闻客户端开始就在用了,在第四个项目通讯录里面得到了大幅的优化,引入了并发线程池,加强了资源调度之间的逻辑;所以通讯录你用起来会非常的丝滑顺手

7:面试技巧

首先要说的是,咱这类自学成才的路子,简历上天然比较弱势,没有项目经验,要的薪资还是中级水准,如果你是老板,你会要这样的人吗?

找工作那几天心里非常的忐忑,因为前4年全部都是在做.net开发,离开自己的舒适区,转到一个陌生的领域,一切都是未知,躺在床上还要辗转反侧一阵子,脑海里浮现很多片段。

所以咱们除了笔试能过关,最好还要带上自己的作品(比如我就把三个项目全带了,面试的时候给面试官演示,讲解里面的原理、技术难点如何解决之类的,这样交流起来气氛就比较好了),要让面试官相信,你虽然没有在安卓岗位上开发过,但是进公司之后,你可以快速胜任这个岗位。

8:生命在扶摇直上中绽放!

以前咱呆过某个公司,年终奖只有150块钱(你没看错,也没有少打两个零)。眼红其他子公司的编辑小姑娘,年终奖能拿300(别怪我人穷气短。。)

我常常会在想:为什么同样是努力做事,我拿的比别人少?难道是因为我特别蠢?还是我工作不努力?

特别受刺激的是一次,和以前带的小弟吃饭,他的工资竟然也超过我很多,那顿饭吃的真是没滋没味。。。

咱也不去抱怨,招聘网上高薪的岗位那么多,就看咱有没有能力去拿下了,没能力就去学,毕竟咱还年轻啊!

拿到期望的offer的那一刻,心里百感交集,就像《当幸福来敲门》一样,美国梦般故事的结局:天道酬勤,我们的主角通过自己的努力终于换来了社会的认可。

非常喜欢这句座右铭,来自园子里敬佩的大神深蓝色的右手

生命在扶摇直上中绽放!

自学android半年,已从.net转型成android程序员,分享下这个过程的更多相关文章

  1. CSharp程序员学Android开发---3.Android内部元素不填充BUG

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  2. CSharp程序员学Android开发---2.个人总结的快捷键

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  3. 大龄程序员的出路在哪里?八年老Android的一点心得

    这篇文章,给大家聊聊Android工程师的职业发展规划的一些思考,同时也给不少20多岁.30多岁,但是对自己的职业未来很迷茫的同学一些建议. 笔者希望通过此文,帮大家梳理一下程序员的职业发展方向,让大 ...

  4. CSharp程序员学Android开发---1.初识AndriodIDE,掌握工具使用

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  5. 使用py2exe将python程序打包成exe程序

    近日帮朋友写了个python小程序,从互联网上抓取一些需要的文章到本地.为了运行方便,希望能转换成exe程序在windows下定期执行.从百度上找了些文章,发现py2exe的应用比较多,遂使用之. 1 ...

  6. android checkbox 未选中状态 已选中状态 替换成自己的图片

    效果图: 未选中状态: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  7. cocos2d安装配置及打包成Android

    vs+python+cocos2d python下载:点这里 这里需要下载Python 2.X版本.曾经以为要下载3.x版本 后来装上发现cocos2d-x提供的python运行报错,所以卸载以后重新 ...

  8. 在Android Studio上测试运行,Unity发布成Android包的环境搭建步骤

      我用的是unity5.4.3版本,jdk是1.8.0_131版本,Android-SDK是r24.4.1版本,Android-NDK是r13b版本,作者是刚开始写博客,希望对在unity摸索的人有 ...

  9. html5 如何打包成apk,将H5封装成android应用APK文件的几种方法

    直接使用编程软件提供的方法: 1.需要下载安装MyEclipse2014,Android SDK,eclipse(需配置Android开发环境) Java和Android环境安装与配置. 2.打开My ...

随机推荐

  1. HDU1426 DFS

    Sudoku Killer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. hibernate_Restrictions用法

    方法   说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge &g ...

  3. 2016.9.20 java上课作业

    此程序从命令行接收多个数字,求和之后输出

  4. 动态生成linearLayout

    LinearLayout linearLayout=new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL) ...

  5. 【emWin】例程十:bmp图片显示

    实验指导书及代码包下载: 链接:http://pan.baidu.com/s/1i5fr2Ep 密码:vlvt 实验现象:

  6. css解决div的各种浏览器兼容性问题

    方法一: min-height:500px;/*解决ie8.9.ff.chromet*/ height:100%;/*解决ie6.7*/ _height:500px;/*解决ie6超出自动溢出*/ 方 ...

  7. [ZZ] A Proposal For Compiling Direct3D HLSL With LLVM (Written by Michael Larabel )

    http://www.phoronix.com/scan.php?page=news_item&px=OTI2NA Note:  Something very instersting to w ...

  8. Thinking Of Matrix

    http://blog.163.com/bzm_square/blog/static/9355546320129582254842/ PS: 一种有关于矩阵的思维方法.....WiKi 向量空间,不定 ...

  9. p4lang/switch make bm-switchsai 出现内存不足导致的Error

    报错如下: Compiling : bm::dc.cpp g++: internal compiler error: Killed (program cc1plus) Please submit a ...

  10. Nodejs:precss模块 & autoprefixer模块

    模块precss:可以通过他管理文件系统,文件的写入,删除等操作 模块autoprefixer: autoprefixer可以对sass处理过后的css再处理,解析CSS文件并且添加浏览器前缀到CSS ...