How to break through the watershed of Java programmers

Phase 1: JAVA practitioner within one year

This stage is where you grow extremely fast, and you may be working overtime a lot. But working overtime does not mean that you can relax. Always remember what I said, from the moment you enter the industry, you must keep learning. In this year, you need to read at least the book "Java Programming Thinking". The content of this book is to help you have a more in-depth understanding of Java, which is an upgraded version of Java basics. This book is very thick, and it took me three months to read it. At normal speed, you should be able to read it in about half a year. I'm not asking too much here, as long as you finish the book within a year. Of course, when I say read, I mean to fully absorb it, not to finish it after reading it once, so you may read some content more than once. All in all, the core learning idea of ​​this stage is to practice on the job and have a deeper understanding of Java basics.

The second stage: 1-2 years of practitioners, already have a more in-depth understanding of Java.

However, the experience of object-oriented may not be deep enough. When programming, it still stays at the level of completing functions, and rarely considers design issues. So at this time, the design pattern came. I was reading the book Big Talk Design Patterns and wrote a full blog on Design Patterns. Therefore, I ask everyone that you must start blogging when you have been working for a year at the most, and design patterns are the beginning of your blog.

Please keep in mind that what I have mentioned are basically the minimum requirements, so don't have any slack, otherwise after five years, you should not envy other people's higher wages than you, and don't envy others for entering a certain company. This year, you must know design patterns well, and "Dahua Design Patterns" can be your starting point. Also, design patterns are not your only task this year, you also need to read some books on coding optimization. For example, "Refactoring to improve the design of existing code", "effective java". All in all, at this stage, your core task is to improve your coding ability and to be able to write first-hand elegant code.

Stage 3: JAVA Developer for Jobs 2-3

Remember, you are still much younger. At this stage, there is a book you must read, it is called "In-depth understanding of the Java virtual machine". This book is definitely the most important book for Java developers, bar none. In my eyes, the importance of this book is even higher than "Java Programming Ideas". The content of this book is to help you understand the Java Virtual Machine comprehensively. At this stage, you must already know that Java is running on the JVM. So, with the JVM, you have no reason not to know about it.

In addition, in the past 2 years of work, you must have been exposed to concurrency more or less. At this time, you should have a deeper understanding of concurrency-related knowledge, and for this part, I recommend the book "Java Concurrency Programming in Practice". As long as you have read this book, you have basically understood the concurrency part. At the same time, at this stage you have to do much more than that. At this time, you should have a deeper understanding of the framework you are using, and have a deeper understanding of the Java class library.

Therefore, you need to look at the source code of some classes in the JDK, including the source code of the framework you are using. The premise that these source codes can be understood is that you must have a good understanding of design patterns. Otherwise, when you look at the source code, you will always have questions like this, why is this code written like this? Why define this interface, it seems redundant? From this, it can also be seen that these learning processes are interlinked. If you pull down at any stage, then you really can't keep up, or step by step. And I am very responsible to tell you that at this stage, I have learned far more than what is listed here.

So don't think you've learned a lot, what I'm talking about is just the minimum requirements, not just me, many people have learned much more than the scope of this article during this time period. If you can't keep up with the rhythm, after a few years, if the programmer market is not good, you may not only have a lower salary than others, and the company is not as good as others, but you will not be able to find a job at all. All in all, at this stage, what you need to do is to have a deep understanding of the Java bottom layer and Java class library (for example, the book on concurrency is the content of the Java concurrent package java.concurrent), that is, the related content of JVM and JDK. And you need to have a deeper understanding of the framework you are using. It is recommended to look at the source code or official documentation. In addition, there is another way of learning, which should also be enabled at the stage of 2 years, that is, building wheels. Don't listen to the "don't reinvent the wheel" rhetoric, which is made up by companies to save time and cost. Repeatedly building a wheel may be of no value to others, because the wheel you build may already be there, and in general the wheel you build is not as good as the existing one.

