如何通过自学成为一名优秀的 Android 开发工程师?
前言
在现在的人才市场上,其实有相当一部分的开发者都不是科班出生的。尤其是Android程序员,基本上都是自学的,能在大学里接受正规系统的Android开发学习是很难的,很少有学校会专门教这个。
(以上都是我的个人经验,不知道现在的大学教育是什么样子)
以笔者自身为例,14年会计本科毕业,编程都是大学的时候自学的,Android更是完全的零基础自学。但是毕业后,我幸运的拿到了百度云的Android开发岗offer,现在已经是一名Android高级研发工程师。
下面就来分享一下我这一路走来的心路历程吧。
开门篇:万丈高楼从地起
知识储备要求:
- 算法分析和数据结构:
查找,排序,DP,图论,数论,栈,堆,二叉树等 - 操作系统:
进程线程,中断机制等 - 计算机网络:
五层架构,各种协议等 - 编译原理:
理解语言的结构,词法分析,语法分析等,对你后面掌握语言有帮助 - 数据库:
简单了解一下各种范式,android开发对其要求不算高
学习方法推荐:
推荐书籍:
《算法导论》,然后再来一本数据结构的书基本够了。
《深入理解计算机系统》
《计算机网络:自顶向下方法》
配合刷题:
刷题很重要,他可以让你对算法还有其他的知识点理解更深。同时现在基本上正规规点的公司笔试也这样,也算是为以后的进军大厂做准备了。
入门篇:万变不离其宗,书中自有黄金屋
知识储备要求:
- Java 语言基础
虽说现在是kotlin first,但是市面上的APP基本上还是用的Java语言写的。不过,大家也可以选择先学kotlin。
学习方法推荐:
书籍+检索+上机实操
这个阶段还是推荐大家以看书为主。现在网上的视频资料也有很多,但是都比较零散,基本上都没有什么系统,也没什么体系,与其找一集看一集去耽误时间,不如直接从书本上手,慢慢打造一个完整的知识体系。
当然,不是说视频就不能看,大家在看书学习的过程中如果遇到了不懂的地方,或者上机操作出现问题的时候,大家可以就自己这个特定的问题去搜索视频学习(学会在有用的网站检索有用信息也是成为一名优秀的Android程序员的必备技能)。
推荐书籍:
《 JAVA核心技术(卷1)》
这本书可以理解成一本工具书,对于Java的讲解面面俱到,在你不记得相关的知识的时候需要拿出来,巩固学习。
《Effective java 中文版(第2版)》
进阶学习,在了解Java的基础的前提下,开始学习更多知识点。
《 Android开发入门教程 》
编程语言熟悉后开始向Android过渡。
检索:
VPN + google
我当时学习的时候行业还不够成熟,网上能够找到的有用信息很少,现在关于Android的分享已经很多了,基本上大部分的问题都能检索到答案。大家可以去CSDN、掘金或者玩安卓里面搜索答案或者自己提问。
个人觉得最好的地方就是:
初级篇:实践是检验真理的唯一标准
知识储备要求:
- Java 语言基础
虽说现在是kotlin first,但是市面上的APP基本上还是用的Java语言写的。不过,大家也可以选择先学kotlin。 - Android 开发知识基础
- 设计模式
学习方法推荐:
看书 + 逛博客 + 看视频
(当你入门后,你会有更强的鉴别能力,这个阶段可以较多的接触视频教学了,比较快速)
推荐书籍:
《深入理解java虚拟机》
《Java编程思想》
《java并发编程实战》
《第一行代码》
《android开发艺术探索》
《android编程权威指南》(工具书,当字典用)
《大话设计模式》
《head first:Java》
《重构》
《android源码设计与实战》
逛博客:
GitHub、掘金、CSDN、高质量的微信公众号
看视频:
现在网上的免费资源很多,但是都比较零散,没什么条理和系统,这边推荐B站几个比较实用的学习视频。
- 《史上最详细的android studio安装方法!!!(多图详解)》(图文)
- 【Android开发入门系列 [一]】| 从UI开始上手Android开发!
- 【Android开发入门系列 [二]】| Android 筑基之 Fragment!
- 【Android开发入门系列 [三]】| Android 筑基之四大组件(必知必会)
- 【Android开发入门系列 [四]】| Android 流行框架
- 【Android开发入门系列 [五]】| Android基础之数据存储
- 【Android开发入门系列 [六]】| Android基础之数据共享
- 【Android开发入门系列 [七]】| Android基础之多媒体技术
- 【Android开发入门系列 [八]】| Android基础之项目发布
- 【Android开发入门系列 [九]】| Android基础之git命令讲解
- 【Android开发入门系列 [十]】| MVP项目实战
进阶篇:理论和实践的双重进阶
其实成为初级android工程师并不困难,但是目前初级android工程师已趋于饱和,因为这些年学习Android开发,想做这行的人实在是太多了。
这样的大环境可能会让一些正在走这条路或者想要走这条路的人感到并不容易。
但是想要脱颖而出也不是非常困难,只要你认真的学习,跟着下面的线路走。
知识储备要求:
- 架构师筑基必备技能:
深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO - Android高级UI与FrameWork源码:
高级UI晋升+Framework内核解析+Android组件内核+数据持久化 - 360°全方面性能调优:
设计思想与代码质量优化+程序性能优化+开发效率优化 - 解读开源框架设计思想:
热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack - NDK模块开发:
NDK基础知识体系+底层图片处理+音视频开发 - 微信小程序:
小程序介绍+UI开发+API操作+微信对接 - 进阶大厂加分技术:
Flutter进阶,跨平台开发技术
针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了系统性的,有条理的总结。
资料开源分享。有需要的朋友可以扫描【下方二维码】直接找我免费获取全套资料。
- 架构师筑基语言基础
- 设计思想解读开源框架
- 360°全方位性能调优
- Android框架体系架构
- NDK模块开发(音视频开发系列)
- Flutter学习进阶
- 微信小程序开发
资料开源分享。有需要的朋友可以扫描【下方二维码】直接找我免费获取全套资料。
最后
技术提升需要一定的过程,脚踏实地走好每一步,先定好一个小目标,然后去实现。
希望大家好好利用这份资料,最终达成所愿。
升职有压力,我知道,我也知道很多程序员的学历都在硕士以下,有不少朋友,还在用本科学历,和那些名校硕士生,在职场死磕。
但是,我想说,牛逼的学历固然重要,但也不要让学历成为你自我设限,然后放弃努力的理由!
技术,该进阶的还是要进阶,搞开发,是凭借技术端的饭碗!