Avoid detours: advice for Java programmers with 1 to 5 years of experience

Avoid detours: advice for Java programmers with 1 to 5 years of experience

Today, I am going to share some practical information, so I will not talk about some learning methods and techniques, but directly talk about the content to be learned at each stage and even some books. This part of the content is also suitable for some students who want to switch to Java.

[[230911]]

Before you read this, I want to make two points.

  1. Since I am a Java backend developer, the recommended learning content is the Java Web and Java backend development route. Students who are not Java Web and Java backend developers can refer to the learning ideas appropriately, but do not copy them.
  2. The following recommendations are intended to help you become a Java developer who can work as soon as possible. They are more suitable for those who are unemployed and are preparing to switch to Java. If you are a student, you must learn the basics (such as computer systems, algorithms, compiler principles, etc.) before considering the following studies.

For students who have not yet worked in Java, including some students who are still in school and those who are just about to switch to Java

1. Java Basics

When learning the basics of Java, you should try to do as much hands-on work as possible. Many times, you take things for granted, but once you write them out and run them, you will find that it is not the case. If you don’t believe it, just try it.

After learning the above, you should have a basic understanding of Java. You can write some simple programs in Java, and you use the simplest editor, such as Notepad. At this time, don't rush to the next part. Leave a few days to write some programs and get familiar with these basic contents as much as possible.

2. Web Development

After you have been writing programs for a few days, you will often feel lost because what you have written seems to be useless, such as implementing a simple calculator, reading a file, etc. At this time, you should learn to write something that you find interesting, so you should learn more knowledge.

These contents are mainly related to Web development, including knowledge related to HTML/CSS/JS (front-end pages), Servlet/JSP (J2EE) and Mysql (database).

The order of learning them should be from front to back, so the first thing to learn should be HTML/CSS/JS (front-end pages). You can find this part on the runoob website mentioned above. You can try to write some pages yourself, of course, you can do your best to make it the most beautiful. This part of the content is not particularly important for back-end Java in theory, but at least you should be able to write some simple pages yourself.

Next, you need to learn the Servlet/JSP (J2EE) part, which is the part that Java back-end developers must be very proficient in. Therefore, this part is the most time-consuming of the three parts. At this time, you must learn to use development tools instead of Notepad. You can choose eclipse.

After you download and install eclipse, please follow the tutorial in the video step by step and do more hands-on work. Regarding the selection of Servlet/Jsp videos, the industry generally recognizes Ma Bingbing's videos, so I recommend them to everyone. Of course, I haven't watched his videos, so it's hard to say for sure. If you have a better choice, you can stick to your own and don't be disturbed by me.

Originally, I was planning to make a teaching video, but due to time constraints, I decided to give up. But if you have any questions while watching the video, you are welcome to ask questions in my chat group, or go to Douyu to watch my live broadcast and ask your questions. The live broadcast address and group number are on the left side of my personal blog.

The first step is to learn how to use a database. MySQL is a good choice for beginners, and the mainstream relational database in the Java field is MySQL. This part is usually encountered when you learn Servlet/Jsp, and the JDBC part is the database-related part. You must not only learn how to use JDBC to operate the database, but also learn how to use database client tools, such as navicat, sqlyog, you can choose one of the two.

3. Development Framework

After you have learned the above content, you are not yet qualified to work, you still need to continue your studies. In order to improve the efficiency of development, the company will use some Java Web frameworks, so you also need to learn some development frameworks.

The most popular frameworks are SSM, namely spring, springmvc, and mybatis. You need to learn how to build these three frameworks and use them to create a simple web project that can add, delete, modify, and query. You don't need to understand what those configurations mean or why you need to do this. You can learn about them later. But you must be able to quickly build a web framework using these three frameworks. You can record the process of your first build. Believe me, you will definitely use it.

