Generally speaking, the top of the tech team pyramid is usually the most skilled architect (or TL). So architects probably make up less than 20 percent of the code farmers on average. Architects can also be classified as elementary, intermediate, and senior, and there are even fewer truly high-level architects in the world.

! [](https://upload-images.jianshu.io/upload_images/24563956-1bd60fdd39d5c575.jpg?imageMogr2/auto-orient/strip%7CimageView 2/2/w/1240)

What is an architect?

An architect is a role. Defining a role is actually defining a responsibility. The role of an architect is to identify and define a problem, create, select, or adjust an architecture to find the best solution to solve the problem.

In fact, this is the general pattern of what architects do: define the problem, define the architecture, propose the solution, and implement the result. Of these four steps, the more important, abstract, and difficult the first steps are, the more they reflect the architect’s skill.

Architects often say, what problem does my architecture solve? The problem here is not a general problem, but specifically refers to the contradiction in Marxist philosophy. The problem is the contradiction of things. Where there is no contradiction resolved, there is a problem. Everything exists as a unity of contradictions, and contradictions are the source and power of the development of things. The problems that an architect has to define and solve are contradictions in a particular domain, and when they are resolved, progress is made and gains are made.

! [](https://upload-images.jianshu.io/upload_images/24563956-71b50d97e791dfd9.png? imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

There is a sadness called the sadness of the coder. In real life, 80% of programmers work for many years, but still can not be an architect, hard working programmers, do you have the following feelings?

① My job is to complete the tasks assigned to me by the leader on time. As for how the code is written, I know there is room for improvement, but I have no time to improve. The key is that the leader does not give me time.

There are so many things I want to learn. Swoft is used by so many people. I heard that Swoole is popular recently.

③ ALTHOUGH I have been working for 5 years, I have become more proficient in Ctrl+ C and Ctrl+V in addition to Coding and writing business codes, but my Coding level has not improved. I am still an ordinary programmer, but some people have become an architect.

(4) I have been working for several years, and I want to change my job to a higher salary. The interviewer asked me about data structure, garbage collection, concurrent architecture, coroutine programming and so on. I have read it, but I don’t use it.

If you have the above questions, then you absolutely entered the learning error zone to take a detour; If we want to become architects, we face three major problems ourselves:

A. Identify: Who and where AM I?

B. How to be a Good Architect: What do I do?

C. How to build an architect’s body of knowledge: What should I do?

If you want to become an architect, you might want to take a look at the roadmap I’ve shared for PHP developers 1-5 years or younger, which includes PHP high concurrency, distributed, Swoole coroutine, microservices, framework kernels, high performance, and more. These are also commonly used technologies by medium and large Internet enterprises at present, so let’s take a look in detail.

! [](https://upload-images.jianshu.io/upload_images/24563956-d2a670f0f2728555.png? imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

A: common patterns and frameworks

Learn PHP technical architecture, design patterns, and popular frameworks

Common design patterns, necessary for coding

Laravel, ThinkPHP development essential to the latest framework

YII, Symfony4.1 core source code analysis

! [](https://upload-images.jianshu.io/upload_images/24563956-3c26da332149b1e7.jpg?imageMogr2/auto-orient/strip%7CimageView 2/2/w/1240)

Two: micro-service architecture and performance optimization

As the business system becomes more and more complex, coroutine programming, PHP concurrent programming and MySQL low-level optimization are the only way to upgrade the architecture. What are the technologies related to PHP performance optimization and microservices?

Tars distributed RPC framework

Swoft Microservices framework

Server performance optimization

Algorithms and data structures

! [](https://upload-images.jianshu.io/upload_images/24563956-122bfc8f2c3bcc20.jpg?imageMogr2/auto-orient/strip%7CimageView 2/2/w/1240)

Three: engineering and distributed architecture

Any PPT architect who deviates from the details is a rogue, who can operate from the top and solve front-line development problems from the bottom. PHP architects need in-depth engineering, high concurrency, high availability, and massive data. It is definitely impossible to play without distributed architecture knowledge:

Linux operation /shell scripting

Docker container/automated deployment

Distributed cache/messaging middleware

Distributed architecture principles/high concurrency shunting

! [](https://upload-images.jianshu.io/upload_images/24563956-55657a5213343a91.jpg?imageMogr2/auto-orient/strip%7CimageView 2/2/w/1240)

Those who can master the above technologies must have the ability to work independently in technology and know their future development direction. They will gradually become CTO or architect from a Coder and become an indispensable person in the project team.

! [](https://upload-images.jianshu.io/upload_images/24563956-4fef172b5e86b00c.jpg?imageMogr2/auto-orient/strip%7CimageView 2/2/w/1240)

So how to learn the above topic content?

If you want to start out as a programming language, it is recommended that you learn C first to build a foundation. C language is a general-purpose computer programming language and a process-oriented language. Its grammatical structure is rigorous and widely used. And once you’ve studied C thoroughly, it’s much easier to learn other languages.

If you also want to become a programmer, want to quickly master programming, here is a C /C++ learning penguin circle for you.

There are senior professional software development engineers, online answer all your doubts ~C language introduction “So easy”

Materials include: introduction to programming, game programming, course design, hacking, etc.