Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

As a veteran driver programmer who has been doing development for ten years, I have gained experience as a project manager, CTO, and architect of a large company in these ten years. But if you think about it carefully, I wasted at least five years and made a lot of detours in the past ten years. These five years can be enough to make myself a good programmer. It's a pity that I have worked with many programs in the first five years. The staff couldn’t find a way out in confusion!

This is not only a junior programmer who has just stepped into the workplace, but also an old programmer who has been confused after three or five years of work. They must face and understand the problems. I hope the following experience will help you.

The first stage 1-2 years

I think 1-2 years is the first threshold for programmers. At this stage, the rookie has officially moved from theory to enterprise-level development. We know how to use tools, how to control the project version, contact and be able to use the following tplaravel and other frameworks to complete projects, etc. We have accumulated a certain amount of development experience and have a certain in-depth understanding of the code. It is a relatively pure Coder stage.

The second stage 2-3 years

Three years is the second threshold to distinguish programmers. Some people in 3 years, in addition to writing work code, in their spare time basically do not study other things, these people will always be Curd, older people are bound to be replaced by younger people; 3 years of Java programmers besides writing The code also needs to be keen to learn various technical implementations, not only to plan the project, but also to be able to solve all performance problems. Only by in-depth study of the underlying principles, spring, Java virtual machine, microservices, and Mysql underlying optimization, can we maintain our core competitiveness and have a good salary!

The third stage 3-5 years

In the third stage of 3-5 years, the technical system needs to gradually advance to a large level, effectively and high-speed processing from small to very large project management, as our business volume becomes larger and more concurrency, The monolithic architecture model can no longer correspond to large-scale application scenarios, and the distributed architecture is used to redundant systems to eliminate single points of failure, thereby improving the availability of the entire system. At the same time, higher module reuse, faster speed, and higher scalability of distributed systems are essential links for large-scale projects.

Of course, you can also go to Github to create your own open source project to build your own product. At this stage of technology learning, it is easy to encounter bottlenecks, and often after reaching a certain level, the effect of going deeper is really minimal, unless you are specialized in academic research. Unfortunately, most programmers can't do this step. That's what scientists do. At this time, increasing influence is not only because it is easy to encounter technical bottlenecks, but also because influence can create more opportunities for you.

These people must have the ability to be technically unique in 5 years and know their future development direction. From a Curd to a CTO or an architect, they will become an indispensable figure in the project team. The 5 years mentioned above are the average years of programmers. Some people who have been working for 6-7 years are still a Curd who writes business code, so they should learn more!

It’s important to be open-minded to ask for advice. People with better skills than you tend to be lower than you.

Let's take a look at the recruitment needs of Java programmers on the Internet for 20K+

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

Detailed introduction to the latest Internet technologies such as underlying principles, distributed, spring, mybatis, etc.

1. Performance tuning

Whether it is dealing with front-end interviews or improving product experience, performance optimization is a topic that cannot be avoided.

The purpose of optimization is to make users feel "fast". How to make users feel fast?

The loading speed is really fast, the user opens the input URL and presses enter to immediately see the page

The loading speed has not become faster, but users feel that your website is fast

Performance optimization depends on multiple factors, including garbage collection, virtual machines, and underlying operating system (OS) settings. There are multiple tools for developers to use when analyzing and optimizing. You can learn and use them by reading Java Tools for Source Code Optimization and Analysis.

It must be understood that no two applications can use the same optimization method, and there is no perfect reference path for optimizing java applications. Use best practices and adhere to appropriate methods to handle performance optimization. To achieve the highest performance optimization, you, as a Java developer, need to have a correct understanding of the Java Virtual Machine (JVM) and the underlying operating system.

The following five knowledge systems are the experiences that I have summed up from many years in the industry, and they are all the most mainstream technologies at present. If you want to learn more and learn more, you can forward + follow me and reply to [architecture information] to obtain learning materials and share some video recordings recorded by senior architects: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, and distribution The principles of architecture and microservice architecture, JVM performance optimization, and concurrent programming have become an essential knowledge system for architects.

