有人30岁转型做Android开发

我的朋友是农村出身,家庭条件不好,小时候父母私下做鞭(泡)出了事故,后面就一直跟着奶奶过日子。

但是,这一切并没有让他立志上进。失去亲人后,他只是一味的放纵自己,拉帮结派,打架斗殴,旷课上网打游戏……最后,他成为了老师最头疼的学生,但是他们总是念着他是一个孤儿而多了很多宽容,但是这样的宽容只是让这个处于叛逆期的孩子越走越远。

结果可想而知,不管是中考还是高考,他都是名落孙山,最后凭着那么一点点天分进了一民办的三本院校——学费最贵的那种,学了个计算机专业。

“好歹也是一个本科学历吧。放心,奶奶一定供你读……”他的奶奶这样笑着安慰他,殊不知他根本就不曾上心过。对他来说,什么都无所谓。

碌碌前半生

进入大学后,少年也没有什么特别的改变,不过是有了更多的玩乐时间,学习也就一般般。最后就那样勉勉强强的毕了业,进入了社会,随随便便找了一份测试的工作,也算是专业相关吧。

到现在,一晃走过了14个年头,尝尽途中的酸甜苦辣,默默望着窗外,掐指一算,从事计算机行业已近6个年头。其中三分之一的时间在做测试,也是从事过时间最久的一份职业。为什么能做这么久?他说因为自己没有目标,只想勉强度日。

那你现在转行是有目标了吗?

“是的,我要转Android开发。”

转行导火线

最近《你好!李焕英》这个电影很火,主角的妈妈在孩子不争气的事情后意外去世了,做孩子的心怀愧疚,意外回到过去后一直想让妈妈开心,为妈妈做了很多事情。

我的这位朋友是奶奶一手带大的,却没有给奶奶争一口气,还让老人为了送他上学辛苦还债,没有过上一天安生日子,他一直很愧疚。

他从来没有见过老人骂人,但是她走的时候,说了我:混账——连自己都照顾不好!

后面老人跟他说了几句些话,意思是不放心,要他好好活出个人样儿。

他想,自己能为这个伟大的老人做的最后的事情就是好好在这个世界上活着了吧。

看官:你说的这个“朋友”到底是不是就是你自己?

笔者:是的。而且我现在已经进入阿里,这也算是转行成功了吧?

转行流的汗

转行之难

我这里不是搞歧视,但是测试做久了技术真的会退化。

我大学里本来也没有学到什么东西,刚毕业的那段时间本来是学习技术,个人成长的黄金时期,我也没有好好把握,说不后悔是骗人的。

后面我向公司提出了内部转岗,但是公司不同意。这个也能理解,毕竟现在市场上的Android开发人力资源已经供过于求,尤其是初阶的,竞争特别大。看不上我也是情理之中。

这里也给大家提个醒,要转行就要做足准备,在不了解行情的时候不要轻举妄动。

由于我转行的时候已经32岁了,当时身边的人都在劝我好好做好当下的事情,不要轻易冒险,关键是,现在“Android 已经凉了”,我身边的人不止一次跟我说这些内容。

但是我还是这样一路走下来了。我想要坚持一次,为自己。

我去报了辅导班,和很多非专业的朋友一起学Android开发,他们很多都是有基础的,而我的基础远远跟不上他们,这让我不得不付出更多的时间和精力去学习。

所幸,我得到了很多大佬的帮助。

我的学习经验分享

下面这段简述自己的过往经历,作为一个转行的人,我深知转行的不易,而根据我多年的工作经验,高Android开发的很多都是非本专业的。

所以,我希望自己快要让大家少走弯路,不管是初入Android,或想转Android,还是已经踏上Android的路上,容笔者说说自己的想法,希望能帮到大家。

以下是我转行Android 学习成长的心得体会。

我对那些想转行的人的建议

俗话说:干一行,爱一行,学一行,专一行。

半路出家的人员心态都比较走两个极端,一是看中他的前景;二者是不喜欢原工作(薪水低或干得不爽)。我自己就是属于二者。但不管是你已转行了,还是将要转行做Android,我都建议您静下心来思考下面几个问题:

  • 我能做什么?

  • 我不能做什么?

  • 我的优势是什么?

  • 我的劣势是什么?

  • 做前端对我有何好处?

  • 做前端我要付出何种代价?

  • 我能不能坚持做下去?

