Understand how to upgrade from programmer to architect in 5 minutes.

For us programmers, the way to develop is either to take the management post, from development to project manager or even department manager; or to take the route of technical upgrade. However, in terms of technical routes, there are not a few programmers who cannot upgrade to an architect. On the one hand, in many senior development positions in companies, programmers cannot practice or even have access to the skills of architects. On the other hand, many programmers are not even aware of the skills and upgrade paths that architects need to master. So judging from the results, at least 50% of programmers stop at the level of "advanced development", which is very regrettable.

In the past few years, I have been working hard to upgrade from senior development to architect. Although I have not reached the position at present, I can do some work as an architect. In this article, I will combine my own experience with some other programmers to analyze the common reasons why many programmers cannot upgrade to architects, and show you the difficulties of upgrading from advanced development to architects, and build on this basis Give relevant upgrade suggestions.

1 Many programmers can't get access to the skills of architects in their daily work.
Most programmers can get access to advanced development techniques at work. Therefore, it is not difficult to upgrade from primary development to advanced development, but architects are different Up.

For example, in an outsourcing company, programmers mostly do repetitive work, and the business has changed, but the technology used is still adding, deleting, changing and checking. Or in some relatively small companies, the project team may not allow programmers to engage in architecture work for cost and quality monitoring considerations. Even in some Internet companies with relatively high technical content, from the perspective of business encapsulation, some high-concurrency and high-availability implementations are often encapsulated in methods. Programmers only implement functions by calling methods, which may not be explicit at the code level. To see the architectural skills.

Without access to relevant skills, the skills accumulated by watching videos and materials alone are often vulnerable in the interview process, and thus unable to apply for the post of architect, which in turn restricts the pace of programmer development to architect.

Sometimes when I interview advanced development, I will ask some in-depth questions about the architecture. For example, I ask what components are used in the communication between modules in your system. Many advanced developers are even confused, or in their In my eyes, it is more to call methods to achieve functions.

2 Many programmers tend to dig deep into the skills of the stand-alone version. Many programmers who have
passed the work may have nothing to do after the implemented functions pass the test. There are not a few such programmers. In small companies or outsourcing companies, This type of programmers tend to be more. When it comes to realization, their competitiveness is no different from that of programmers who come out of training courses, and perhaps they are more familiar with the business background.

Or some programmers are motivated, but they will dig deep into the technical details of the stand-alone version. For example, I asked what is the difference between the == and equals methods of the String object, or what are the practical points of tuning the JVM virtual machine. They will answer such answers Very in place. This is certainly better than programmers who can write code, but such skills can only be regarded as advanced development skills. If you over-pursue skills in this area when you level up, it's tantamount to seeking fish.

3 List the tasks that architects usually need to do. There is indeed a gap between them and advanced development. The
above is an objective and subjective aspect of the difficulties of architect upgrades. Before explaining the upgrade method, let’s take a look at what architects really want. What to do, in order to clarify the direction of efforts.

It is necessary to build a highly available framework. For example, the simplest way to build a database service is to consider how to ensure that the business is switched to another machine if a MySQL server goes down.

It is necessary to consider high concurrency factors. Starting from this point, architects at least need to use tools such as nginx, mycat, netty, redis, and consider building clusters that achieve load balancing.

The designed architecture needs to be deployed online, or even if the online action is done by operation and maintenance, but the architect must at least know how to deploy the nginx cluster and other components online, so the architect needs to understand the necessary linux commands and scripts. And learn about deployment tools like jenkins.

The above skills are not easy to use. If there are problems in the development, deployment and operation process, the architect is responsible for solving them. This requires architects not only to watch videos to know how to build a system, but also to have the ability to debug components such as netty, but also to know the operation of the cluster by looking at the logs, and if there is a problem with the cluster, they must also know how to quickly solve.

We must not only focus on technology, but also combine business and realize requirements such as grabbing red envelopes through architecture. This requires architects to know the pros and cons of various components so that they can select and design solutions.

Judging from the above requirements for architects, it is difficult to upgrade from advanced development to architect, and it makes sense.

Insert picture description here
You can add group 960994558 if you need to organize some information

4 Starting from operation and maintenance, familiar with the introductory skills of
the architect. It is difficult to upgrade to the architect, but it is not impossible. For advanced development, starting from the operation and maintenance, you may be familiar with the skills of the architect.

