Android:开发初期水平停滞后怎么提升?切忌杂学乱学,无效的学习路线学习十年也没用

2021-06-23 10:15:56 浏览数 (1)

背景

作为一个资历不浅的Android开发,这几年我面试过不少人。发现大多数面试者,虽然看起来工作努力,但他们表现出来的能力水平,却不足以通过面试,或拿不到期望的薪资。

在我看来,造成这种情况的原因,主要有这么两方面:

第一,“知其然不知其所以然”。做了几年技术,开发了一些业务应用,但没有思考过这些技术选择背后的逻辑。所以,我很难定位他们日后的成长潜力,也不会放心把有一定深度的任务交给他们。

第二,知识碎片化,不成系统。事实上,当面试者无法完整、清晰地描述自己所开发的系统或使用的相关技术时,面试官就会怀疑他是否具备解决复杂问题、设计复杂系统的能力。

所以,如果你平时只知道埋头苦干,或过于死磕某个实现细节,没有抬头审视过这些技术,那么在准备面试时,很有必要好好梳理一下 Android 知识体系,这样才能拿下满意的 Offer。

那么,作为Android 开发者,该怎样规划自己的学习路线,然后一步一个脚印的向中高级进阶呢?本篇文章根据自己的一些见解梳理一下。

Android开发初期之后怎么提升?怎么才能叫精通?方向在哪?

我发现好多人始终停留在两三年的水平上没有突破。

那么为什么很多人会一直停留在两三年的水平上,而后一直在重复以往的经验?

我认为最主要的一点就是主观能动性,或者说兴趣,如果你对Android开发没有太大的兴趣,那么还是尽早换方向吧。有了兴趣,然后就是要有一个比较正确的钻研路线,不要这也搞那也抓,最后什么都没精通又好像什么知道。

我觉得一个比较好的路线是,把日常开发常用的各种系统库,开源库,代码好好研究一遍,比如我用了butternife就要了解背后的apt,以及apt衍生出来的一系列库比如Hugo。当然这大部分情况是初级进阶的第一步。这个阶段应该是尽量很好的用技术完成业务需求。

第二个阶段,我觉得可以尝试去了解Android Framework比较细节的一些东西,比如activity启动流程,顺便分析清除Activity stack的管理,比如了解Android的资源加载机制,顺便了解aapt是如何打包Android资源的;又比如Java的类加载机制,这里配合资源的加载机制,很自然的就可以去了解Android的hotpatch机制,插件化的实现,开一些这方便的开源库或者自己撸一个也就自然而然。

第三个阶段,横向扩展,到这个阶段并不是说比第二个阶段更加高级了,而是对第二个阶段的一些补充,比如你是不是可以了解一下web开发,这样做hybrid开发的时候就会更顺手。是不是要了解一下这么火爆的ReactNative&Weex技术,甚至可以把他们的一些思想拿过来自己用,比如我司内部就有很多项目是用了JSCore和CssLayout来实现一些更轻量的动态化技术的。正如科学领域很多重大贡献都是在交叉学科领域出现的。技术上到了这个阶段甚至可以做到技术影响业务,技术驱动业务。

不要学得太杂太乱!学习Android开发只要记住这几点!

我也已经做了好几年开发了,还记得刚出来工作的时候觉得自己很牛逼,现在回想起来也蛮好笑的。懂的越多的时候你才会发现懂的越少。因为如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。

最近看到很多Android新手问Android学习路线,学习方法啊,如何入门啊,所以我以我的工作经验给大家总结一下,让大家少走弯路,提取一些工作中经常用到的技术。当然,说一千道一万,最重要的还是学以致用,把学过的知识融会贯通。

如何知道我需要学什么

相信大家在觉得迷茫的时候,经常会选择自暴自弃、或者完全按照自己的喜好去学习,这是有利有弊的,总体来说弊大于利。我一直认同一个观点,就是“你的认知比你的知识更加重要”,换句话说,也就是“你知道你需要去学什么,比你所学的知识更加重要”,如何知道自己缺乏什么,应该去学习哪些技能,这才是从思维上、思想上改变你对学习的态度!

如何知道自己应该具备哪些技能呢?或者说,我自己还缺乏哪些技能呢?

