Preface:

I would like to introduce my new colleague first. It is said that he is a die-hard fan of American basketball player James, and many colleagues in the company call him James. He is an architect with 8 years of development experience and worked in AL before “, had a kind of inexplicable feeling of intimacy, immediately looked for a new colleague to chat. We talked for a long time and a lot in our spare time. After all, I have been in AL before, so I feel there are some topics to talk about.

During the chat, we also talked about why he left AL and his bitter journey to become an architect. After the chat, we found that the reason for leaving AL was very similar to his path as an architect and mine. All are the bitter course that experience does not know how many days and nights sharpen come out. Now back in the past, looking at the present of their own, feeling before the bitterness is worth it.

Well, I will not tell you so much here, today’s article is mainly the two of us in the process of chatting and discussing, there are a lot of common points in the process of becoming an architect, since our experience has a resonance, THEN I believe it is not different from yours, so, This article is intended as a reference to the knowledge and experience you should have on your way to becoming an architect. By the end of this article, you will have a clear goal and the right direction on your way to becoming an architect.

Daily problems plaguing architects

  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?

  5. Don’t know what to do with the latest technology?

  6. Have you been at a company for a long time and been comfortable, but hit a brick wall in an interview?

  7. Do you feel that your current technical foundation is very solid, but you just can’t improve your skills?

  8. Think you are very good B, can handle the general needs, but the knowledge points are not systematic, it is difficult to continue to break through in the technical field?

  9. Now you think your skills are ok, but you just can’t get a raise?

Above these points, as developers of you, have encountered? Have you ever thought about yourself? Have you solved these problems carefully? Have you thought about it deeply? Although these questions are very simple, but for us in the development of the road, is very important to help.

1: Should architects 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.

2: 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.

3: 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.

4: 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: Don’t know how to start in the face of the current popular technology?

First, learn purposefully based on the skills you are using in your current job.

Second, according to the recruitment requirements of major Internet companies, selective planning and learning;

Third, you can refer to the knowledge points that Java architects have at the end of the article, from source code to distributed to microservices to concurrency, etc., which is sorted out by a group of experienced teachers over ten years.

6: You’ve been at a company for a long time and you’re comfortable, but when you change jobs, you hit a brick wall?

Many programmers are in this situation because they are always in their comfort zone, writing familiar business code every day, doing more CRUD work, not technically challenging, and feel that life is ok. However, once out of this comfort zone, it will be difficult to adapt to, at a loss, because there are too many new technologies outside, I can not keep up with the pace of technology, at this time, I need to sort out my current lack of points, targeted improvement.

7: Feel that the current technical foundation is very solid, but their own technology can not improve?

This kind of technology is solid and more basic, such as Javase and JavaEE, which cannot adapt to the technology system of first-tier Internet companies, such as distributed and micro-service. Technology can not be improved because they have not been in contact with the relevant projects, the previous kind of basic knowledge online is also a large, but the more you go up the less information, the less good information, and the more you go up if there is no guide more difficult.

8: Think you are very good B, can handle the general needs, but the knowledge points are not systematic, it is difficult to continue to break through in the technical field?

The general requirement here should be CRUD operation in single machine environment. The project is not too difficult, but the business analysis is complicated at most. The technology uses some mainstream technology, such as Dubbo, which only stays in the API application level without understanding its principle. And other branches of technology related to Dubbo are not well developed, so it feels hard to break through.

9: Now you think your skills are ok, but your salary can’t go up?

You need to know what salary is determined by your value, and your value depends on your technical ability. If your technical ability stays at THE CRUD level, you will definitely fail. What you need to do is to break through the technical bottleneck. (I believe this is the first thing most developers think about).

After summarizing the above questions, do you understand a little bit? Does that make any sense? No? So you keep going.

A programmer should have several stages

  • The first phase —- three years

I think three years is the first threshold for programmers, and that phase will weed out a bunch of people who are not good enough to write code. At this stage, we go out of the campus, into the society, become a programmer, formally from the book content to the real enterprise development. We know how to work together as a team, how to use project management tools, how to control project version, how to test and run the code online and so on. We have accumulated certain development experience and gained a certain in-depth understanding of the code, which is a relatively pure Coder stage.

  • The second stage —- five years

Five years is the second threshold to distinguish programmers. Some people will study nothing in their spare time except to finish their work in three years. These people will always be Coder, and the older ones will be replaced by younger ones. Some people in three years, in addition to writing code, also keen to study all kinds of technical implementation details, see N many good books, writing some blog, share technology in the making, these people in five years must have the ability to acquire the technically and clear the development direction of the future, from a Coder gradually towards a systems analyst or an architect, Be an integral part of the project team.

  • The third stage —- ten years

Ten years is another threshold, and that’s when you switch careers or continue to be a programmer. If you had stuck to the idea and worked hard in the first few years, at this point in the decade, someone would have grown up to be a programmer with deep knowledge of the industry, deep knowledge of the technology, and the ability to analyze a product from scratch. It’s an honor to be a CTO, a technical specialist, a chief architect, and other key positions in the company, and your boss will not take advantage of you financially.

I think there are three things you should keep thinking about as you get older and learn more about life:

  • Am I cut out to be a programmer?

  • Should I be a programmer for the rest of my life?

  • What kind of attitude do I have toward programming? Is it enough or do I keep studying?

    Finally, define your own career plan, take responsibility for your own plan and work towards it.

Knowledge that an architect has

A: Common patterns and tools

Learning about Java technology architecture, design patterns, and popular frameworks and components is essential:

  • Common design patterns, necessary for coding

  • Spring5, the latest framework essential for applications

  • MyBatis, play database essential components

Two: engineering and tools

To do a good job, you must first sharpen its tools, whether it is white, or senior developers, playing with Java technology system, choosing good tools, improving development efficiency and team collaboration efficiency, is essential:

  • Maven, project management

  • Jenkins, continuous integration

  • Sonar, code quality management

  • Git, version management

Three: Distributed architecture

High concurrency, high availability, large amounts of data, and no distributed architecture knowledge is possible:

  • Principles of Distributed Architecture

  • Distributed Architecture Strategy

  • Distributed middleware

  • Distributed Architecture Practice

Four: microservice architecture

Business is becoming more and more complex, and services are layered. Micro-service architecture is the only way to upgrade architecture. What are the technologies related to Micro-service in Java technology system?

  • Microservices Framework

  • Spring Cloud

  • Docker and virtualization

  • Microservices Architecture

Five: performance optimization

Any PPT architect who is detached from the details is a bully. He can operate from the top and solve first-line performance problems from the bottom. Java technology system needs to understand:

  • Performance index system

  • The JVM tuning

  • Web tuning

  • The DB tuning

Six: basic knowledge

From architecture design, to application layer tuning, and then in-depth understanding of the underlying principles, solid Java basic skills can make me become a sweeping monk:

  • The memory model

  • Concurrent mode

  • Threading model

  • The lock detail

If you want to learn the above route, I would like to recommend an architecture learning exchange group. Exchange learning group number: 478030634 inside will share some senior architects recorded video video: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization, distributed architecture and so on these become architects necessary knowledge system. I can also get free learning resources, which I benefit a lot from now

The article is a little long, we think the author’s summary is ok, you can click on the following TWO-DIMENSIONAL code to pay attention to. The “Java Rotten Pigskin” public account is not only about Java technology knowledge, but also about interviews and a lot of architecture. Everyone pay attention to it! Pay attention to rotten pig skin, you will learn more…………..