In fact, this part is also the focus of today, this part is to answer a lot of friends in the group have asked the question, that is, how do you learn Java, can you give some advice? Today I’m going to do some dry stuff, so let’s not talk about some learning methods and techniques, but just talk about what to learn at each stage and even some books. This section also applies to those of you who want to switch to Java.

Before you look at it, I want to make two statements. 1. As I am a Java backend developer, the recommended learning content is the route of Java Web and Java backend development. Students who are not Java Web and Java backend development should refer to their learning ideas appropriately, and do not copy them. 2. The following recommendations for Part 1 are intended to help you become a working Java developer as soon as possible, especially for those who are unemployed and planning to switch to Java.

If you are a student in school, be sure to learn the basics (such as computer systems, algorithms, principles of compilation, etc.) before you consider the following courses.

Part 1: For those of you who have not yet worked in Java, including some students in school and those who are just going to switch to Java.

First, Java foundation to find a Java basic tutorial to learn, here can recommend a Java learning exchange QQ group (group number: 532259952) you can go to this group to find the corresponding video tutorial. Learning Java foundation, should as much as possible hands-on, a lot of times, you take for granted things, when you write to run, you will find that it is not so, do not believe you try. Now that you’ve learned this, you should have a basic understanding of Java. You can write simple programs in Java using the simplest editor, like Notepad. At this point, don’t rush into the next section; leave a few days to write some good programming and get as familiar with the basics as you can.

After a few days of writing a program, you often feel lost because your writing seems useless, like implementing a simple calculator, reading a file, etc. This is when you should learn to write something that makes you feel interesting, so you should learn more knowledge. These contents are mainly Web development related content, including HTML/CSS/JS (front-end pages), Servlet/JSP (J2EE) and Mysql (database) related knowledge. They should be learned from front to back, so HTML/CSS/JS should be learned first, which you can find on the Runoob website above.

You can try to write some pages yourself, of course, you can do your best to make it the most beautiful. This is not important in theory for back-end Java, but at least it should be good enough to write some simple pages on your own. Next, you need to learn the Servlet/JSP (J2EE) section, which is the part of Java back-end development that you must be very proficient in, so this is the most effort of the three sections, and at this point, you need to learn to use development tools instead of Notepad, choose Eclipse. Once you’ve downloaded and installed Eclipse, follow the step-by-step tutorials in this video, and be sure to do as much as you can. As for the Servlet/Jsp part of the video selection, the industry is more recognized by ma Soldier’s video, so I recommend it to you.

Of course, I haven’t watched his video, so IT’s hard to say absolutely. If you have a better choice, you can stick to your own, and don’t be disturbed by me. Originally, I also planned to make an instructional video, but I decided to give it up due to time problems. But if you have any questions while watching this video, please come to my Java Learning Exchange group (group number: 532259952). Finally, you need to learn how to use a database. Mysql is a good place to start, and the dominant relational database in the Java world is mysql. This is the part that you will be exposed to when you learn about servlets/JSPS, where the JDBC part is the database-related part. Not only should you be able to operate a database using JDBC, but you should also be able to use database client tools such as Navicat, SQLYog, or either.

Once you’ve learned the above, you’re not ready for a job at this point. You need to continue your education. Companies use Java Web frameworks to make development more efficient, so you’ll need to learn some. At present, SSM framework is more mainstream, namely Spring, SpringMVC, Mybatis. You need to learn how to build these three frameworks and use them to create a simple add, delete, change and review Web project. You don’t have to understand what those configurations mean and why, but I’ll leave that for later.

But you have to be able to quickly build a Web framework out of all three of them, and you can document your first build, and trust me, you’ll need it. One more thing to mention is that you may often come across a tool called Maven while building an SSM. This tool is almost a must in your future work, so you can learn about Maven as you build the SSM. At this stage, you only need to learn the basics of Maven on the Internet, and some of the more advanced uses will come as you gain experience.

When you’re done studying development frameworks, it’s time to look for a job, either as an intern in college or full-time after graduation. At the same time, while looking for a job, you should not stop learning, or, more precisely, you should not stop learning in the future. You’ve just gobbled up the above content, and you can learn more and more gradually. The Internet is your most important teacher.

Part TWO: For students who have been working for less than one year. Congratulations, at this point, you have a Java job.

This is a period of rapid growth, and you are likely to work a lot of overtime. But working overtime doesn’t mean you can relax. Always remember what I said, you have to keep learning from the moment you start your career. At the very least, you need to read The Java Programming Mind this year. This book is designed to help you have a deeper understanding of Java and is an updated version of Java basics. The book is so thick that it took me three months to read it. At a normal pace, we should be able to finish it in about six months. I’m not asking too much here, as long as you finish the book within a year. Of course, when I say read it, I mean absorb it, not read it once, so you may read it more than once. In a word, the core learning idea of this stage is to practice in the work and have a deeper understanding of the Java foundation.

