How Java programmers become good architects

What is an architecture and what is an architect? This seems to be an eternal question when talking about architecture.

From the bottom of my heart, I really don't want to answer what the architecture needs to do and what the architect should be responsible for. Because from the actual situation, the responsibilities of the architect will be different at different system levels and under different requirements; from different technical perspectives, the architect is also a chameleon - a master of technology at one time, and a technical plan at the same time. The person who is the commander of the technical team for a time.

So, how to answer the question "what is architecture and what is architect"? This may require figuring out another question first - how does a programmer get on the road of an architect? I have learned a lot of practical cases from many friends. Programmers embark on the road of architects. The most common reason for summing up is that he wrote good code earlier.

The definition of architect?

Personally, I think architects need to have the following characteristics:

Breadth of knowledge: Need to know why mainstream technologies were born and what problems can they solve? If the same business is implemented with different technologies, what are the advantages and disadvantages? For example: the popular ORM framework Mybatis and hibernate, what are the advantages and disadvantages between them? Having a clear understanding will allow you to make the right decisions when it comes to technical styling.

Abstraction capability: abstract business and technology. Business abstraction is to establish the perfect entity class and the connection between them after analyzing the requirements. Technical abstraction is a layering of the overall architecture and the interaction between layers. This is crucial, if the technical abstraction capability is insufficient, it will lead to an inflexible architecture of the entire system, which is difficult to maintain and expand.

Depth of knowledge: At least an expert in a certain field, such as a message queue, activeMQ is familiar with its source code and knows its implementation.

Excellent learning ability: learn new technologies and cutting-edge technologies and use them to solve business problems at work.

So how do you go about it? I think you can start with the following steps:

1: A solid JAVA foundation, the content introduced on Think in java can be understood, and congratulations on becoming a programmer for this step.

2: Proficient in using mainstream frameworks, such as: mybatis, spring, etc.

3: I have studied at least one source of web framework, such as spring mvc, struts, etc.

4: Have architected or participated in the design of excessively concurrent systems, and know how to deal with emergencies.

5: For the business in which you are located, you can put forward optimization suggestions or predict its risk points according to your own knowledge dimension.

In fact, whether or not he can become an architect has a lot to do with opportunities. For example, a programmer has done all the above, but the company has not given him the opportunity to do it, a real opportunity for architecture. Because the previous architect didn't have a chance if he didn't leave, this is the reality!

Such as

Programmers who have worked for one to five years are unable to start with the current technology and feel very confused. You can join the group 744677563. There are Ali Java senior Daniel live broadcasting to explain knowledge points and share knowledge. The content of the course is all the teachers have many years of work experience Sort out and summarize, and lead everyone to establish their own technical system and technical cognition comprehensively and scientifically!

Many people don't know how to learn the knowledge required by architects. Here I share a learning route for you:

Guess you like