如果你不能好好的,清楚的回答这些问题,我建议你还是不要轻意转行做Android。

Android需要学哪些?

知识体系

广度

  • 对新技术充满热情,乐于尝试

  • 阅读一些课外书籍

深度

  • 探究设计模式,算法,框架底层原理

  • 学习、探索并总结属于自己的Android开发方法论

  • 一颗不满足于浅尝辄止的心

学习路线

根据对应的知识点找对应的学习资料(如视频、书籍、文档、文章、项目实战等),学习路线图想必大家都见过,精华咏流传。

笔者在这里推荐一份详细 Android 学习路线,附参考资料,私信我【资料】免费获取。

获取途径:点击此处,Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

  • 架构师筑基语言基础

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:

1、Java序列化、泛型、反射

2、虚拟机底层原理

3、Android内存原理

4、Java高并发原理详解

5、编译时技术掌握与实战

6、JDK高级动态代理

7、高级数据结构与算法

8、Java IO操作

Android R Frame Work源码与UI

==================================================================================

在Android中,Framework泛指系统架构层。Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。说简单点,Framework具体的工作也就是为android应用开发的开发人员提供了一系列的服务和API的接口。

UI其实并不是单纯指用户看到的效果。因为在Android开发中,每个控件背后都有一套深层次的体系在支撑,自然而然,会UI不单纯指的是会自定义控件,我们还应该知道自定义控件背后的执行流程,包括从Activity的创建,XML的解析,到每个控件的测量、布局、绘制。当然在中间还夹杂着比如动画、事件分发机制、嵌套滑动机制等知识点。还有谷歌提供的一些UI框架也使我们要掌握的对象,比如Jetpack组件库、Material Design等。

知识要点:

1、FrameWork源码解析

2、Android常用组件深入解析

3、UI的深度剖析与自定义

4、Jetpack全家桶

5、Android R

6、RXJava响应式编程框架设计

360°全方位性能调优

====================================================================

性能优化是针对整个app开发而言的。一个好的项目被开发出来,不单是产品要好,开发者也需要知道,为什么我开发的这个app能够在绝大多数的手机运行,为什么用户在使用的时候绝大部分的手机不会出现bug。我们的apk文件可以优化到很小的,比如你做一个项目,打包之后可能是10m,但是经过优化之后可能就只有8m,甚至更小。另外,我们做的项目安全性如何?我们凭什么断定我们做出来的app安全性好。这都是性能优化中会涉及的。

1、设计思想与代码质量优化

一个app的性能好不好我们需要从两个层面努力。第一个层面:从写代码的时候就需要注意,让自己的代码是高性能高可用的代码,这个过程是书写高性能代码;第二个层面:对已经成型的代码通过工具检查代码的问题,通过检查到的问题来指导我们进行代码的删改,这个过程被称为调优。

如何写出高性能的代码呢?那就需要我们具备深厚的代码功底,这就是代码的基础,如:数据结构达到可以根据应用场景写出符合当前场景的特殊结构,比如google针对Android平台特征研发了sparseArray替代HashMap。另外,对常用的算法有自己独到的见解,leetcode上有刷个上百道题,这样差不多可以达到精通最常用的排序查找动态规划等算法的能力。再者,高效的算法以及节省内存的数据结构如果配合优秀的符合应用场景的设计模式,那么,这些就为高性能的代码提供了实现依据。

另外一个就是对写好的代码进行调优,那么调优的方向就是使用Profiler工具进行测试和检查,看哪里有性能消耗大的操作,然后分析对于代码的问题。调优的方向就变成了如何对内存调优,对耗电调优,对网络流量调优,当然,还有对启动速度,页面切换效果与速度,开机白屏体验,闪屏方面的原因等进行分析和调优。最后再加上一个屏幕适配相机适配。

2、程序性能优化

启动速度与执行效率优

化布局检测与优化

内存优化

耗电优化

网络传输与数据储存优化

APK大小优化

3、开发效率优化

分布式版本控制系统Git

自动化构建系统Gradle

4、项目实战

启动速度流畅度抖音在APK包大小资源优化的实践优酷响应式布局技术全解析网络优化手机淘宝双十一性能优化项目揭秘高德APP全链路源码依赖分析彻底干掉OOM的实战经验分享微信Android终端内存优化实践

[图片上传失败…(image-c47f3e-1614667651120)]

  • 对标腾讯T3.3架构师必备技术

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

尾声

评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。

有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。

一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值