Part THREE: For students who have been working for one to two years. For those of you in this part of the class, you already have a deeper understanding of Java.

However, the experience of object-oriented may not be profound enough, programming is still at the level of functional completion, rarely to consider the problem of design. This is where the design pattern comes in. I read The book Big Talk Design Patterns and wrote the full design Patterns blog. So, I challenge you to start a blog by the time you’ve been working for at most a year, and design patterns are the place to start your blog.

Please remember, I mentioned the basic are minimum requirements, so do not have any relaxed mind, otherwise five years later, you do not envy others higher than your salary, do not envy others into a company. This year, you need to be familiar with design patterns, and Big Talk Design Patterns is a good place to start. In addition, design patterns are not your only task this year, you will also need to read some books on optimizing code writing. Examples include Refactoring to Improve the design of existing code, Effective Java. In short, at this stage, your core task is to improve your ability to write elegant code.

Part FOUR: For the students who have been working for 2 to 3 years, some students feel that they have been very good at this time, so they can not help but start to relax slowly.

Remember, you’re still wet behind the ears. There is a book you must read at this stage called Understanding the Java Virtual Machine in Depth. This book is by far the most important book for Java developers. In my opinion, this book is even more important than Ideas for Java Programming. The purpose of this book is to give you a thorough understanding of the Java Virtual Machine, and at this stage, you must already know that Java runs on a JVM. So there’s no reason why you shouldn’t know about the JVM.

On the other hand, you must have been exposed to concurrency at some point in your career over the past two years. At this time, you should go to a more in-depth knowledge of concurrency, and this part, I would like to recommend “Java Concurrent Programming In Action” book. Once you’ve got the book down, you’ve got about sixty or seven of the concurrent parts. At the same time, you need to do more than that at this stage. At this point, you should have a better understanding of the framework you’re working with, and a better understanding of Java’s class libraries.

Therefore, you need to look at the source code of some of the JDK classes, including the source code of the framework you are using. To be able to read the source code, you have to know a lot about design patterns. Otherwise, when you look at the source code, there will always be such a question, why is this code written this way? Why define this interface, which seems redundant? As you can see, these learning processes are interlinked, and if you fall behind at any one stage, you really can’t keep up, or step by step. And I can honestly tell you that I learned a lot more at this stage than is listed here.

So don’t feel like you’ve learned a lot. This is just the bare minimum, and many people, not just me, have learned far more than the scope of this article. If you can’t keep up, a few years down the road, if the market isn’t good, you might not only be paid less and the company is better, but you might not be able to find a job at all. In summary, at this stage, you need to dig deep into the Java infrastructure and Java libraries (for example, the concurrent book is Java and packages java.concurrent), i.e., the JVM and JDK. But also more in-depth to understand the framework you use, the more recommended way to read the source code or official documentation. In addition, there is another way of learning, which should also be used in the year 2 stage, and that is to build the wheel. Don’t listen to the “Don’t reinvent the wheel” mantra, invented by companies to save time and cost. Reinventing the wheel may not be of value to others, because the wheel you make may already exist, and in general the wheel you make is not as good as the one that exists.

But just because you’re worthless to someone else doesn’t mean you’re worthless to yourself. The process of building a wheel is a process from scratch. This process gives you a systematic workout. It tests not only your coding ability, but also your framework design ability. You need to make your wheels scalable and robust. And in the process of building a wheel, you will encounter all kinds of problems, and these problems are often learning opportunities. When you build the wheel well, you will find that you have gained a lot. So, this stage, in addition to the above mentioned understanding of THE JVM, JDK and framework source code, please also according to others excellent source code, to build any wheel you can imagine.

Part five: Students who have worked for 3 to 4 years At this stage, it is already difficult to improve, and the study at this stage is often more diversified.

In the course of the first 3 years, you must have been exposed to some other technologies, such as big data, distributed caching, distributed messaging services, distributed computing, soft load balancing, etc. Being proficient in any one of these technologies is a huge advantage for future interviews, so if you’re interested in a particular technology,

At this time, we can go into further research. It doesn’t have to be something you use in your job, but it does have to be relevant. And when researching a new technology, don’t chop and change. Some students went to work on big data today, doing things like Hadoop and hbase. After a while, I got bored and went back to distributed caches like Redis. Then, after a while, you go to distributed computing, like Mapreduce or Storm. As a result, you end up acting like you can do everything, boasting about big data, distributed caching, and distributed computing on your resume, when none of them are really on the surface. The interviewer will spot you by asking any question.

Keep in mind that as a programmer, you may be exposed to a lot of technology, but if you want to use a technology to your advantage, you need to know more about it than most people. Therefore, at this stage, you can no longer simply learn the content of the previous three years, although you still need to continue if the previous learning is not deep enough, but at this time you should consider more to build your advantages, also known as differences. Differentiation is easy to understand. It’s about making yourself different. Your first three years of learning are enough to be a reasonably qualified Java developer, but you are far from being a good Java developer.