But having no value to others doesn't mean that you have no value to yourself. A process of building a wheel is a process of starting from nothing. This process can exercise you systematically. It not only examines your coding ability, but also examines your framework design ability. You need to make your wheels have sufficient scalability and robustness. And in the process of building a wheel, you will encounter all kinds of problems, and these problems are often opportunities for you to learn. When you build the wheel well, you will find that you have gained a lot by yourself. Therefore, at this stage, in addition to the above-mentioned understanding of the JVM, JDK and framework source code, you are also requested to build any wheel you can imagine based on the excellent source code of others.

The fourth stage: JAVA developers who have worked for 3-4 years, the learning in stages tends to be more diverse.

Because in the first 3 years, you must have been exposed to some other technologies more or less, such as big data, distributed cache, distributed message service, distributed computing, soft load balancing and so on. If you are proficient in any of these technologies, it will be a huge advantage in your future interviews, so if you are interested in a certain technology,

It's time to dig deeper. This technique is not necessarily what you use in your work, but it must be relevant. And when researching a new technology, don't be in the dark. Some students go to the whole big data today, and engage in things like Hadoop and hbase. After a while, I felt boring and went to study distributed caches, such as redis. Then after a while, I went to study distributed computing, such as Mapreduce or Storm. As a result, in the end, I made myself seem to be able to do everything, and I boldly wrote about big data, distributed caching, and distributed computing on my resume. In fact, any of them are just superficial. When the interviewer asks casually, they will see through you.

It must be remembered that as a programmer, you may come into contact with many technologies on weekdays, but if you want a technology to be your advantage, you must have a better understanding of this technology than most people. Therefore, at this stage, you can no longer simply study the content of the first 3 years. Although the previous study is not in-depth enough, you should continue, but at this time, you should consider building your advantages more, which can also be called for difference. Difference is not difficult to understand, it is to make yourself different. Your first three years of study are enough to become a basically qualified Java developer, but you are still a long way from being a good Java developer.

To be excellent is to be able to do what others cannot. What you have learned in the first three years can be mastered by many Java developers who have been doing it for several years. Then in order to make yourself different, you need to find another way, find a direction to study in depth, in the hope that in the future, you can become an expert in this field, such as an expert in the field of distributed computing, an expert in the field of big data, an expert in the field of concurrency etc. Also, in addition to building your differences, you also have to make up for your lack of fundamentals, which I haven't mentioned until now. The reason is that the foundation is very boring, and learning too early is not only easy to be confused, but also easy to cause psychological shadows, so that you don't want to study these foundations in the future. But the foundation is what you must master when you study some fields in depth. For example, when you study distributed computing, you don’t understand the algorithm. Are you playing a fool? For example, if you are doing distributed caching, you do not know the memory of the computer system. How do you do caching?

If your foundation is already very strong, then congratulations, I believe you have fully realized the help of these foundations to you in your previous work. But I believe that most people's foundation is very weak. Even those who graduated from majors, many people dare not say how strong their basic learning is, such as algorithms, computer system principles, and compilation principles. But everyone's time is limited, and after reading each of these basic books, it takes a year and a half to get them, so you still have to make a choice. Although Yiduo doesn’t press you, the problem is that Yiduo has a price, and it requires your time and energy. Personally, I am more in favor of obtaining the maximum benefit at the same price.

First of all, there are three basic books that I admire, namely "In-depth Understanding of Computer Systems", "Tcp/ip Detailed Explanation Volumes 1, 2, and 3", and "Data Structures and Algorithms". Among them, there are three books on TCP/IP, but we consider these three books as one big book here. These three books are suitable for three types of people, and "In-depth Understanding of Computer Systems" is more suitable for people who have been engaged in Java Web development and APP back-end development. "Tcp/ip Detailed Explanation Volumes 1, 2, and 3" is more suitable for people who do network programming. For example, if you use netty to develop, then you must have a deeper understanding of TCP/IP. The book "Data Structures and Algorithms" is more suitable for people who do computing research, such as the distributed computing just mentioned. In addition, I want to emphasize that what I say here is suitable, not that the other two books are useless for you. For example, if you are doing Java Web and APP back-end development, the book "Tcp/ip Detailed Explanation Volumes 1, 2, and 3" is also very useful to you. This is just a primary and secondary relationship. If you have enough time, it is best to be able to read all three books intensively.

