Maybe you’re doing CRUD work for a company today. Maybe you’re still building rockets for interviews and turning screws at work. Maybe you’re struggling for a long time but can’t find your way forward.

It took me more than one year from the beginning of learning Java to entering Ali. Many people think that I have made rapid progress. They ask me how to learn Java to make rapid progress.

Lay a good computer foundation

Computer fundamentals are the foundation of all programming languages, and you can’t really understand programming without understanding how computers work. Just as we learn the fundamentals of computing in our freshman year, if you want to really understand a language, you need to understand processes, threads, stacks, memory addressing, function calls…

These are not related to any one language, but are the foundation of all computer languages. Once you have a computer foundation, languages are really just differences in syntax and features, and switching between languages becomes easy. When I switched from C to Java, I looked at Java basic syntax for a day and started writing business code.

Self-study and training partners tend to be weak in the computer foundation, once learning more complex concepts will feel more difficult, this time you need to make up the basic knowledge of computer. Don’t say you don’t have time. If you don’t work hard today, you’ll regret it tomorrow.

Proficient in Java

Don’t say you’ve mastered Java until you’ve read the whole idea of Java programming twice. Knowing how to write code in Java means you’re getting started, but it’s just the beginning.

I’ve met a lot of people who have been working for three or five years, working on a lot of projects, and their Java level is the same as that of a fresh graduate who’s been working for a year. The root cause of most people’s confusion and inability to improve is that you only know the basics of Java and don’t see the infinite possibilities of Java and what you can do to improve.

Mastering Java requires you to learn every aspect of Java features. You don’t need to memorize every class and method, but you need to have a deep understanding of what each feature means. The SSM framework shields us from many of the technical details at work, and Java features may not be used very often. You need to take the initiative to learn, at least to read “Java programming ideas” more than two times, which reflection, generics, containers, annotations, concurrency need to focus on mastering.

Master the framework

Many people started their training with JavaEE and asked me how to learn JavaEE well. What I’m trying to say is that JavaEE is actually obsolete, and now learn SSM.

The first step to mastering a framework is learning to use it. Learning the basic usage of SSM will help you accomplish most development tasks, and mastering advanced usage will help you come up with better solutions. There are no shortcuts to learning frameworks, and practicing them over and over again on the job is the only way.

The second step in mastering the framework is to understand the principles. A lot of people fail to interview Ali on principle, only know one, not the other, ask a little deeper can not answer. To understand the principles is to understand the soul of the SSM framework, which is also the threshold for a programmer to move from manual labor to mental labor.

Do not understand the principle can only write code tools, understand the principle to become a real development engineer. Think more, summarize more, consult more, keep curious, ask a lot of what is, why, can explore the mystery of the framework.

The third step in mastering the framework is to design the framework. Try writing a simplified version of Spring that implements IOC functionality and you’ll find it damn hard. Generics, containers, reflection, annotations, design patterns, refactoring, etc. By designing the framework, you can gain a deep understanding of these Java features and the design principles of the framework. If you haven’t written a framework yet, try writing one. Think about it as you go along, and learn the secrets of a framework.

Master application technology

With the development of technology, the use of distributed, cache and so on is more and more extensive. Java programmers need to master more and more application technologies, such as Spring Boot, Spring Cloud, Dubbo, Redis, RabbitMQ, ZooKeeper… It is possible to write good stand-alone programs without using these techniques, but mastering these techniques is essential for large architectures. Learning these techniques is as simple as practicing.

As we all know, Ali basically uses its own technology, such as HSF, Diamond, Metaq… There is little use for these technologies that are popular in the industry. After staying in Ali for a long time, I felt disconnected from the society, so I set aside time every day to read the documents of these technologies, do my own projects to use these technologies, and master these uncommon technologies through day-to-day practice.

Understand the nature of programming

So much said before, in fact, is the art of programming. Relative to martial arts, are external moves. Master the moves to fight the enemy, but to go to the next level you need to master the mind. For programmers, the mind of programming is the Tao. I also worked in Ali for a long time before I realized the meaning of Tao.

Many of you know the saying “a program equals an algorithm plus a data structure.” Algorithms and data structures all sound fancy, and they’re something that most business students don’t have access to. Many people tell me that I am a CRUD boy in the company and don’t know how to improve my ability. Others complain that they don’t know how to do “interview makes rocket, work turns screw”.

In fact, in daily work, program = control + logic + data, that is, algorithms can be split into control plus logic. The best frameworks have separation of control, logic, and data, with good decoupling and flexibility, which is the way all frameworks evolve.

Data is easy to understand, that is, program configuration, static data, and runtime data;

Control is the main process of the program, which is generally realized at the bottom of the microkernel or framework. The control logic is generally not related to the specific business logic, but only defines the process.

Logic is concrete business logic that is invoked by a controlled process under certain constraints to produce data that meets expectations.

Try to understand frameworks, design frameworks, and optimize code in terms of control, logic, and data, and you’ll soon become a better programmer. If you find it difficult to improve your skills in a corporate setting, try teasing out the controls, logic, data, and refactoring.

Pay attention to the public number “program heart” (ID: Chengxuzhixin), every day to give you full of sincerity dry goods!