The following figure is a summary of the knowledge systems that I should learn and understand for performance optimization:

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

2. Interpretation of source code

Source code analysis is a kind of critical knowledge. With this critical knowledge, it can remain unchanged and change. For many people, source code analysis is very boring, jerky and difficult to understand.

Reading the source code, I think there are three core points: technical foundation + strong thirst for knowledge + patience.

I think it is the core driving force for reading source code. I see most programmers, their attitude towards learning is basically these levels (very extreme):

1. Only pay attention to the project itself, if you don't understand, just baidu.

2. In addition to doing a good job of the project, I will also read technical books related to the project and look at wikipedia.

3. In addition to reading books related to the project, I will also read books in the IT industry. For example, when learning Java, I will also learn about functional languages, such as LISP.

4. Look for some open source projects, try a lot of third-party frameworks, and write demos.

5. Read the basic framework, J2EE specifications, Debug server kernel.

Most of the programs are the first type, to the fifth type not only requires a strong interest, but also requires courage: can I read it? Actually, you can read it.

Patience is really important. Because you rarely see instructional articles or books about reading the source code, and no one asks or recommends you to read it. You often get stuck in the process of reading, and a card owner may be stuck in a maze. At this time, what you need to do may be to temporarily interrupt, and then look at it from the outside: such as API structure, framework design diagram.

The following figure is a summary of the source code knowledge points that I should learn most at present:

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

3. Distributed

Distributed system is an old and broad topic, and in recent years, because of the rise of the concept of "big data", it has shown new youth and vitality. In addition, the distributed system is also a subject that emphasizes both theoretical models and engineering techniques. Compared with research directions such as machine learning, students who study distributed systems often feel: "It's easy to get started, but it's hard to go deep." Indeed, learning distributed systems hardly requires much knowledge of mathematics.

Distributed systems are a complex and broad field of research. Learning one or two online courses or reading one or two books may not fully cover all of its content.

In general, the task of a distributed system is to organically combine and connect multiple machines so that they can complete a task together, which can be a computing task or a storage task. If we must make a classification of the distributed system research in recent years, I personally think that it can include three major parts:

1. Distributed storage system

2. Distributed computing system

3. Distributed Management System

The following figure is my summary of the most mainstream distributed technology in recent years:

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

4. Microservices

Currently microservices are very hot, and everyone claims to be using microservice architecture, but what exactly is microservice architecture? Is the microservice architecture a development trend? We all lack a clear understanding of these issues.

In order to solve various problems under the monolithic architecture, the microservice architecture came into being. Instead of building a bloated monster that is difficult to tame, it is better to split the service as soon as possible. The core idea of ​​microservices is to split and decouple services to reduce complexity. Microservices emphasize the reasonable disassembly of functions, as far as possible to ensure that each service has a single function, and clarify roles in accordance with the Single Responsibility Principle. Make each service light so that it is flexible and reusable. It can also be deployed separately and horizontally expanded according to the resource requirements of each service.

The following figure is a summary of the knowledge points that I need to learn for microservices:

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

5. Engineering

If you want to do well, you must first sharpen your tools. Whether you are a novice or a senior developer, you need to choose a good tool first. Improve development efficiency and team collaboration efficiency. Give yourself more time to think.

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

It is impossible to become an architect without learning. With a planned route, the editor will share the advanced video materials of the architecture and the learning materials of the architecture documents, including some interview experience summaries (PDF version)

Follow me to forward the article and receive it by private message, forward + forward + follow me after forwarding and add VX: MXW5308 to get learning materials

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

 

Ten years of development as an architect and CTO, reviewing the growth experience along the way, and giving some suggestions to IT juniors

Guess you like

Origin blog.csdn.net/weixin_45132238/article/details/114085611