/Android-NoteBook

🔥Android 进阶成长路线笔记 & 博客(持续更新...)

Apache License 2.0Apache-2.0

Android-NoteBook

如何成为有高度的移动开发工程师?

很快的,再过几个月就已经是工作四年的老同学了。这几年和不少同学共事过,发现不少人(包括我在内)平时看起来工作努力,也有足够的能力“应付”需求,但一旦跳出舒适区,到更高的要求去解决问题, 却不一定能游刃有余。为什么会这样,我想原因是多方面的:

  • 1、缺乏深度,不知其所以然: 懂得运用技术去解决问题,但没有思考过选择这些技术背后的逻辑,对技术背后的底层原理也知之甚少。这种状态在遇到有一定深度的任务时,会束手无策或南辕北辙。

  • 2、知识碎片化,不成体系: 对每项技术都有所涉猎,但却无法站在更高 / 更深的角度理解使用的技术,也无法完整且有条理地描述出项目中使用到的技术。这种状态很难说有能力胜任复杂业务 / 复杂系统设计。

是什么原因导致出现这种状态,是公司的原因吗?也许。在初创团队,会更多地奉行 “拿来主义”,很多问题直接使用第三方 SDK 解决。只有在大型团队,才有机会真正参与到基础平台的研发。事实确实如此,业务和团队的限制因素的确存在并且影响巨大,但这是决定因素吗?我想,我们需要问自己是否真正地去努力了吗?既然在小厂,那么就更加应该坚持学习,持续探索技术深度,在自己的能力边界疯狂试探,这些行为会在将来晋升或者跳槽时称为自己的筹码和亮点。我会推荐你读读看张绍文(前微信工程师)的《做一名有高度的移动开发工程师》,包括整个专栏,很多内容会激发你的思考。

回到主题,如何成为有高度的移动开发工程师呢?首先需深度和广度:能站在客户端的角色上,深入钻研一个问题在客户端技术上的实现细节,并且持续打磨,同时又能横向全面地思考每个细节 / 边界。然而,移动开发已经不是单兵作战的时代,随着业务复杂性提升,单纯的客户端优化已经不能解决业务述求,这个时候就需要跳出客户端的角色范畴,站在更高的角度思考问题,清楚每个端能够做和不能做的事情,而不局限在客户端这一亩三分地。

很多 Android 开发者有焦虑和浮躁的心态,这似乎已经称为一种普遍的现象,更不用说还待在小厂的同学。的确,移动开发已经不再是 “风口”,很多初级移动开发的岗位在减少,一线大厂对候选人的要求也变得越来越严格,对算法和计算机底层知识也有深入的考察。难吗,你是不是在羡慕那些当年选择了前端或服务端的同学?但是据我观察,往往是服务端羡慕客户端,前端看着服务端眼馋,而客户端又盯着服务端手中的蛋糕。我不知道谁在说心里话,也许,别人碗里的饭就是香一点,更别提 AI、算法、音视频这些香饽饽。

有的人选择了转行,结果是站在风口上被吹到天上,还是在任何方向都没有深度积累,最终没有竞争力。我没有经历过,所以我也看不到最终的结果。我们唯一能看到的结果是:“风口是等来的,而不是追来的”,人家之所以能站在风口上,原因是有多年的积累,最终等来的风口。站在当前时代,我们首先要做的,就是抛弃焦虑,焦虑解决不了任何问题。唯有无所畏惧地往前冲,才能留有一席之地,那些落后于时代的移动开发者必将被淘汰。看过王争(前 Google 工程师)在文章里写过:“每一个优秀的人,都有一段沉默的时光,那段时光是付出了很多努力的,却得不到结果的日子,我们把它叫做扎根。” 你经历过这个阶段吗?

前言


0. 面试题系列


1. 数据结构与算法路线

1.1 数据结构系列

1.2 算法思维系列

1.3 算法系列

1.4 高频面试系列

1.5 有趣的题目


2. 计算机网络路线


3. 计算机组成原理路线


4. Java 路线

4.1 Java 简介

4.2 虚拟机自动内存管理机制

4.3 虚拟机执行系统

4.4 Java 基础特性

4.5 Java 高级特性


5. Koltin 路线


6. Android 核心原理

6.1 Activity & Fragment

6.2 ContentProvider

6.3 BroadcastReceiver

6.4 Service

6.5 布局解析

6.6 签名

6.7 其他


7. Android 开源组件

7.1 基础架构

7.2 图片

7.3 网络


8. Jetpack 架构组件

8.1 基础架构

8.2 AndroidX 新 API


9. 工程化路线


10. NDK 路线

10.1 语言

10.2 JNI

10.3 NDK


11. 服务端


12. 逻辑题


13. 其他


结语


Contact Me

微信

欢迎添加我的微信:xurui0801,也可以联系我加入学习群~

博客

后续我会将每篇博客同步更新到各个主流博客平台,关注我的博客,可以更及时地获取最新更新文章哦⚡

License

Copyright [2020] [Peng XuRui]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.