I would also like to mention that you may often come into contact with a tool called Maven during the process of building SSM. This tool is also a tool that you will almost have to use in your future work, so you can also learn about Maven while building SSM. At your current stage, you only need to learn about the basic usage of Maven on the Internet. You will gradually come into contact with some advanced usage as your work experience increases.

4. Find a job

When you have finished learning the development framework, you should look for a job, an internship if you are still in school, or a full-time job if you have graduated. At the same time, while looking for a job, you should not stop your learning. To be precise, you should never stop learning in the future.

You have only learned to use the above contents superficially. You can gradually try to learn more things. The Internet is your most important teacher.

For students who have been working for less than one year

Congratulations, at this point, you already have a Java job. This is a stage where you grow very fast, and you may often work overtime.

But working overtime doesn't mean you can relax. Always remember what LZ said, from the moment you enter the industry, you have to keep learning. In this year, you need to at least finish reading the book "Java Programming Ideas". The content of this book is to help you have a deeper understanding of Java, and it is an upgraded version of Java basics.

This book is very thick. It took me three months to finish it. If you read at a normal speed, you should be able to finish it in about half a year. I don't have too high a requirement here, as long as you finish the book within a year. Of course, what I mean by finish is to fully absorb it, not just read it once, so you may need to read some content more than once.

In short, the core learning idea of ​​this stage is to practice in work and have a deeper understanding of Java basics.

For students who have been working for 1 to 2 years

Students in this period have a deeper understanding of Java, but their understanding of object-oriented programming may not be deep enough. When programming, they still stay at the level of completing functions and rarely consider design issues.

So at this time, design patterns came. I read the book "Design Patterns in Chinese" and wrote a complete blog on design patterns. Therefore, I ask everyone to start blogging when you have worked for a year at most, and design patterns are the beginning of your blog.

Please remember that what I mentioned are basically the highest requirements, so don't be lax. Otherwise, five years later, you will not envy others who have higher salaries than you, nor will you envy others for joining a certain company.

This year, you must be familiar with design patterns. "Design Patterns in Chinese" can be your starting point.

In addition, design patterns are not your only task this year, you also need to read some books on code writing optimization, such as "Refactoring to Improve the Design of Existing Code" and "Effective Java".

In short, at this stage, your core task is to improve your coding skills and be able to write elegant code.

For students who have been working for 2 to 3 years

Some students feel that they are already very good at this time, so they can't help but start to relax slowly. Please remember that you are still very young.

At this stage, there is a book you must read, it is called "In-depth Understanding of Java Virtual Machine". This book is absolutely the most important book for Java developers, no doubt about it. In my opinion, the importance of this book is even higher than "Java Programming Ideas".

The content of this book is to help you fully understand the Java virtual machine. At this stage, you must have known that Java runs on the JVM. Therefore, there is no reason for you not to understand the JVM.

In addition, you must have come into contact with concurrency in the past two years of work. At this time, you should have a deeper understanding of concurrency-related knowledge. For this part, I recommend the book "Java Concurrency Programming Practice". As long as you finish this book, you will have a basic understanding of concurrency.

At the same time, you need to do much more than that at this stage. At this point, you should have a deeper understanding of the framework you are using and 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 for understanding these source codes is that you must have a good understanding of design patterns. Otherwise, when you read the source codes, you will always have questions like, why is this code written like this? Why do we need to define this interface? It seems redundant.

From this, we can see that these learning processes are closely linked. If you fall behind in any stage, then you really can't keep up, or you will be slow at every step. And I can tell you responsibly that I learned much more than what is listed here during this stage. So don't think you have learned a lot. What I said is just the minimum requirement. Not only me, but many people have learned much more than the scope of this article during this period.

If you can't keep up with the pace, after a few years, unless the market for programmers is still good, you may not only have a lower salary than others and work for a worse company than others, but you may not be able to find a job at all.

In short, at this stage, you need to have a deep understanding of Java underlying and Java class libraries (for example, the book on concurrency is about the Java concurrency package java.concurrent), that is, the relevant content of JVM and JDK. You also need to have a deeper understanding of the framework you are using. It is recommended to read the source code or official documentation.