这个问题一直是困扰着很多人,解答这个问题其实很简单,这个问题的回答,往往离不开行业的最新动态:从下面培训机构的培训清单、招聘信息的招聘要求就可以看出来。下面先介绍如何从培训机构的培训清单开出行业的动态。

培训机构一直是互联网行业的风向标,培训机构的嗅觉是十分敏锐的,他们必须关注行业的最新技术方向、最新技术。所以,在一定程度上面,虽然我们大多数人都挺抵触培训机构,但是培训机构的培训清单可以作为我们学习的风向标、学习清单

例子1:(介绍一下往高级Android开发工程师进阶需要具备的哪些知识)

  • 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
  • Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
  • 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
  • 微信小程序:小程序介绍 UI开发 API操作 微信对接
  • Hybrid 开发与Flutter:Html5项目实战 Flutter进阶

其实这个培训清单我个人觉得是目前来说总结得比较好的Android进阶资料。基本涵盖了各种企业开发必备的新技术:RN、异步操作RXJava库、热修复、插件化、设计模式、性能优化等知识。这些其实都是我们学习的方向标,按照这些清单,自己去找各种资料学习。

其实对于Android基础的话,不外乎四大组件的基本使用、UI控件、布局的使用、版本控制工具、NDK基础等等。

当然随着Android技术的日新月异,Android开发对开发人员的基础知识的要求就更上一层楼了,比如说:动态权限管理、Kotlin基础、Gradle基础、AndroidStudio基本使用等等。

例子2:(从招聘信息上了解目前互联网大厂需要学习的一些热门技术)

我一直都强调要多看招聘信息,虽然我们不一定要找工作,但是按照企业的招聘要求,一定程度上也可以知道我们需要什么,并且同时可以知道,越高级的Android开发有什么更高的要求。

我们常见的招聘网站有:智联招聘、拉勾网、boss直聘等,这里大家手机上安装一个对应的APP,吃饭或者上班路上没事可以翻一翻。那么如何通过招聘信息获取我们需要什么呢?那么就需要我们仔细分析下面几份招聘信息。

大家第一时间关注的肯定是薪水问题,20K到50K,可以看到,这是一份相对来说比较高级Android开发工程师的招聘信息,根据上面的要求,其实我们可以知道更多。

一般人可能会觉得这是一份很普通的招聘要求,但是在我的角度来看,可以看出很多有用的信息,下面我带着大家来分析解读一下这份招聘要求吧。

1. Android底层的机制的熟悉,关于这个问题,其实在这里我并不想谈论太多,因为本系列文章的后续我会专门有一篇文章讲这个怎么去学习。一句话总结就是,熟悉Android底层机制,或者说Android源码,对上层应用的编程开发是有很多好处的,例如写出高可复用性、高效率、高质量的代码。其中,面试常问的源码分析有消息机制、四大组件、进程间通信、WMS、PMS等等。

2. 各种架构设计能力,这就需要大家多去学习设计模式、各种软件架构、设计思想上的东西,例如MVC、MVP、MVVM、重构、代码规范等等。

3. 在一般的互联网公司,网络通信是最重要的,因此我们就有必要掌握基本的Socket编程、各种网络请求框架,比如Retrofit2等等,进阶的话,就需要自己去研究分析这些框架的源码、自己动手用组件化的思想去封装这些框架,防止代码的侵入性等等。

4. 新技术的调研与学习,企业需要的是在尽量少的时间,开发出最优秀的产品,因此新技术是必不可少的。因此我们也需要保持不断学习充实自己的习惯。这里提到“研究新技术”,既然是研究,那么公司为了减少大家的学习成本,肯定是需要你将研究的成功通过文档的形式输出,以方便其他员工的快速上手,因此这里隐含了文档的输出能力。

5. 经验,关于这个也没有什么好说的,很多东西,如果你遇到过就有经验了,处理起来就比较快了。但是有一些难题你从来没有遇到过,那么难度就是无限大的,经验需要一点一滴地积累,多向大牛取经往往是实现弯道超车的最好办法

