What is considered advanced Android? I suggest you master these points

What is considered advanced Android? I suggest you master these points

Is Android development dead?

[[277440]]

Many people have asked me similar questions in the past two years. Generally speaking, every industry has a growth cycle. After experiencing wild growth from 2011 to 2013, Android has entered a mature stage. At this stage, the demand for Android positions in most companies has returned to "rationality". It is no longer an era where you can find a job just by knowing some Android basics. It may be late to start from scratch at this time, but the Android market is generally lacking in senior talents.

Currently, the salary for junior and mid-level developers in the Android market ranges from 6K to 18K, and that for senior developers is around 20K-35K. Many junior and mid-level developers are stuck at the 20K threshold and cannot get past it. They want to learn but don't know where to start. Most of them start by working on upper-level applications and only scratch the surface when they move to the Framework layer.

Here I found a job requirement for senior Android development:

This is Xiaomi's recruitment requirement on Lagou, which is equivalent to the p6 level. In addition to the academic requirements, we can see that in addition to the basic Android requirements, JNI/NDK/Framework, and even JS and Server-side development are also used as improvement points, which is the prototype of the full-stack direction. I think you can often check what technologies the current companies need on recruitment websites, but of course you can't learn all the requirements of the companies. Here I roughly summarize the development direction of Android developers:

First, horizontal improvement.

Based on the trend of full-stack development, you should expand horizontally while deeply studying your own areas of expertise, and don't just work behind closed doors. The horizontal improvement here means the transformation to full front-end development. In addition to hybrid development (web, native, front-end interaction, hardware interaction) in APP, you also need to be able to develop web, WeChat applets, and H5.

For example, server-side development. When we do Android development, we often have to rely on the server-side interface to return data. You can try to build it yourself. At least you need to know something about the server's structural theory, communication between services, and the aggregation process.

Second, vertical reshaping .

There have always been two opinions about Android development: if you are doing application development, it is more appropriate to develop in the direction of application architecture, and if you are doing system layer development, it is often more appropriate to develop in the underlying driver. I agree with this, so what should I learn specifically?

1. Mobile architecture: Architecture display layer: MVC, MVP, MVVM, Clean, Flux, Android Architecture Components; Architecture layer: Modularization->Componentization->Plug-inization->Sandbox/dual-opening technology, such as dual-opening WeChat, similar to Docker, each page is a plug-in, similar to each page in Vue.js is a component.

2. Basics and Advanced: There may be more directions in this direction, such as VIEW, Android animation mechanism, working principle of four major components, multimedia technology, etc. The View sliding conflict problem we usually encounter in work can actually be easily solved by mastering the View working mechanism and Android touch event system. In addition, if you need to develop gorgeous animation effects, you must have a certain understanding of some characteristics of view animation and attribute animation. The working mechanism of the four major components in Android actually uses the Binder mechanism at the bottom. Let's learn about Binder from the AIDL interface.

JNI and NDK development are also relatively common, especially for some SDK projects. This development process also needs to be mastered. NDK development (including JNI) is also one of the means for employers to distinguish applicants. Companies do not have to use it, but they can screen talents based on whether they have mastered NDK.

3. Language learning and development language: I have to correct here that learning languages ​​is not cross-industry. For example, Kotlin can be said to be a first-class citizen in the Android world. There are also Python and GO, which are popular nowadays. In addition, C/C++ is essential for low-level development.

4. Source code: You need to be able to understand and be familiar with the source code (you can also choose a few third-party libraries yourself), and be familiar with the source code and its implementation principles. And you need to be able to repackage the third-party library yourself (or contribute to the third-party library yourself). In this way, you will gradually become an expert in this technical block during maintenance. I think output forcing input is a good way to learn.

5. How to improve development efficiency?

If you want to do your work well, you must first sharpen your tools. How to improve development efficiency? Many developers do not know how to use gradle during development, which makes loading code very time-consuming. This is a waste of your work cost. In addition, the use of git can also help us manage our code, which is very critical, because this tool can prevent the modified code from being lost due to incorrect operations. In addition, for mobile developers, we at least need to know how to capture network packets. Among them, the most commonly used stetho is a very useful tool for capturing network packets.

6. Hybrid Development

Flutter, a hybrid development framework, has gradually become the mainstream hybrid development framework. In addition, due to the powerful presence of Alibaba, Alibaba companies are all using Weex hybrid architecture. These are all basic skills that are essential for an Android engineer to broaden his horizons and move towards the future.

Flutter learning mind map:

In fact, there are many directions for learning, and I will not list them all here, because different industries and projects require different advanced skills to learn, which can be said to be 360-degree development.

Here is a detailed outline of advanced Android development learning for your reference:

4. Final Thoughts

No matter what difficulties we encounter, it should not be a reason for us to give up!

<<:  In the first year of 5G, what kind of mobile phone evolution war has Huawei Mate30 started?

>>:  Will 5G phones turn back to 4G? Possibly

Recommend

Growth Hacking: How to Increase User Conversions?

Growth Haker is no longer a strange term. The ori...

iPhones shut down due to freezing? Apple responds: It's too cold

This cold wave was so severe that it affected eve...

4 underlying logics for brands to engage in Douyin e-commerce

Some of these brands that entered the market did ...

A rare fungus is spreading in the United States! Will it cause a global spread?

The Centers for Disease Control and Prevention (C...

Analysis of China's advertising market and advertisers' marketing trends in 2020

Introduction: This year, the theme that the entir...