前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android:开发初期水平停滞后怎么提升?切忌杂学乱学,无效的学习路线学习十年也没用

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

原创
作者头像
Android技术干货分享
修改2021-06-23 10:15:56
7390
修改2021-06-23 10:15:56
举报
文章被收录于专栏:Android技术分享Android技术分享

背景

作为一个资历不浅的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文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • Android开发初期之后怎么提升?怎么才能叫精通?方向在哪?
  • 不要学得太杂太乱!学习Android开发只要记住这几点!
    • 如何知道我需要学什么
      • 以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
  • 为什么高级程序员不必担心自己的技术过时?
  • Android学习的方向
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档