Android programmer problem: how to open the different stages of hair advanced?

Before a lot of people have asked me the same question that I have a year or two to learn Android, but encounter a problem, I feel no progress, and in the end to how advanced it?

I believe that many people encounter such problems, so today I will take over a person's identity for everyone to answer questions at all stages of the system encountered.

beginner

Generally beginners need a book, combining video, reading the book basically even a beginner, you need to be reminded that we must remember to demo the book all over again and personally run knock, very often look as good as knock, knock far smaller than personally run. This time everyone is not the same learning ability, full-time study, you almost 1-3 months.

Junior engineer

Generally work less than one year are considered junior engineers, this time to be able to master the basic fundamentals, such as the use of the four components, layout and use common controls, some simple animation and custom View, etc., at this stage, relatively speaking count very fast progress, this time only to find the home of a relative fly company point, take the initiative to do things, to assume more tasks, not afraid of hardship, Duo Jiajia classes, although we all dislike when it comes to overtime, but the reality is that when you do not overtime do something, do more, I felt not enough skills to work overtime and then what? At this stage no need to consider work-life balance, because this time you not to mention life. Duo Nunu force at this stage, it is easy to rapid growth for mid-level engineers.

mid-level engineer

This stage varies, about 1 work experience - between 2 years. But often encounter a problem at this stage is the period of time you may assume this app in a separate function blocks no problems, some common open source library can also familiar, the project will employ some of the more popular open source database etc., some common animations, custom View and layout can be quickly realized, might also pay attention to some common code techniques, but this time no longer Gaga classes can greatly improve your technique the stage this phase requires methods, practices and execution, then how advanced this stage I summarized the following methods:

1. Keep a blog

Mid-level engineers do not just blindly go to work, learn, in fact, more needs to summarize and generalize knowledge, which is the best means to write a blog, write a blog is actually adhere to your review and summary of knowledge, a lot of times you a piece of the field since that mastered, but can write, and make others understand, that is the real master of it, do not say anything else, say some of the IT industry sector cattle generally have their own blog, those blog posts best witness is your knowledge of precipitation.

2. participate in open source projects on GitHub

I have many times called to remind you GitHub necessary programmer, programmers gathered in various fields of the world, you can read directly on top of Google, Facebook top companies open source project, you can see the elegance of top engineers, where you absolutely opened the door to another fan in the world, you can read the source code cattle, and try to contribute their own code, take the first step and more participation, more exchanges, that sentence how to say: "contact with good people, themselves will become excellent. By the same token, "read large cattle code more, will unknowingly own growth and progress. GitHub is not just a business card, is more advanced essential artifact!

3. have their own complete works

Maybe we participate in the development of many company functions, regardless of the reason the company or product reasons, we more or less in order to finish the work or, for profit or, there are always some place we feel dissatisfied, such as inadequate design style Some ideas are rubbish idea Material Design, product managers, and even some of the KPI-oriented function realization, I believe that at this stage everyone has this idea, feel that their family's app is not cool, not called Android, so this time pay act now, in his spare time to develop a complete their own work, you can try the latest technology and framework, the best tool you think, do you think the adaptation of Material Design style, this process is not only personally practice before you early adopters of new skills, but also experienced a complete idea of ​​the iterative process of a product, and eventually it open source, this process is very valuable, where you will meet and overcome a variety of problems, unknowingly growing, after the open source code you will own more demanding in the subconscious, and this work It will become bonus items on your resume after you. So if you have not had at this stage, that from now on, preparing and through this stage of it, even if you do not have any idea creative, even under high imitation of the open source community or some app on the market can, after all, you are using to practice hand, not for business, idea at this stage is not particularly important.

4. look at some advanced books

Is essential reading progress at each stage of the process, but at this stage you need to look at some of the advanced class of books, whether it is on or Java on Android, you need to look at the following books:

「Thinking In Java」

Maybe you've seen before, but I believe that for some advanced knowledge you certainly do not understand, this time to look back at this book, but also some estimates harvest.

「Effective Java」