But if time is limited, then pick the books that will help you the most first to read. Theoretically speaking, if you can read one of these three books intensively this year, it is already very powerful. With the foundation and previous work experience, you can develop your own field. During this year, be sure to plan your field, build your strengths, and create a difference. If you are not clear about your own field, as you work more and more time, you will be exposed to more and more technologies. At this time, you can easily be drowned in the sea of ​​technology. The more you come, the more you will use, but you have no advantage. Some students may ask, "I, I don't know what my field is? What should I do?" To this kind of person, I just want to say, "Damn, why don't you ask me? You can learn, okay?"

Stage 5: Work as a JAVA developer for 4-5 years, technically you should have hit a bottleneck.

How to break through the watershed of JAVA  programmers

Don't rush to improve your skills at this time, it's time to increase your influence, you can try to go to some well-known companies to improve your background, you can publish some articles to influence more people. Of course, you can also go to Github to create an open source project that belongs to you and build your own products.

This open source project is different from the previous wheel building. You really have to try your best to build a wheel that is truly valuable to others at this time. At this stage of technology acquisition, it is easy to encounter bottlenecks, and often after reaching a certain level, the effect of further in-depth research is really minimal, unless you are specialized in academic research. Unfortunately, most programmers can't do this step, which is what scientists do. At this time, increasing influence is not only because it is easy to encounter bottlenecks in technology, but more because influence can create more opportunities for you. To a certain extent, programmers are very similar to stars. A good TV series and movie can make a group of stars, and programmers sometimes do, and a good project can make a group of programmers. For example, several popular domestic projects, such as Taobao, Alipay, QQ, Baidu, WeChat and so on. Each of these projects has made a group of programmers. I dare to say that if you are the core development of any project here, just such a Title is already a great advantage for you. What's more, Title is also a name after all, and more importantly, when you are doing this kind of project, it must be very powerful for your experience.

And if you want to participate in such a project, in addition to luck, influence is also a very important means. For example, if you have a certain influence in the field of distributed computing, if there is any good project about distributed computing, the other party is likely to invite you. Even if they don't invite you, when you take the initiative to interview, if the other party knows your influence in this field, it will definitely play a big role, and this role may even exceed your current technical ability. So, at this stage, your biggest task is to increase your influence and prepare yourself for that day in the next ten years of your working life. If you can rely on your influence and previously accumulated technology to participate in a great project, then you will have the next five years. Of course, I am full of calculations now, and I have only been a programmer for less than 4 and a half years. Therefore, about the part of 4 to 5 years, my opinion is not necessarily correct, and even if it is correct, it may not be suitable for anyone. .

Therefore, I hope that everyone has the judgment to decide how to spend this year. Conclusion This article basically ends here. Some of what I said may be right, some are wrong, some are suitable for you, and some are not suitable for you. You need to be able to judge for yourself. In fact, you are the same in life and work. There are all kinds of people around you, some you like and some you hate. But in fact, the people you like have shortcomings, and the people you hate also have advantages. You have to learn to learn the advantages of the person you hate, don't kill him with a stick, it will only make you lose many opportunities to learn and grow. Well, having said so much, let’s stop here. I hope this article can help you as a programmer or a programmer soon.

Programmers who have worked for one to five years are unable to start with the current technology and feel very confused. You can join the group 744677563. There are Ali Java senior Daniel live broadcasting to explain knowledge points and share knowledge. The content of the course is all the teachers have many years of work experience Sort out and summarize, and lead everyone to establish their own technical system and technical cognition comprehensively and scientifically!

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325764084&siteId=291194637