Many students who do Android development want to do it quickly, efficiently and cheaply. Is this really the case? With the experience of our predecessors, our goals can be clearer, and we can plan to divide our learning into stages. However, the path of learning will not change. We will encounter the same things as others, and we will have to fall into the same pits as others. Next, I would like to express our understanding of the android learning path, and share the experience I have collected from predecessors, so that the road ahead is no longer obscure and the road under our feet is straighter. That's all~ As a person, how should we think and view ourselves when we are confused? If you don’t know, then read below: Say something open Continue to complain and share your thoughts on how to learn I think those who read my articles have at least one year of development experience, or are at least skilled junior coders. At this stage and even in the next few stages, Android coders are actually anxious and fearful. First, the overall environment is not as hot as before, it is more difficult to find a job, and the requirements for coders are also rising. Second, coders have discovered a large number of knowledge points and aspects in the learning process. There are too many of these things. After reading A, BCDEF will be connected, which involves a lot of other knowledge points such as Java, which are all difficult and time-consuming. All of the above have made us lose confidence, and the environment has become more tense, so anxiety arises. You don't have to be too anxious about this. It's okay to be anxious. These things will become our food sooner or later. We have to learn them and get through them. Of course, the sooner we get through them, the better. This involves the question of how to learn. A coder who knows how to learn will be very efficient, learn more thoroughly, remember more firmly, and record relevant technical blogs, so there is basically no need to repeat what you have learned. When we learn the knowledge points that we have not absorbed, we basically follow the following principles:
My recommended learning path: Learn to record the unknown Usually, pay attention to recording those points that you have not heard of or do not understand. If there are links, write them down. Then classify them according to your own understanding, and prioritize and determine the degree of difficulty. This way, you can always have a clear understanding of yourself. You will know how much you don’t know, and how much you know. When you want to read it, you can immediately find relevant information. Learn to choose what you can learn Knowledge points are endless. No matter how high our level is, there are always things we can learn. So what should we learn? Of course, we should learn those things that we think we can understand, learn, and use in our work. Remember that it is useless to learn knowledge points that you cannot understand at all. If you cannot understand this knowledge point at all, it means that you have no knowledge of the relevant basic knowledge. You need to start from the beginning. This is like a skill tree that you have not yet clicked on! For those knowledge points that you cannot understand half of, it also means that you lack the relevant basic knowledge. If you want to learn, you have to start from the basic knowledge, but the relative difficulty is much lower. Learn to learn knowledge points in a systematic way Generally, everyone knows that a larger knowledge point is composed of many small, interconnected knowledge points. We know some, we don't know some, anyway, there must be some or many, so how should we learn when we encounter an unfamiliar knowledge point? I suggest that you search for the keywords of this knowledge point on major platforms such as Google, Baidu, Jianshu, and Nuggets, and then take a quick look at dozens or a certain number of articles, sort out how many small knowledge points are involved under this knowledge point, and then write them down, sort them out and write an overview article, and then start with the simple ones, and learn one by one in the order of involvement, so that you can effectively achieve systematic learning. Otherwise, you will spend a lot of time looking at the hammer in the east and the axe in the west, and most people still have a lot of omissions, and they feel that they have not learned it thoroughly. The current development knowledge is systematic, and we must also be systematic when we study to be efficient. Learn how to effectively save your learning experience This is a continuation of the above point. We finally figured out a small knowledge point, but after learning it thoroughly, everyone will actually forget it very quickly. This is the case with me! A very thorough understanding will start to become unclear in a few days. The only effective method at present is to achieve it by systematically writing technical blog posts after understanding it thoroughly at the code level by writing demos. The advantages of this are: first, after it is written on paper, we can immediately recall it through blog posts if we forget it; second, we choose to learn in a systematic way, and we can stop at any time in the middle to do more important things at hand, and then come back to continue learning this knowledge point after we are done, because the learning order has been worked out through the previous survey, and we can continue in this order to learn the unfinished parts. When everyone is working, most of the free time is fragmented, so we learn new knowledge in segments. The above systematic learning plan is especially suitable for us. I suffered a lot before because I didn't know how to learn, didn't remember technical blogs, and studied blindly without a system. I can't remember what I learned earlier. It can be seen that how to learn is a big question, and it is also a sign of a coder becoming mature. On the long road of coders, the most influential thing for us is how to learn. Let's think about it more~ Winter The winter of 2018 was really cold. Everyone was talking about layoffs. In fact, layoffs have always been going on, but there were more in 2018. Android has been around for 10 years, and has accumulated too many technologies, knowledge points, skills, and ideas. Our predecessors have all mastered these, and are creating new ideas. For the vast majority of low-level coders, it is difficult to just catch up, let alone create their own. However, in reality, we have learned a lot of open source frameworks, but in practice, we just know how to use them. Not to mention whether we have read the source code, we don’t even know the principles, and we don’t know what technology the author used to achieve it. This is the current situation of the vast majority of coders, and there is no growth. Let's talk about the big picture. In this cold winter, there are still many companies recruiting. With mobile devices becoming more popular, who can live without mobile IoT devices? The huge number of devices means that the demand for the mobile market is still strong. What kind of mobile coders do companies need? Mid- to high-end ones. To be honest, it is not easy to grow from the entry-level level of coding a page to the intermediate level. In fact, on average, not many people grow to the intermediate level in 2-3 years. When companies interview, they can only find a suitable senior developer through a large number of interviews. This process is time-consuming and laborious, which shows that everyone's level is still too low compared to the demand and needs to be further improved! It's not the market that is cold in winter, it's us who are at the low end of the industry. The mobile development industry will die if we don't make progress, and it will never change. If everyone works hard for a year, we can all have good results, and our chances of getting an interview will be much greater. Salary Interviews for intermediate and senior Android developers - The road to the future, dedicated to you who are confused. The author tells us that if you don’t exceed 20K, it means that your Android is not good enough. On the one hand, the technical ability and knowledge are too narrow. It is recommended to try multiple module functions. You cannot just focus on your own company's projects and not be proficient in other aspects. Such a result is not good for your own development. (For example, you are very good at your own company's functions and understand them very well. But when asked about other functional modules, you don't know. It is recommended to develop in many aspects and do more data analysis. For example, Baidu Index, Alibaba Index, APP Function Index, Toutiao Index. Then develop in these directions. For example, from 2018 to 2020, small and medium-sized videos in the project, small and medium-sized videos in the community, and live broadcasts will be added to the project. People with rich experience in this area are in high demand). Second: some students are really capable and can do it, but their ability to further understand the principles, or to know the principles, but their ability to solve the problem by themselves (rather than Baidu) is a little bit worse. For example, many people face this problem in interviews: they can't speak, but they can write and write. Why can't they speak? Because they don't have a clear understanding of the system, so they can't answer well. The reality is that after we have consolidated our skills and expanded our knowledge, 20K is relatively easy to reach, but it is difficult to reach 30K. Only those coders who can write their own open source projects on github, such as okhttp, retrofit, rxjava, and other heavyweight open source frameworks, can reach 50K. You can experience the gap between the two periods. You can reach 20K with hard work, but only after long-term and continuous hard work can you hope to reach 30K. There is a long way to go, so everyone should work hard and take care. In the midterm, balancing work, life, family, and health is a big problem, and only high efficiency is the fundamental way out~ How to survive in the cold winter I'm glad that there are some friends who can keep a calm mind amidst the negative articles on the streets and share some positive articles, which finally warms me up in this winter. God always favors those who love to think, and those who love to think are generally not too bad luck. So what is the Internet winter? It’s just that you are not wearing enough! In the article, the author talked about the topic of thinking. I think everyone should read it and then think about themselves. Technology is our basic foundation, but not all. Didn't Alibaba recently announce that in the future, people with technical backgrounds should be selected for other positions. I see that this idea is gradually gaining recognition in China, and more and more companies are considering people with technical backgrounds. This is our opportunity. As we get older, only a small number of people can be successfully promoted to management positions, and other students must face job transfers. Job transfers do not mean changing industries. We coders can do products, project managers, operations, etc. The technology and knowledge points required for these positions are simply insignificant compared to those of coders. After we have an in-depth understanding of these positions, in-depth communication experience, and deep understanding, it is not difficult for us coders to transfer to these positions, and we can get started quickly. However, this requires us to consider the position of our transfer in advance, focus more on, communicate, and learn more, and it is best to be able to transfer within the company, so that the company will be more tolerant of everyone. If coders are planning to change jobs, then don't study other things and just focus on Android technology. Wait until Python, H5, etc. are stable. After all, we are doing Android development and we are looking for Android development jobs. Although other directions are better, they are not the company's focus. How to classify Android levels I think only those who have a comprehensive understanding of Android development can go further. The first thing is to understand yourself, what level you are at, what the next focus of learning is, and what your goals are. Only in this way can you be targeted and not waste time. Generally speaking, we know that the Android level can be divided into: entry-level, elementary, intermediate, advanced, and senior. But this division has no guiding significance for us. How should we advance and plan for the different behaviors of Android developers at different levels? The author divides Android into 4 levels:
I think this kind of division is not of practical significance. You can read to see what the technical signs of each stage are. It has good guiding significance. Except that I do not agree with the author's estimate of the time it takes to reach each level, I agree with other aspects. There are many things to say about the classification of technical levels. That’s all I have to say for now. Please look forward to my future updates. Android technical points I don’t know if you have heard that in this “winter” today, some company employees are still scrambling for the chance to be laid off by various means, just to get compensation for those few months! Faced with such big guys who have no worries about finding a job, shouldn’t we blush and do something? If you want to advance in Android development, you should basically go through the following points. You should know all of them. This will not only improve your coder skills, but will also be asked during interviews.
Each of the above items will take a long time to complete. You can calculate how much time you have to complete them. But once you have completed them, you will at least not worry about interviews. If you are lucky, you can get into a good company with growth and excellent returns. The most comfortable place now is not a big company, but a medium-sized company with excellent business. There are not many people and little things to do. The organization has not started to become rigid. The treatment of a small number of people can be guaranteed. There is excellent business and growth without the worry of layoffs. The company atmosphere is also relaxed and happy. This is the paradise I want to go to~ If you want to go deeper into the image, the following is inevitable:
Required skills for senior engineers System design capabilities Because if you are only familiar with a variety of technologies, have technical breadth and a certain degree of technical depth, it is actually not enough. If your system design ability is not in place, you may use technology indiscriminately when developing the system. For example, some systems have their own special business scenarios and technical challenges. In fact, in this scenario, it is more appropriate to adopt the "cache + database" technical solution to deal with it. However, some engineers have a lot of technical knowledge, but lack the ability to accurately analyze system problems and propose reasonable technical solutions. In other words, they lack system design capabilities, which may lead them to introduce technologies such as Elasticsearch to try to solve this problem. Then the result is bound to be failure. So many people have come to me to ask questions, saying that I used XX technology in XX scenario, but it did not achieve the result I wanted. I helped him take a look and thought, isn't this inevitable? Your XX technology should be used in YY scenario, but you use it in XX scenario, so it definitely won't work. This is the importance of system design capabilities. How to write our code well I think this is the ultimate pursuit that everyone has been carrying out. The sentence that I remember most is: no matter what, your code must be readable first. This is what an old driver taught me when I just entered the industry. As I learned more and understood more, our pursuit of basic skills is to make the code more beautiful. Good-looking code is easier to understand and modify. Design patterns, code architecture, framework design, MVP (multi-terminal separation) are not all the pursuit of this ultimate result! In addition to the various knowledge we need to learn but not limited to the above, good-looking code is also reflected in our usual attitude towards code, which is reflected in our usual code standards. Today I saw an article: Programmer: Why can't I understand the code I wrote a few months ago? It said everything I usually want to say. This is what we usually look like: The code has no comments For complex business, if there is no annotation, it will drive the following colleagues to death. After 2-3 months, it will also drive myself to death. What the hell is this bunch of writing? I am going to die... Write code for the process It's so complicated, I can't understand it, the method is so long, mom, I can't understand it, what should I do? Although it feels good when writing, but when we modify and add functions later, our hearts must be broken, it's not easy to modify, not easy to add, it's definitely time-consuming and laborious, and then the more we modify and add, the more messy and difficult to understand, it's impossible to maintain, who has written such code, don't hide... So, design patterns, framework design, interface-oriented programming, functional separation, and architectural layer separation came into being. Code variable names are arbitrary What are the x, a, b, c, temp1, temp2, temp3 in the whole article? I can't understand them in the context. I really don't know how I wrote them in the first place. Coding always requires us to understand the meaning of the name. Now I deeply understand the benefits of understanding the meaning of the name. It is really very fast and a very nice experience. Here I want to say that Google's English naming is not very good. For some words, I really want to slap them... The division of labor for each method is not clear If you write 100 lines in a method, how can others see it and how can you reuse the code? If you don't abstract the same code and copy it everywhere, it will be private. So what do we do? We do the following:
The skill lies beyond poetry When we have been doing it for 5-10 years, technology is not the only stepping stone, nor is it the most important thing. Instead, it is things other than technology: connections, reputation, resume, and gradually formed manners, etc. However, how to obtain these things through "deliberate practice" (a new word) depends on conscious attempts, accumulation, and improvement. For example, when I share technology in the company, I usually ask everyone to give a formal speech, the listeners should listen well, take pictures well, take notes seriously, and the speakers should cooperate with the blackboard and the big screen and try to be their best selves on the high steps without stuttering, with coherent thoughts and the ability to perform on the spot. I also often interact with the people on the podium, and lead them to talk more about their ideas. When you are familiar with this environment, this atmosphere, and this kind of thing, you will be able to speak and give speeches invisibly, and your aura will be cultivated. Of course, this is not all, there is more, such as how you communicate with products, UI, and operations to see what other people’s work content is, what difficulties they have, which aspects involve development, and even other people’s entire work content and work skills. In this way, you have the ability to expand horizontally that is different from others. In a company, a technician who can effectively communicate with different departments, establish connections, solve problems, and sort out contradictions is much more important than a simple technician. At the same time, such people are more likely to be promoted. The more online your career path is, the more departments you will come into contact with, and the ability to collaborate with these departments will be crucial. |
<<: Understand these three reasons that slow down mobile applications before solving the problem
>>: Apple CEO Tim Cook: There are things I will say until I die
Have you ever had such a time, when you have frie...
Planning and production Source: A Brief History A...
Produced by: Science Popularization China Author:...
When children get the flu, parents are the most c...
As a new business outlet in the Internet era, the...
By June, the scorching summer begins. Along with ...
This article takes " Tencent Game Manager&qu...
With the arrival of summer, the wedding photograp...
It is less than ten days away from the 2024 Sprin...
The high-profile Hillhouse seems to have lost its...
Just now, Ele.me took advantage of me. When it wa...
Recently, the COVID-19 pandemic remains complex a...
I’m sure you were all flooded with messages about...
Color is a simple and straightforward observation...
This article was reviewed by Zhao Xumao, a young ...