Preface: I spent seven years, step by step to the present, halfway also have learned about other technologies, but also want to transfer other languages, but finally insisted on the Java this road, I hope that my experience can help to later people, if you have the help, you can point like attention.
Guide:
1. The architect should not write code
2, why the system is always so bad
3. What is the most difficult threshold for becoming an architect?
4, how to learn more efficiently?
1. The architect should not write code
Qualified programmers can do a good job of clearly assigned tasks, but in most cases the word "architecture" means that the architect does not involve too much detail, there is always some distance between the frame composition and the code implementation, and you cannot guarantee that everyone will understand your design correctly. Or if a programmer encounters an obstacle when writing code, it immediately comes up with a solution that is elegant enough.
In my opinion, the architect who writes the code is more likely to be doing logistical work: finding possible problems at the first time in the code, alerting others, or giving advice to others to improve, or giving other people the right posture when necessary.
Most of the time, I do not need to embrace the "core module" development of this kind of work as an architect, after all, I can be deployed too fragmented, the efficiency is difficult to guarantee, many people in the case of focus than I do a lot better, I just need to keep the bigger picture need to participate moderately.
In general, architects and programmers are somewhat like product managers and users in some ways, and most programmers don't take the initiative to tell you what they want, where they need to be optimized, or even what they don't know. One of the shortcuts to making a good product is to do the same thing with the user.
2. Why people's systems are always so bad
Many programmers have a strong ability to solve problems, saying that to solve a problem, the afternoon will be able to write hundreds of lines of code to implement the function. But the things that are made have a feeling of less thought. Most programs can implement functionality, but if you take "time" as a dimension of consideration, you will realize that a qualifying project needs to consider more things: a more generic way to use it, a document that is easy to understand, a simple, easy-to-extend design, and so on.
Many companies should have legacy systems that are big, bulky, hard to use, almost impossible to maintain, that everyone complains about these systems, and that they are looking for ways to replace those legacy systems every day. But after a while, you will find that the new people around you have started to spit out the system that replaced the legacy system.
"Most of the systems were good at the time, the functionality was adequate, and the extensibility seemed to be possible, but these systems were all bad after the developers left." ”
3. What are the most difficult barriers to becoming an architect?
A lot of people call themselves architects to talk to you about an architecture, and all kinds of technical nouns are like crosstalk from his mouth, the three words do not leave high concurrency big data, but a little questioning, you will find a lot of basic concepts missing, For example, people claiming to be proficient in high concurrency say they don't know where the bottleneck of his so-called high-concurrency system is, and people claiming to be proficient in architecture say they don't understand how his system can be highly available, and that systems that claim to be super-large data actually have less than 1 million data, and so on.
The architect, though sounding tall, is still essentially an engineer, not a scientist, or a charlatan. Learn more, also need to practice landing. The design architecture scenario is more about making abstractions and tradeoffs: abstracting complex requirements into simple models, planning how to build a system from functions, performance, usability, research and development costs, and so on, which requires more practical practice.
4. How to learn more efficiently?
Most people have limited time to study each day, and how to improve learning efficiency at this stage is the key to solve.
It is very simple to say that you have improved your learning efficiency: systematic learning.
After repeating a few painful learning-carding process, then go to see some independent articles or materials tend to be more effective, because in the system to find the corresponding knowledge, and even sometimes a book a page only need to see a word, dissected that layer of window paper, you can master new knowledge.
Like many people, just graduated I think as a programmer, as long as the effort, coupled with a little talent can get some results.
After working for a period of time, to oneself and other people's understanding is more and more clear, gradually found that the gap between the programmer is perhaps more than the gap between the people and monkeys, accept the fact that I have been depressed for a long time.
After a while, found that they have been able to objectively evaluate their ability, but also realized that the distance is not so important, as long as the way to run faster, is enough.
5. Quickly become the architect's learning route
The following five knowledge system is the experience that I have summed up for many years, is the most mainstream technology at present. Friends who want to learn these techniques can add a group: 650385180. The group will share these technical knowledge points for everyone to learn to download for free. We hope to help you to build your own technical system and technical knowledge in a comprehensive and scientific way!
Distributed Learning Routes
Micro-Service Learning route
Performance Optimization Learning route
Classic design pattern and source code analysis
Developing the necessary tools
Hands-on projects
Summarize:
The above is I summed up the knowledge of the course of the year, halfway also have learned about other technologies, but finally insisted on the Java this road, want to learn to ascend, you can add the above group, I hope these knowledge points can help in the development of the industry friends and partners, in the Forum blog and other places less time to find information, Put the limited time, really put in learning and forward.
It took me 7 years to grow into Ali Java architect, what about you? (with Learning route map)