How can Android programmers improve their skills and quickly reach Tencent T3, 50W+ standards?

Such a problem, to be honest, is a problem that I am currently paying more attention to, because fans often respond that they feel it. It seems that a long time has passed, but their technical ability has not improved much. I don’t know if you Have this feeling.

In the final analysis, I still have a pursuit of technology, and I don’t want to be just an ordinary low-level code farmer, so I still think a lot about how to improve my technical ability, and I have been practicing some ideas. For example, I will say later. Of course, some of them are still trying their own blogs. Similarly, some of them are not doing well.

Today, I am going to share all of these with everyone, and for the purpose of communicating and learning from each other, I also look forward to your sharing!

So what should we as programmers do to improve our technical capabilities?

1. Deliberate practice

Some friends should know this term. It is a book. Let us put aside this book and just talk about the words "deliberate practice". What is deliberate practice?

Probably it is to learn consciously. The emphasis here is on active learning, but I think the more important thing is another meaning, which is to do concentrated long-term repeated exercises on a certain piece of knowledge.

I always think that the methodology is something that people read and call out "useful, awesome", but I don’t know how to do it afterwards. This may be the result of the methodology is actually more abstract. I will tell you a methodology. For example, for deliberate practice here, I tell you to learn technology. If you want to improve your level, you have to practice deliberately. Maybe you don't know what to do. It's better to tell you directly, you have to make sure to use LeetCode every day, so you At least know what to do and how to do it.

Do you say that methodology is useful? I find it useful, but for methodological things, you need to combine your own thinking and give a concrete behavior, which is a set of theories that can guide your actual actions. Then you say, what should I do if I can’t summarize it? Things, it’s just a look, I can’t extract anything useful and executable.

What to do then? There is a way, that is to look at other people’s interpretations, refer to others, and try to implement it yourself, whether it is suitable for you, can you keep it, and in the process of doing it, combined with the effect, maybe you will have new thinking , You will improve, which is actually a kind of growth.

What should we do for deliberate practice? I will talk about my approach here for reference only.

In fact, to talk about this, we must talk about it in conjunction with the next point.

2. Systematic learning

What is systematic learning? In my own self-study, I always believe that systematic learning is the most effective way of learning. Of course, systematic learning is actually a very deep thing. Different people understand different meanings and levels. Of course, I Here I will talk about my views and practices.

Combining the deliberate practice of the first point above and the systematic learning here, I actually think they are complementary to each other. Deliberate practice requires us to consciously learn actively, and do targeted repetitive exercises on a certain piece of knowledge, and systematic learning What? The knowledge content that you are required to learn is systematic, not scattered knowledge points, but before and after knowledge points that echo each other, and this systematic learning should be repeated iterations and continuous polishing of the content you learn.

In fact, whether it is deliberate practice or systematic learning, there is a requirement, that is, you must spend enough time, otherwise it won't work.

Having said so much, how did I do it?

Writing tutorials, yes, my current specific approach to deliberate practice and systematic learning is to write tutorials. This tutorial is written not only for myself, but also for others. Then why do I make deliberate practice and systematic learning allow me to write tutorials How to improve your technical capabilities?

First of all, the most basic requirement of a tutorial, knowledge requirements are systematic, not scattered knowledge points, but related and related knowledge points. Of course, the knowledge points contained in a tutorial must be comprehensive enough and relatively rich in content. Also, in the process of writing, you will find many problems, which requires you to repeatedly polish and iterate. Therefore, enough time is essential. Therefore, this learning model is systematic in my opinion One to learn.

As for deliberate practice? What does deliberate practice pay attention to? To consciously do repetitive exercises on a certain piece of knowledge, is writing a tutorial consistent? A tutorial contains a large body of knowledge. To complete such a systematic content, it needs to be polished and iterated repeatedly. This is actually repetition and the pursuit of better. This is not the same as deliberate practice. Coincidentally!

We often feel that knowledge is too much and complicated, that we can't finish learning, can't remember, and our heads are in a mess. One of the reasons for this is that you have learned too much, and a lot of knowledge is placed randomly in your mind, without any continuity. Some shy knowledge hides in a small corner. After a long time, you have forgotten its existence. What should I do?

You need to sort out the knowledge you have learned. You can't let them be so random and disorderly in your mind. You need to specify them, what kind of knowledge should stay in what place, and how? Don’t you think that writing tutorials is a good management model? If the knowledge with the same characteristics and strong related attributes is gathered together, a tutorial must be detailed and complete, and then some knowledge hiding in the corner will also be called by the corresponding tutorial belonging to him.

I often think that learning is actually the easiest, but the hard part is actually the application of knowledge. In other words, it is not important that you learn so much knowledge. The important thing is that you can use it when you need it. Otherwise, learn No matter how much, what's the use of it?