1 For example, start with ant scripts, jenkins scripts and linux shell scripts. You can know the deployment method of the system and be familiar with the necessary linux debugging skills.

2 By observing the configuration files of nginx or dubbo or zookeeper, understand the operation mode of each component, and use these to understand the configuration methods of load balancing and failover in the high concurrency and high availability system.

3 You can observe online related logs, understand the status of system deployment, and understand the relationship between many components from the architectural level.

The scripts and logs mentioned in the above steps should be visible in normal work as long as they are refreshed, or we can communicate with the operation and maintenance personnel for more information, and the knowledge of the above-mentioned component deployment and configuration is not difficult to know. In this process, skills such as "modifying configuration" and "building components" are not involved, after all, this is a familiar stage.

5 Solve more practical problems, understand the key configuration of the component, and understand the underlying code of the component. After the
programmer is familiar with the basic deployment and architecture skills, he can participate in solving some practical problems. In the company, the problems in the testing and online phases cannot be counted as small, and they will also contain many architecture-related problems, such as Kafka is not properly configured, resulting in message backlog, or dubbo timeout configuration is too long, resulting in call link timeout failure , Or if the redis timeout is too long, resulting in an OOM exception. There are many kinds of similar problems, only the unexpected, and there is no impossible.

At the beginning, programmers can follow the senior staff to check the problem, or after the problem is found, manually review it, learn the starting point of the architect to analyze and solve the problem, come and go, and be familiar with the configuration of the component, and understand the bottom layer of the component Code, be more familiar with the implementation scheme of configuring various framework components.

This stage is still a "trainee", but at least from a practical point of view, master the skills required by the architect. Compared with watching videos and accumulating the skills of architects behind closed doors, the relevant experience gained through the above steps comes from reality and is undoubtedly more valuable.

6 If necessary, you have to hop to obtain the practical opportunities of architects.
In fact, in small companies and even outsourcing companies, there are opportunities to understand and even practice the related skills of architects mentioned above. After the programmer has mastered the relevant skills of the architect through the above steps, if he has the opportunity to practice, he can quickly become a veritable architect.

This kind of practical opportunity is not difficult to find in large companies, but there may not be many in small companies, but it does not matter. At this time, if you go out to interview for the position of architect, it is basically not difficult. Let's look at the interview questions for architects.

1 How to deploy nginx (or other components) to achieve high availability?

2 In Redis cluster, how is disaster recovery generally done?

3 How to achieve message duplication in Kafka message queue? How to ensure that messages are not consumed repeatedly?

4 Or ask low-level questions, such as how the read-write index works in netty.

Or at this stage, you may not be able to answer the above questions well, but once you have understood the way the components are built at the operation and maintenance level, or have understood the operation and interaction methods of the components by troubleshooting actual problems, then you can study the relevant underlying code, even if you don’t Too much practical experience of architects, such questions are not difficult to answer.

Perhaps an architect who does not have much practical experience will have a hard time in the company. Leaders and team members may feel that they lack practical experience, but most architects also accumulate a little bit of relevant experience through practice. In this stage, if you are willing to listen more and see more questions and upgrade to a senior structure, it will be just around the corner.

7 Summary, after upgrading to an architect, there will be more opportunities.
In fact, for those of us doing IT, upgrading to an architect may not be the only way to develop, but not everyone is suitable for management. If you are taking the technical bonus route, it may be a more appropriate development path from architect to technical expert.

For advanced development, there may be a phenomenon of 30 or 35 years old. After all, the skills required for advanced development are easily mastered by graduates or trainees. There is no competitive advantage at an older age, but it is precisely because of upgrading to an architect. It's not that easy. By the age of 35, you may still be able to compete.

Moreover, once you upgrade to an architect, you can find a small company to be the technical person in charge when you retreat, so that the rich will be safe, so that you will not be eliminated like the elderly code farmers; if you enter, you can go to a large factory to practice Fan, and then expand the influence through various channels, then it can really be said to become a technical master. Conversely, if you stop at high-level development, although you can also increase your salary through job-hopping, the pattern has not been as broad as an architect.

Guess you like

Origin blog.csdn.net/weixin_52622200/article/details/110670131