Preface: The following is my knowledge route summarized in these years. During the process, I also learned about other technologies and thought about switching to other languages, but FINALLY I stuck to the Path of Java. I hope my experience can help people in the future.

Takeaway:

  1. Should architects write code
  2. Why do other people’s systems always suck
  3. What is the most difficult threshold for becoming an architect?
  4. How to study more efficiently?

Should an architect write code

Qualified programmers do a great job with clearly assigned tasks, but in most cases the word “architecture” implies that the architect doesn’t go into too much detail, there is always some distance between the architecture diagram and the code implementation, and you can’t guarantee that everyone will understand your design correctly. Or a programmer who hits a snag in writing code and immediately comes up with an elegant enough solution.

In my opinion, an architect who writes code is more of a logistics job: spotting potential problems in the code first, alerting others, or suggesting improvements, or demonstrating proper posture when necessary.

Most of the time as an architect I don’t need to take on “core module” development because my time is too fragmented to be productive. There are many people who do a much better job than I do when they are focused, and I just need to keep the big picture and participate in moderation.

In general, architects and programmers are in some ways like product managers and users. Most programmers don’t tell you what they want, where they need to optimize, or even know it themselves. One of the easiest ways to make a great product is to do the same thing.

Why do other people’s systems always suck

Many programmers are so good at solving problems that they can write hundreds of lines of code in the afternoon to solve a problem. But there is a sense that something is missing. Most programs can do the job, but if you consider “time” as a dimension, you realize that a good project needs to consider much more: more common usage, easy-to-understand documentation, simple and easily extensible design, and so on.

Many companies have legacy systems that are huge, cumbersome, difficult to use, almost impossible to maintain, and everyone complains about them and tries to replace them every day. But after a while, you’ll find new people around you poking fun at the system that replaced legacy systems.

“Most of the systems were great at the time, functional at the time, and seemed to scale well, but they all went bad after the people who developed them left.”

What is the most difficult threshold to become an architect?

Many people claim to be the architect when people tell you an architecture of gushing, all kinds of technical terms like said crosstalk from his lips, three sentences from high concurrency large data, but slightly ask once, you will find a lot of the lack of basic concepts, such as claims to master the high concurrency people say not clear where he so-called high concurrent system bottlenecks, The person who claims to be proficient in architectural design can’t understand how his system can guarantee high availability, the system that claims to be very large data volume actually has less than 1 million pieces of data, etc.

Architects, while they may sound lofty, are still engineers at heart, not scientists, and not charlatans. No matter how much you learn, you also need to practice. Designing architectural solutions is more about abstractions and trade-offs: abstracting complex requirements into simple models, planning how to build a system in terms of functionality, performance, availability, r&d costs, and so on, requires more practice.

How to study more efficiently?

Most people have limited time to study every day. At this stage, how to improve learning efficiency becomes the focus to be solved.

Talk about your experience to improve learning efficiency, in fact, very simple: systematic learning.

After repeating the painful learning-sorting process for several times, it is often twice the result with half the effort to read some independent articles or materials, because corresponding knowledge can be found in the system, and sometimes only one sentence on a page of a book can be read and the layer of paper can be broken to master new knowledge.

Like many people, I came out of college with the feeling that I could achieve something as a programmer with a little hard work and talent.

After working for a period of time, MY understanding of myself and others became clearer and clearer. Gradually, I realized that the gap between programmers might be bigger than the gap between humans and monkeys. It made me depressed for a long time to accept this fact.

After a period of time, I found myself able to objectively evaluate my ability and realized that the distance was not so important, as long as I tried to run faster, it was enough.

5. Fast path to becoming an architect

The following five knowledge systems are based on my experience in the industry and are the most mainstream technologies. Friends who want to learn these techniques can add group: 854180697. The group will share these technical knowledge points for everyone to learn free download. I hope to help you establish your own technical system and technical cognition comprehensively and scientifically!

Distributed learning path

1. Source code analysis of common architecture


2. Distributed Architecture of the Internet



3. Team development projects



4. Micro services



5. Performance tuning topics



Conclusion:

The above is my summary of knowledge over the years, learned about other technologies, midway also have but in the end or Java walks down the road, want to learn to ascend, can add the group, hope these knowledge can help in the development of the industry friends and partners, in the place such as BBS blog spent less time to find information and the limited time, Really focus on learning and moving forward.