To be good is to be able to do what others cannot. What you learned in the first three years is something that a lot of Java developers could have learned over the years. In order to differentiate yourself, you need to take a different path, find a field of research, in the future, you can become an expert in the field of distributed computing, big data, concurrency, etc. In addition to building your differentiation, you also have to fill in the gaps in your base, which I haven’t mentioned until now. The reason is that the foundation is very boring, learning too early is not only easy to meng, but also easy to produce psychological shadow, so that I don’t want to study these foundations in the future. But the basics are what you need to know when you’re doing something deep, like distributed computing, you don’t know algorithms, what the hell are you doing? For example, if you do distributed cache, you don’t know the memory of the computer system, how do you do cache?

If you already have a strong foundation, then congratulations, I’m sure you have seen how it has helped you in previous jobs. However, I believe that most people have a very weak foundation. Even if they are graduates, many people dare not say how strong their basic knowledge is, such as algorithm, computer system principle and compilation principle. But everyone’s time is limited, and each of these basic books to read down, not a year or half, it is really not down, so you still have to make choices. The problem is that it comes at a cost. It takes time and energy, and I personally prefer to get the most out of it at the same cost.

First of all, I highly recommend three basic books, respectively, “In-depth Understanding of computer Systems”, “TCP/IP detailed volume I, II, III”, “Data Structures and Algorithms”. There are three books on TCP/IP, but we’ll treat them as one big book here. These three books are suitable for three kinds of people respectively, “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 detail volume one, two, three” is more suitable for network programming people, such as you use NetTY to develop, then it is necessary to have a deeper understanding of TCP/IP. Data Structures and Algorithms, on the other hand, is a book for those who do computational research, such as distributed computing. Also, I want to emphasize that when I say “fit”, I don’t mean that the other two books are useless to you. For example, you do Java Web and APP back-end development, “TCP/IP detailed volume 1, 2, 3” this book is also very important to you. It’s just a matter of prioritizing, but if you have enough time, it would be great if you could read all three.

But if time is limited, pick the books that will help you the most. In theory, if you can read one of these three books intensively this year, you are very good. With a foundation and previous work experience, you can explore your own field. In this year, be sure to plan your own field, establish your own advantages, and make traveling partners. If you don’t have a clear understanding of your field, it’s easy to drown in technology as the hours go by and you’re exposed to more and more technology. It seems like you’re exposed to more and more technology, but you don’t have an advantage. Some students may ask, “ME, I don’t know what my field is? What shall I do?” To this kind of person, I just want to say, “My god, you ask me? Why don’t I learn for you?” If you want to learn Java, you can come to this group, the first is 532, the middle is 259, the last is 952, where you can learn and communicate, there are also materials to download.

The sixth part: participate in the work 4 years to 5 years of students after the previous year’s experience, I believe that you have their own insights in the field of their own study, this time, you should have encountered a bottleneck in technology.

At this time, don’t try to improve your technology, it’s time to improve 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 and create your own open source project to build your own product.

This open source project is different from the previous ones of building wheels, where you really have to try to build wheels that are of real value to others. At this stage of technical learning, it’s easy to hit a bottleneck, and often after a certain point, you really can’t go any further, unless you specialize in academic research. Unfortunately, most programmers can’t do that. That’s what scientists do. It’s not just about technical bottlenecks, it’s about opportunities that influence can create. In a way, programmers are like stars. A good TV show or movie can make a bunch of stars. Sometimes, programmers are like stars. For example, several popular projects in China, such as Taobao, Alipay, QQ, Baidu, wechat and so on. Each of these projects has created a number of program monkeys. I dare say that for any of these projects, if you are the core development of it, such a Title alone is already a huge advantage for you. What’s more, Title is also a name at the end of the day. More importantly, when doing this kind of project, it must be very powerful for your experience.

In addition to luck, influence is also important if you want to participate in such projects. For example, if you have an influence in distributed computing, you are likely to be invited if you have a good project in distributed computing. Even if you’re not invited to an interview, knowing how influential you are in the field will certainly make a difference, perhaps even more than your current technical skills. So, at this stage, your biggest task is to increase your impact and prepare yourself for the day when you will be working for the next ten years. If you can leverage your influence and accumulated skills to get involved in a great project, you’ll be well on your way for the next five years. Of course, I’m full of numbers now, and I’ve been programming for less than four and a half years, so I’m not necessarily right about four to five years, and even if I am right, it’s not necessarily right for everyone.

So I hope you have the judgment to decide how to spend this year. Conclusion This is basically the end of the paper. Some of what I say may be right, some may be wrong, some may be right for you, and some may not be right for you. You have to judge for yourself. The same is true in your life and work. There are many people around you, some you like and some you hate. But the people you like have their flaws, and the people you hate have their strengths. Learn to learn the good things about people you hate. Don’t beat them to the punch. This will take away a lot of learning and growth. Well, that’s it, and I hope this article will help you as a programmer or soon-to-be programmer.