In addition, there is another way of learning that should be used during the two-year period, which is to reinvent the wheel.

Don't listen to the argument of "don't reinvent the wheel", which is made up by companies to save time and cost. Reinventing the wheel may not be valuable to others, because the wheel you make may already exist, and in general, the wheel you make is not as good as the existing one. But if it is not valuable to others, it does not mean it is not valuable to you.

The process of reinventing the wheel is a process from scratch. This process can systematically train you. It not only tests your coding ability, but also your framework design ability. You need to make your wheel have good enough scalability and robustness.

In the process of making the wheel, you will encounter various problems, which are often opportunities for you to learn. When you have built the wheel, you will find that you have gained a lot.

Therefore, at this stage, in addition to understanding the JVM, JDK and framework source code mentioned above, please also build any wheel you can imagine based on other people's excellent source code.

Students who have been working for 3 to 4 years

It is very difficult for students at this stage to improve, and the learning at this stage is often more diverse. Because in the first three years, you must have been exposed to some other technologies, such as big data, distributed cache, distributed message service, distributed computing, soft load balancing, etc. If you can master any of these technologies, it will be a huge advantage in your future interviews. Therefore, if you are interested in a certain technology, you can study it in depth at this time. This technology may not be used in your work, but it must be related.

When studying a new technology, be careful not to change your mind frequently. Some students start to study big data, such as Hadoop and HBase. After a while, they find it boring and start to study distributed cache, such as Redis. After a while, they start to study distributed computing, such as Mapreduce or Storm.

As a result, when you get a job, you act like you know everything, and write on your resume that you understand big data, distributed cache, and distributed computing, but in fact, you only know the surface of each one. When the interviewer asks you a random question, he will see through you.

You must remember that as a programmer, you may be exposed to a lot of technologies in your daily life, but if you want to make a technology your advantage, you must understand this technology better than most people.

Therefore, at this stage, you can no longer simply learn the content of the first three years. Although you still need to continue if the previous learning is not in-depth enough, at this time you should consider more about building your advantages, which can also be called differentiation.

The difference is not difficult to understand, it is to make yourself different. Your previous three years of study are enough for you to become a basically qualified Java developer, but you are still a long way from becoming an excellent Java developer.

Excellence means being able to do what others cannot. What you have learned in the first three years is something that many people who have been doing Java development for a few years can master. So in order to make yourself different, you need to find another way and go deep into a direction, so that in the future, you can become an expert in this field, such as an expert in distributed computing, an expert in big data, an expert in concurrency, etc.

In addition to establishing your differences, you also need to make up for your lack of basic knowledge. Until now, I have not mentioned the basic knowledge. The reason is that the basics are very boring. Learning them too early will not only make you confused, but also cause psychological trauma, so that you will not want to study these basics in the future. But the basics are what you must master when you study some fields in depth. For example, if you study distributed computing, what can you do if you don’t understand algorithms? For example, if you do distributed caching, how can you do caching if you don’t understand the memory of the computer system?

If you already have a strong foundation, then congratulations, I believe you have fully realized the help of these foundations in your previous work. But I believe that most people have a weak foundation. Even those who graduated from professional schools, many people dare not say how strong their foundations were, such as algorithms, computer system principles, and compiler principles.

However, everyone has limited time, and it takes at least a year or two to read each of these basic books, so you still have to make some choices. Although it is good to have many skills, the problem is that many skills have a price, which requires you to spend time and energy, and I personally prefer to get the most out of the same price.

First of all, there are three basic books that I recommend, namely "In-depth Understanding of Computer Systems", "TCP/IP Detailed Explanation Volumes 1, 2, and 3", and "Data Structures and Algorithms". TCP/IP has three books, but we regard these three as one big book here.

