Suggestions for learning Java programmers
This part is actually the focus of today. This part is used to answer many questions. The question asked by friends here is, LZ, how did you learn Java? Can you give me some advice?
Today LZ is going to get some useful information, so let’s not talk about some learning methods and techniques, but directly talk about the content to be learned at each stage and even some books. The content of this part is also applicable to some students who want to switch careers to Java.
Before everyone reads it, LZ would like to make two points.
1. Since LZ himself is a Java back-end developer, the recommended learning content is the route of Java Web and Java back-end development. Students who are not Java Web and Java back-end developers should refer to their studies appropriately. Just think of it, don't copy it.
2. The following recommended content for [Part 1] is intended to help you become a Java developer who can work as soon as possible. It is more suitable for students who are unemployed and are preparing to switch to Java. If you are a student at school, be sure to learn the basics (such as computer systems, algorithms, compilation principles, etc.) before considering the following studies.
The first part: For students who have not yet done Java work, including some current students and students who are just preparing to switch to Java.
1. Java Basics
First of all, find a basic Java tutorial to learn. Here you can recommend a QQ group: 159610322 which has a large number of basic video tutorials.
When learning the basics of Java, you should try to do as much as possible. Many times, when you write out and run the things you take for granted, you will find that it is not the case. If you don’t believe it, just try it.
After learning the above content, you should have a basic understanding of Java. You can write some simple programs in Java language, 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 become as familiar with these basic contents as possible.
2. Web Development
After you write programs for a few days, you will often feel confused because what you write seems useless, such as implementing a simple calculator. , read 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 HTML/CSS/JS (front-end page), Servlet/JSP (J2EE) and MySQL (database) related knowledge.
The order of learning them should be from front to back, so the first thing to learn should be HTML/CSS/JS (front-end page). You can find this part on the runoob website above. You can try to write some pages yourself, and of course, you can try your best to make it the most beautiful. This part of the content is not particularly important in theory for back-end Java, but it must at least reach a level where you can write some simple pages by yourself.
Next, what you need to learn is the Servlet/JSP (J2EE) part. This part is the part that Java back-end development must be very proficient in, so this part requires the most energy among the three parts, and At this time, you need to learn to use development tools instead of using Notepad. You can choose eclipse.
After you download and install eclipse, please follow the tutorial in the video step by step, and be sure to do it more. Regarding the selection of Servlet/Jsp videos, the industry recognizes Ma Soldier’s videos, so we recommend them to everyone. Of course, LZ himself has not watched his videos, so it’s hard to say too absolutely. If you have a better choice, you can stick to your own and don’t be interfered by LZ.
Originally, LZ also planned to publish a teaching video, but due to time issues, he decided to give up. But if you encounter problems while watching the video, you are welcome to come to LZ’s communication group to ask questions, or go to Douyu to watch LZ’s live broadcast and ask your questions. The live broadcast address and group number are on the left side of LZ’s personal blog.
The last step is to learn how to use a database. MySQL is a good entry choice, and the mainstream relational database in the Java field is MySQL. This part is usually exposed when you learn Servlet/Jsp. The JDBC part is the database-related part. You must not only learn to use JDBC to operate the database, but also learn to use database client tools, such as navicat and sqlyog. Just choose one of the two.
3. Development Framework
After you learn the above content, you are not enough to participate in the work at this time, you still need to continue to study. In order to improve development efficiency, companies will use some Java Web frameworks, so you also need to learn some development frameworks.
Currently, the more mainstream ones are SSM frameworks, namely spring, springmvc, and mybatis. You need to learn how to build these three frameworks and use them to make a simple add, delete, modify, and query Web project. You don’t have to understand what those configurations mean and why you need to do them. You can learn these later. But you must be able to quickly use these three to build a Web framework. You can record your first construction process. Trust me, you will definitely use it.
I would also like to mention that in the process of building SSM, you may often come into contact with a tool called maven. 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. As your work experience increases, you will gradually come into contact with some high-end usage.
I would like to recommend an address for you to learn the SSM framework. There is a video in it. You can watch it. The address is.
4. Find a job
After you finish studying the development framework, you should find a job. Those who are in school will find internships, and those who have graduated will find full-time jobs. At the same time, you should not stop studying while looking for a job. To be precise, you should not stop studying in the future.
You have just learned how to use the above content. You can gradually try to learn more. The Internet is your most important teacher.
Part 2: For students who have been working for less than one year.
Congratulations, at this time, you already have a Java job. This stage is when you grow extremely fast, and you may often work overtime.
But working overtime does not mean you can relax. Always remember what LZ said, from the moment you enter the industry, you must keep learning. During this year, you need to at least read the book "Java Programming Thoughts". The content of this book is to help you have a deeper understanding of Java. It is an upgraded version of Java basics.
This book is very thick. It took LZ three full months to read this book. At normal speed, I should be able to finish it in about half a year. LZ doesn’t have too high requirements here, as long as you finish reading this book within a year. Of course, what LZ said after reading is to fully absorb it, rather than reading it once, so you may read some content more than once.
In short, the core learning idea at this stage is to practice at work and have a deeper understanding of the basics of Java.
Part Three: For students who have been working for 1 to 2 years.
Students during this period have already gained a deeper 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 comes. At that time, LZ was reading the book "Dahua Design Patterns" and wrote a complete version of the design pattern blog. Therefore, LZ requires everyone to start blogging when you have been working for one year at most, and design pattern is the beginning of your blog.
Please remember that what LZ puts forward are basically the minimum requirements, so don’t have any laxity. Otherwise, after five years, you should not envy others whose salary is higher than yours, nor should you envy others who have entered the industry. a certain company.
This year, you must know design patterns well, and "Dahua Design Patterns" can be your starting point. Of course, you can also go to LZ’s personal blog to learn, the address is.
In addition, design patterns are not your only task this year. You also need to read some books on code writing optimization. For example, "Refactoring to Improve the Design of Existing Code" and "Effective Java".
In short, at this stage, your core task is to improve your coding capabilities and be able to write elegant code.
Part 4: For students who have been working for 2 to 3 years
Some students feel that they are already very awesome at this time, so they can’t help but Start to relax slowly. 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 LZ's eyes, this book is more important than "Java Programming Thoughts".
The content of this book is to help you comprehensively understand the Java virtual machine. At this stage, you must already know that Java runs on the JVM. So, when it comes to the JVM, you don't have any reason not to know about it. LZ has written about the JVM series before. You can check it out. The address is.
In addition, in the past two 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, LZ recommends the book "Java Concurrent Programming in Practice". As long as you read this book, you will basically understand the concurrency part.
At the same time, there is much more you have to do at this stage. At this time, you should have a deeper understanding of the framework you are using, and 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 prerequisite for understanding these source codes 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, why is this code written like this? Why define this interface, it seems redundant?
It can also be seen from this that these learning processes are interlocking. If you fail at any stage, then you really can’t keep up, or you can say that you are taking one step at a time. slow. And LZ is very responsible to tell you that at this stage, LZ has learned far more than what is listed here. Therefore, don’t feel that you have learned a lot. What LZ said are only the minimum requirements. Not only LZ, many people have learned much more during this period than the scope of this article.
If you can’t keep up with the pace, after a few years, if the programmer market is not good, you may not only have a lower salary than others, and the company will not be as good as others, but you will not be able to find anyone at all. Work.
In short, at this stage, what you need to do is to have a deep understanding of the underlying Java and Java class libraries (for example, the book on concurrency is the content of the Java concurrent package java.concurrent), that is, the related content of the JVM and JDK. And you need to have a deeper understanding of the framework you are using. It is recommended to read the source code or read the official documentation.
In addition, there is another way of learning that should also be used at the 2-year stage, that is, making wheels.
Don’t listen to the argument of “don’t reinvent the wheel”. It is made up by companies to save time and cost. Reinventing the wheel may not be of value to others, because the wheel you create may have already existed, and generally the wheel you create is not as good as the existing one. But having no value to others doesn’t mean it has no value to yourself.
The process of making a wheel is a process from scratch. This process can give you a systematic exercise. It not only tests your coding ability, but also your framework design ability. You need to make your wheel scalable and robust enough.
And in the process of making wheels, you will encounter various problems, and these problems are often opportunities for you to learn. When you build the wheel, you will definitely find that you have actually gained a lot.
Therefore, at this stage, in addition to understanding the JVM, JDK and framework source code mentioned above, you are also asked to build any wheel you can imagine based on other people's excellent source code.
Part 5: Students who have been working for 3 to 4 years
It is already difficult for students at this stage to improve, and learning at this stage is often difficult. Relatively diverse.
Because in the past three years, you must have been more or less exposed to other technologies, such as big data, distributed caching, distributed messaging services, distributed computing, soft load balancing, etc. . If you are proficient in any of these technologies, it will be a huge advantage for you in future interviews, so if you are interested in a certain technology, you can study it in depth at this time. The technology doesn’t have to be what you use in your work, but it must be relevant.
And when researching a new technology, be careful not to act haphazardly. Some students went to work on big data today, working on things like Hadoop and Hbase. After a while, I felt it was boring and started to study distributed cache, such as Redis. Then after a while, I started studying distributed computing again, such as MapReduce or Storm.
In the end, I felt like I knew everything, and I boasted on my resume that I knew about big data, distributed caching, and distributed computing, but in fact, any of them were just superficial. When the time comes, the interviewer will figure it out with just a casual question.
Be sure to remember that as a programmer, you may be exposed to many technologies in daily life, but if you want to make a technology your advantage, then you must have a better understanding of this technology. Most people can do it.
Therefore, at this stage, you can no longer simply study the content of the previous three years. Although the previous study still needs to be continued if it is not in-depth enough, at this time you should consider more about building your The advantages can also be called differences.
I believe that difference is not difficult to understand, it is to make yourself different. Your study in the first three years is enough for you to become a basically qualified Java developer, but you are still far away from becoming an excellent Java developer.
The so-called excellence means being able to do what others cannot. What you have learned in the first three years can be mastered by many who have been doing Java development for several years. So in order to differentiate yourself, you need to find another way and find a direction to study in depth, hoping 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, and an expert in the field of concurrency. etc.
In addition, in addition to establishing your difference, you also need to make up for your basic deficiencies. Until now, LZ has not mentioned basic knowledge. The reason is that the basics are very boring. Learning it too early is not only easy to make you confused, but also easy to cause psychological shadow when you are confused, so that you don't want to study these basics in the future. But the basics are what you must master when you delve into some fields. For example, if you study distributed computing, if you don’t understand algorithms, why don’t you just play with it? For example, if you want to do distributed caching, but you don’t understand the memory of the computer system, how can you do caching?
If your foundation is already very strong, then congratulations, I believe you have fully realized the help of these foundations in your previous work. But LZ believes that most people's foundation is very weak. Even those who have graduated from majors, many people dare not say how strong their original basic knowledge is, such as algorithms, computer system principles, and compilation principles.
But everyone’s time is limited, and each of these basic books can’t be read for more than a year and a half, so you still have to make a choice. Although art is not a burden, the problem is that art comes with a price, which requires you to devote time and energy, and LZ personally prefers to obtain the maximum gain at the same cost.
First of all, there are three basic books that LZ highly recommends, namely "In-depth Understanding of Computer Systems", "Tcp/IP Detailed Explanation Volume 1, 2, and 3", and "Data Structure and Algorithm". Among them, there are three books on TCP/IP, but we regard these three books as one big book here.
These three books are suitable for three types 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 Detailed Explanation Volume 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. The book "Data Structures and Algorithms" is more suitable for people doing computing research, such as the distributed computing mentioned just now.
In addition, LZ would like 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 back-end development, the book "Tcp/IP Detailed Explanation Volume 1, 2, and 3" will also be of great use to you. This is just a ranking of priorities. If you have enough time, it would be best if you could read all three books intensively. But if time is limited, then pick the book that will help you the most and read it first.
Theoretically speaking, if you can intensively read one of these three books this year, you will be very powerful. With the foundation and previous work experience, you can explore your own field.
During this year, you must plan your own field, establish your own advantages, and create differences. If you are not clear enough about your field, as you work longer and longer, you will be exposed to more and more technologies. At this time, you can easily be drowned in the ocean of technology. It seems that the more technologies you are exposed to, the more technology you are exposed to. The more you use it, the more you will use it, but you have no advantage.
Some students may ask, "LZ, I don't know what my field is? What should I do?"
For such people, LZ just wants to say, "Fuck "Hey, why don't you ask me? How about I learn for you?"
## Part 6: Students who have been working for 4 to 5 years After the previous year's experience, I believe you have already gained certain insights in the field you are studying. At this time, you should have encountered a technical bottleneck. Don’t rush to improve your skills at this time. 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 to create an open source project of your own to build your own products. This open source project is different from the previous wheel-making. At this time, you really have to try your best to create a wheel that is truly valuable to others. At this stage of technical learning, it is easy to encounter bottlenecks, and often after reaching a certain level, the effect of further deepening is really minimal, unless you are specialized in academic research. Unfortunately, most programmers cannot do this. That is what scientists do. Improvement of influence at this time is not only because it is easy to encounter technical bottlenecks, but also because influence can create more opportunities for you. Programmers are similar to celebrities to a certain extent. A good TV series or movie can create a group of stars. Programmers sometimes do the same. A good project can create 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. LZ dares to say that if you are the core developer of any project here, just having such a Title is already a huge advantage for you. What's more, it's not just that. Title is just a title after all. More importantly, when doing this kind of project, it must be very powerful for your experience.
If you want to participate in such a project, in addition to relying on luck, influence is also a very important means. For example, if you have a certain influence in the field of distributed computing, if there are any good projects related to distributed computing, the other party is likely to invite you. Even if someone doesn't invite you and 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 improve your influence and prepare for that day in your working career for the next ten years. If you can rely on your influence and the skills you have accumulated in the past to participate in a great project, then you will be successful in the next five years.
Of course, LZ is now fully prepared and has been a programmer for less than 4 and a half years. Therefore, regarding the 4 to 5 years part, LZ’s opinion is not necessarily correct. Even if it is correct, it is not There must be something for everyone. Therefore, I hope that everyone can use their own judgment to decide how to spend this year.
Conclusion
This article is basically over. The whole article is very long, but in fact it mainly talks about There are two parts of content, one is preparation for social recruitment interview, and the other is Java career learning.
Regarding these two parts, LZ has already given his own opinions, but again, when everyone absorbs knowledge, they must have the ability to extract the essence and remove the dross. Some of what LZ said may be right, some may be wrong, some may be suitable for you, and some may not be suitable for you. You have to be able to judge for yourself.
In fact, it is the same in your life and work. There are all kinds of people around you. Some people you like, some you hate. But in fact, people you like also have shortcomings, and people you hate also have advantages. You have to learn to learn the good qualities from people you hate, and never beat them to death, as this will only cost you a lot of opportunities to learn and grow.
Okay, having said so much, let’s stop here. I hope this article can help you as a programmer or as a programmer who is about to become a programmer.
#Attention, students who are learning Java! ! ! If you encounter any problems during the learning process or want to obtain learning resources, you are welcome to join the Java learning exchange group: 159610322 Let’s learn Java together!
The above is the detailed content of Suggestions for Java programmers at various stages of learning. For more information, please follow other related articles on the PHP Chinese website!