This book is called the Advanced Java essential, which teach you something you do not know Java skills, as well as some common design patterns and principles, really teach you how to write elegant Java.

"Android development of artistic exploration."

This book is a senior engineer for Android, which talked about some of the knowledge and skills is very good, Android Advanced essential.

5. Read the Android source code, understand some of the advanced concepts

Advanced Java language, and the same on Android you need advanced, and can not remain in the use of some basic api should go deeper to the direction of research, such as activity, view the internal operation mechanism, such as Android memory optimization, such as aidl, such as JNI, etc., does not just stop with the will, but through reading the source code and understand the implementation principle.

Senior Engineer

I do believe that if the above aspects, together with the test of time you have is a senior engineer, and generally in more than 3 years. But even she became a senior, you still have more to learn, such as technical aspects of the network, about the architecture, the server knowledge, we need to continue to learn and practice. But beyond technology, the difference is that senior care products and services will, in fact, the transformation has taken place in terms of thinking to consider the issue, and not just from the technical aspects to consider the issue, no longer a mere coding machine, but will work content lateral spread to other aspects.

I have always said that technology is not everything, even if you want to go a purely technical route, future development architect or CTO, and ultimately must be involved in product management team, understand the business, but the focus is not the same, unless you want a lifetime when a farm yard, ears do not hear out of the window, just want to quietly hiding in the corner knocking the code, otherwise you have to be multi-faceted development. But before you become a senior engineer of which can not be considered first, when you get to this point I'm sure you will naturally understand what I said today.

Of course, what specific manner to learn, it is personal, if you want to learn advanced, break through the bottleneck but can not find direction, I sort of route learning can refer to the following:

Advanced Java language

  • Application generics and annotations Retrofit of
  • Multi-threaded applications with Java File IO operations combat
  • Rxjava Principle Analysis
  • JVM memory leak analytical principle
  • ClassLioader the reflective Application Hook
  • Dynamic proxy mechanism in the source code

为什么要学习JAVA ? 因为Android应用是由Java语言进行开发的,SDK也是由Java语言编写,所以我们要学习java语言。另外,虽说kotlin语言得到了Android官方的热推,但是kotlin也是编译成了java语言再运行的。对于Android来说,只要SDK没有用kotlin重写,那么Java语言是都需要学习的。而且Android apk的后台服务器程序大概率是java语言构建,所以学习java也是一种必然。

高级UI与FrameWork

  • UI绘制原理
  • 动画原理
  • 事件响应机制
  • 屏幕适配
  • FrameWork源码解析
  • 相机适配

我们需要从新的角度去分析这些知识点,深入研究他们,要学习源码,模仿源码,然后再hook源码,这样才能说自己懂这块的知识。这些都是做Android开发,做高级工程师的基础。

360° Android app全方位性能调优

  • 从事件
  • 从内存
  • 卡顿调优
  • APP保活
  • 内存优化
  • 高性能编程实战
  • OOM原理解析

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

Android前沿技术

  • 热修复/热更新
  • 组件化/插件化
  • RxJava深入研究
  • 图片与网络架构
  • Google I/O大会技术
  • Kotlin项目实操

NDK 模块开发

  • C/C++基础
  • JINI编程基础
  • 图像处理与热修复应用
  • 音视频开发
  • OpenCV人工智能
  • OpenCL 图像绘制

微信小程序

  • 小程序架构介绍
  • UI界面开发
  • 高级API实操
  • 微信对接实战
  • 任务清单项目
  • 电影榜单项目

混合开发

  • Dart语法
  • Flutter线程运行模型
  • Flutter与Native通信架构
  • Flutter内存调优
  • Flutter项目实战

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

最后送大家一句话,人生每个阶段都有每个阶段该干的事,你当下能做的就是踏踏实实做好现在的事,最好你能比你身边的人更努力些,不用太着急,你想要的,岁月都会给你!

最后这里是关于我自己的Android 学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~

 

 

发布了193 篇原创文章 · 获赞 751 · 访问量 10万+

Guess you like

Origin blog.csdn.net/weixin_44339238/article/details/104185209