As for the fact that many people can’t call it up, one is that the knowledge is messy, the call is cumbersome, leading to mistakes, and the brain is blank, and the other is that a lot of knowledge is left in a dark corner by you, you have forgotten its existence, and writing tutorials can be used. A whole piece of knowledge is organized, because it is a large piece of content and contains systematic knowledge, so it is not easy to forget, because it is "big" enough and the content is rich enough, so some knowledge that may be placed in the corner is now available Once you belong, you will not easily forget them, and when you need to call them, you will find them easily.

Let me show you the "Notes on Android Development Core Knowledge Points" I wrote:

PS: Click here to get my finished PDF.

The latest version now includes ten knowledge points:

  1. Summary of Java knowledge points
  2. Summary of Android knowledge points
  3. Android extension knowledge points
  4. Summary of performance optimization knowledge points
  5. Android open source library source code analysis
  6. Summary of Kotlin knowledge points
  7. Summary of design patterns
  8. Gradle knowledge points summary
  9. Computer network foundation
  10. Summary of common interview algorithm questions

I believe you can benefit from it

and! Currently, I am still using the off-hours to make corrections. If you see something wrong, please tell me in a private chat. I will make corrections right away~

After writing such a note, I really feel that I have a lot of knowledge and I feel that I have a stronger sense of control over knowledge.

Of course, the above approach is based on the implementation plan that I summarized on deliberate practice and systematic study. It is a reference for you, and I call this method "tutorial study".

Three, write a blog

The above mentioned two ways to improve the technical ability of programmers. One is deliberate practice, and the other is systematic learning. Then I combined these two points to give my own specific methods. The next thing I want to talk about is blogging.

As a programmer, you must believe that blogging is definitely good for you.

I mentioned my tutorial-based learning method above, but you have to know that this method is actually very time-consuming, because a tutorial can be done in three to five days, the minimum time is one month, there is not enough The effect of heat is definitely not good, so have you ever thought that in this month's time, would we not import other knowledge?

In our study and work, whenever we encounter problems and knowledge points that we do not know, we must make a summary record in time, because many times, we must not let ourselves make the same mistake a second time, because the cost is really too high .

Therefore, it is important to summarize more in general. For programmers, blogging is the best way. When we encounter problems, we must summarize and record the knowledge points that we don’t know. It takes time to learn, and then summarize the records. The next time we encounter At the time, because I had summarized it before, there was no major problem. Even if I forgot, I can remember it immediately by reading my blog.

When we are studying, everyone must have the same feeling that a lot of knowledge seems to be able to do it. If you really let yourself operate it, there is a great chance that it will collapse.

The learning of programming is like this. There is a lot of knowledge, and you can’t take it for granted that you will know it. You can summarize it yourself, write it, and the effect will be leveraged. About writing a blog, I won’t talk so much here.

Generally speaking, if programmers want to improve their skills, they can't do without blogs. There are actually a lot of knowledge points that we come into contact with every day, and we have to learn a lot. Tutorial-based learning can't cover everything. In fact, have you noticed me? The tutorial-style learning mentioned above is actually a kind of systematic learning. The best way to organize many scattered knowledge points is to write a blog. And this, I call "blog-based learning".

Haha, I really like naming! Although it is a bit low, there is something inside anyway!

Four, continuous learning

This point is really the answer to that sentence. Study hard and make progress every day. The point to be said here is actually very simple. I don’t want to talk too much. To put it plainly, it is also very simple. That is as a programmer, You must learn a lot and learn enough knowledge.

You can read more books, watch more blogs, watch more videos, and seize all the possible places to learn.

I read Li Xiaolai’s article before and remembered this sentence, which is roughly "when you don’t have enough concepts in your mind, how can you draw inferences from one another."

What does that mean? We often feel that some things have been forgotten and cannot be remembered, and a lot of knowledge is not. The high probability is that you have learned too little knowledge.

Remember to study more, watch more, and look at if you forget. Memory is actually a process of recurring until it becomes a long-term memory. If you learn enough and watch enough, a lot of knowledge will be remembered naturally. I will.

So, programmers, learn more!

Finally, it’s really important to review and fight the project from time to time!

Barabara has said a lot above. I have learned a lot of knowledge retained. If you don’t review it often, the effect will be greatly reduced. Moreover, for tutorial-based learning, you must also be required to review continuously, because it requires continuous polishing and Iterative.

Therefore, learning from the past and learning the new can be a teacher!

The other is actual project combat. I have written articles many times to explain its importance. Believe me, this is the most direct and effective way to improve technical capabilities. No architect can tell by reading a book, architects are all out of combat!

In fact, whether it is a review or actual project combat, the focus is on finding out the blind spots and difficulties of your own knowledge, and then adding the above methods to focus on breakthroughs. Of course, there is a practice that makes perfect in project combat!

Okay, that’s it for today’s sharing, and finally there are some Android interview topics PDF

If you have a need, you can point it to receive

In short, as programmers, we must learn more, the future is promising, let's cheer together!

Guess you like

Origin blog.csdn.net/River_ly/article/details/106931491