These three books are suitable for three types of people. "In-depth Understanding of Computer Systems" is more suitable for people who have been engaged in Java Web development and APP backend 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, you need to have a deeper understanding of TCP/IP. And the book "Data Structures and Algorithms" is more suitable for people who do computing research, such as the distributed computing mentioned above.

In addition, I want to emphasize that the "suitability" mentioned here does not mean that the other two books are useless to you. For example, if you are doing Java Web and APP backend development, the book "TCP/IP Detailed Explanation Volumes 1, 2, and 3" will also be of great use to you. Here we are just distinguishing the primary and secondary relationships. If you have enough time, it would be best if you can read all three books carefully. But if time is limited, then pick the book that helps you the most first.

Theoretically speaking, if you can finish reading one of these three books in this year, you will be very impressive. With the foundation and previous work experience, you can explore your own field.

In this year, you must plan your own field, establish your own advantages, and create differences. If you are not clear about your field, as you work more and more, you will be exposed to more and more technologies. At this time, you will easily be drowned in the ocean of technology. It seems that you are exposed to more and more technologies and can use more and more technologies, but you have no advantages.

Some students may ask, "LZ, I don't know what my field is. What should I do?"

To this kind of person, I just want to say, "Fuck, you're asking me this? How about I just learn for you, okay?"

Students who have been working for 4 to 5 years

After a year of experience, I believe you have already gained some insights in the field you are studying. At this time, you should have encountered a bottleneck in technology. Don't rush to improve your technology 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 of your own and build your own product. 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.

When you reach this stage of learning technology, it is easy to encounter bottlenecks, and often after reaching a certain level, the benefits of going deeper are really minimal, unless you are engaged in academic research. Unfortunately, most programmers cannot do this step, that is what scientists do.

At this time, increasing your influence is not only because you may encounter technical bottlenecks, but also because influence can create more opportunities for you. Programmers are similar to celebrities to some extent. A good TV series or movie can make a group of celebrities, and programmers are also like this sometimes. A good project can make a group of programmers.

For example, there are several popular projects in China, such as Taobao, Alipay, QQ, Baidu, WeChat, etc. Each of these projects has created a group of programmers. I dare to say that if you are the core developer of any of these projects, just such a title is already a huge advantage for you. What's more, it's more than that. After all, the title is also a name. More importantly, when you are working on such a project, it must be very powerful for your experience.

If you want to participate in such a project, besides luck, influence is also a very important means. For example, if you have a certain influence in the field of distributed computing, then if there is a good distributed computing project, the other party is likely to invite you. Even if they don't invite you, when you take the initiative to go for an 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.

Therefore, at this stage, your biggest task is to increase your influence and prepare for the day when you will have a ten-year career. If you can rely on your influence and the skills you have accumulated before to participate in a great project, then your next five years will be settled.

<<:  Next year's iPhone may use a rear triple-lens camera to replace ToF sensing technology

>>:  AI is taking programmers' jobs: AI may replace programmers in 2040

Recommend

Lovely owls? It turns out this mysterious species is not simple!

Owls have fascinated humans for thousands of year...

How to keep your community active? Here are 2 tips to share with you!

Community activity is a difficult problem faced b...

Analysis of Mixue Bingcheng’s marketing plan!

Some time ago, the popularity of Mixue Bingcheng ...

Android Tencent Video v7.9.3 removes ads and unlocks Blu-ray quality_Taoduoduo

Go to play video ads Remove some advertising push...

The strychnos nux vomica: When I become poisonous, I can even kill myself!

In the tropical regions of our country, there is ...

Why are more and more strong typhoons coming earlier?

A strong typhoon is a tropical cyclone with great...

Video tutorial on techniques and methods for shooting short videos

Nowadays, many people find that as long as the sh...

A map tells you where to see the most beautiful volcanic lake in China

Loading long image... Source: National Geographic...

Hot 2022 Chengdu Tea Tasting with its own studio

Reservation arrangements for Chengdu Tea Tasting ...