6. 成熟项目的工作经验,这是作为应聘者一个最有闪光点的地方,也是在校生校招的一个最有说服力的点。当然,除了在公司工作,也推荐大家去一些培训网站上面学习一些项目的实战视频教程,这也是一种快速学习的方法,但是学习完一定要加以总结,最好以文档、博客的方式进行输出,并保持分享,互相交流才能知道自己的错误、不足,才能获取更多技术,进步更加快。

7. 性能优化,这是面试常见的问题。性能优化跟一个APP的用户体验息息相关,很多公司都十分重视这方面的知识。

为什么高级程序员不必担心自己的技术过时?

程序员是吃青春饭的吗?等我们老了,技术过时了,公司有什么理由不裁掉我们,去雇一些既有活力、薪资要求又低的年轻人呢?这个老生常谈的问题困扰着诸多渐入中年的程序员。接下来讲解教你如何增强自己的核心竞争力,在知识飞速更新的行业中站稳脚跟,跨过“初级工程师”和“高级工程师”之间的鸿沟。

我认为开发者中有很多我们不太重视的软技能,这些软技能都有可能成倍地增加我们工作的影响力(作为个人贡献者和技术负责人)。这些软技能包括:

  • 代码审查礼节;
  • 如何优雅地遏制范围蔓延;
  • 如何向其他部门直观的方式解释高科技问题;
  • 如何在生产任务爆满和日以继夜的比赛中保持镇定自若等。

作为一名程序员 ,编码硬实力固然很重要,但是这些软技能也同样重要,这决定着你的核心竞争力的强弱。

高级开发者,会在工作中解决问题,而非制造问题。

他们减少压力。他们按时完成任务。他们知道如何编写经得起时间考验、可维护的代码。他们值得更高的工资。他们对项目的方向可以有准确的把控。他们可以发现当前流程中的缺陷,并使每个人都接受他们的想法以进行改进。他们可以指导应届毕业生。他们处事冷静,不会在周二与你的最大客户的电话会议上情绪崩溃、破口大骂。

Android学习的方向

学习一线大厂的各项技术:

大厂是我们的技术先驱,不仅仅是各种技术,还有很多令你大开眼界的使用方法,学习这些有利于自己竞争力的提高,深入理解后也可以提升你的学习效率。

现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。

1.2020大厂面试高频知识点

  • 图片
  • 网络和安全机制
  • 数据库
  • 插件化、模块化、组件化、热修复、增量更新、Gradle
  • 架构设计和设计模式
  • 性能优化
  • Android Framework
  • Android优秀三方库源码

2.Jetpack架构组件从入门到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架构组件之Lifecycle
  • Android Jetpack Compose 最全上手指南

3.Framework精编内核解析

主要内容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 进程系统
  • 深入解析 WMS
  • PackagerManagerService

4.Kotlin强化实战(附Demo)

  • 第一章 Kotlin入门教程
  • 第二章 Kotlin 实战避坑指南
  • 第三章 项目实战《Kotlin Jetpack 实战》
    • 从一个膜拜大神的 Demo 开始
    • Kotlin 写 Gradle 脚本是一种什么体验?
    • Kotlin 编程的三重境界
    • Kotlin 高阶函数
    • Kotlin 泛型
    • Kotlin 扩展
    • Kotlin 委托
    • 协程“不为人知”的调试技巧
    • 图解协程:suspend

5.Android设计思想解读开源框架

  • 热修复
  • 插件化
  • 组件化框架设计
  • 图片加载框架
  • 网络请求框架
  • RXJava 响应式编程框架设计
  • IOC 架构设计
  • Android架构组件Jetpack

6.NDK模块开发

  • NDK 模块开发
  • JNI 模块
  • Native 开发工具
  • Linux 编程
  • 底层图片处理
  • 音视频开发
  • 机器学习

定期面试:

光学习了大厂的技术还不够,如何了解当下Android市场需要哪些技术呢?

定期的面试足以让你了解当下市场需要哪些技术,也更加容易确定自身的短板在哪,同时,也可以督促自己学习提升(小伙子,你了解的技术有点落伍了呀…)

万一拿到了高薪Offer,岂不是更赚?

多看大佬的学习笔记,学习大佬的设计思想:

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

0 人点赞