Share how I grew up as an Alibaba Java architect in 7 years (with a learning roadmap)

Guide:

Should architects write code?

Why are other people's systems always so bad?

What is the most difficult threshold to become an architect?

How to study more efficiently?

1. Should architects write code?

Qualified programmers will do well for clearly assigned tasks, but in most cases the word "architecture" means that the architect does not go into too much detail, there is always some distance between the architecture diagram and the code implementation, you There's no guarantee that everyone will understand your design correctly, or that programmers will come up with elegant enough solutions right away when they encounter obstacles while writing code.

In my opinion, the architect who writes the code is more like doing the work of logistics: finding possible problems in the code at the first time, warning others, or giving others suggestions for improvement, when necessary Or demonstrate the correct posture to others.

In most cases, as an architect, I do not need to undertake the development of "core modules". After all, the time I can allocate is too scattered, and the efficiency is difficult to guarantee. Many people do a lot better than me when they are focused. I just need to keep the big picture and engage moderately.

In general, architects and programmers are a bit like product managers and users in some ways. Most programmers don't tell you what they want, where they need optimization, or even know it themselves. One of the shortcuts to making a good product is to do the same thing with users.

2. Why other people's systems are always so bad

Many programmers have a strong ability to solve problems. They say that if they want to solve a problem, they can write hundreds of lines of code in the afternoon to realize the function. But there is a feeling that something is missing from what is made. Most programs can achieve functions, but if you consider "time" as a dimension of consideration, you will realize that a qualified project needs to consider more things: more general usage, easy-to-understand documentation, simple And easily extensible design, and so on.

A lot of companies should have legacy systems that are huge, heavy, unusable, and almost impossible to maintain, and everyone is complaining about and trying to replace those legacy systems every day. But after a period of time, you will find that the new people around you start to complain about the system that replaced the legacy system at that time.

"Most of the systems were very good at the beginning, the functions were sufficient at the time, and the scalability seemed to be OK, but these systems were developed after the departure of the people."

3. What is the most difficult threshold to become an architect?

Many people who call themselves architects are eloquent when they tell you about an architecture. All kinds of technical terms come out of his mouth like a cross talk. The three sentences are inseparable from high concurrency and big data, but if you ask a little, you will be It is found that many basic concepts are missing. For example, the person who claims to be proficient in high concurrency can't tell where the bottleneck of his so-called high concurrency system is, and the person who claims to be proficient in architecture design can't understand how his system can ensure high availability. The system actually has less than 1 million pieces of data, etc.

Although architects sound very high, they are still engineers, not scientists, or charlatans. No matter how much you learn, you also need to practice. Designing an architecture scheme is more about doing some abstractions and trade-offs: abstracting complex requirements into simple models, planning how to build a system in terms of functions, performance, availability, R&D costs, etc. These contents require more practical exercises .

4. How to study more efficiently?

Most people have limited time for learning every day, and how to improve learning efficiency at this stage has become the focus of the solution.

Talking about your experience in improving learning efficiency is actually very simple: systematic learning.

After repeating the painful learning-combing process several times, it is often more effective to read some independent articles or materials, because the corresponding knowledge can be found in the system, and sometimes even a page of a book only needs to read a sentence If you break the window paper, you can master new knowledge.

Like many people, when I first graduated, I felt that as a programmer, as long as I worked hard and added a little talent, I could get some results.

After working for a period of time, my understanding of myself and others became clearer and clearer, and I gradually discovered that the gap between programmers may be bigger than the gap between humans and monkeys. Accepting this fact made me depressed for a long time.

After a while, I found myself able to objectively evaluate my abilities and realized that distance is not so important, as long as I find a way to run faster, it is enough.

5. The Learning Route to Become an Architect Quickly

The following five knowledge systems are the experiences I have gathered from many years of practice, and they are all the most mainstream technologies at present. Friends who want to learn these technologies can join the group: 697579751. The group will share these technical knowledge points for everyone to learn and download for free

Distributed Learning Route

Microservice learning route

Performance Optimization Learning Route

Classical Design Patterns and Source Code Analysis

Essential tools for development

hands-on projects

concurrent programming

The above five knowledge systems are the experience that I have summarized for many years in the industry, and they are the most mainstream technologies at present. Friends who want to learn these technologies can follow me and reply to "Architecture" to get the following information:

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324939518&siteId=291194637