How to be a qualified programmer? Before you can answer this question, you need to understand what a good programmer is, so that you can have a direction and a goal, but this matter is too subjective, and may vary from person to person.

Aside from the legendary exceptions of doing great things alone, and aside from the myth that god is great, here’s what I think makes a good programmer in general.

1. Problem-solving skills

In project development, a programmer’s ability equals his ability to solve problems. If you want to measure this ability, a programmer’s ability can be measured by the size and difficulty of the task he can accomplish.

In general project development (non-research projects), the difficulty of tasks mainly comes from the complexity brought by the scale of tasks. Here, tasks are roughly divided into 1 function =>1 class =>1 function =>1 module =>1 project.

In more detail, functions, classes, functions, modules, and projects themselves can be divided into simplicity and size.

A beginner programmer always starts with the smallest functions and classes;

◆ A programmer who can basically complete a function of the project is qualified.

Prior to that, productivity on the project was negative, meaning that I spent more time assigning tasks, communicating with him, and fixing bugs for him than I did doing the feature directly. In other words, having programmers of this caliber on the project is purely for talent development.

◆ The programmer who can better complete a complete module is considered as a better programmer, and is also the main developer in general projects;

◆ A person who can complete a project is a good person and can be the master in a multiplayer project.

I think there are several factors:

2. Knowledge accumulation

Between people of the same level, one who knows something about the problems of a field, and one who knows nothing about it, the efficiency of performing the same tasks in that field is more than an order of magnitude less.

This is what we usually call the function of experience, which can be regarded as the accumulation of knowledge. A programmer’s knowledge accumulation largely determines his ability to solve problems.

3. Self-learning ability

This is an era of knowledge explosion, knowledge refresh frequency people can not catch up.

On the one hand, faced with a slightly difficult task, it is inevitable that you will go beyond the scope of your current knowledge. At this time, self-learning ability determines how fast you can complete the task. On the other hand, your ability to learn by yourself determines how much knowledge you can accumulate in your daily work.

Highly self-taught people can always learn from the code on a project without guidance; On the other hand, people who are less willing to learn write code that is refactored by someone else, and they don’t wonder if the code is better or why.

On a longer scale (such as a person’s working life), the amount of knowledge a programmer accumulates depends only on his ability to teach himself and his interest in programming itself.

4. Communication skills

In a well-defined project, programmers need to communicate with the product (designer) to understand the product, with superiors to understand their tasks, and with colleagues to correctly understand the modules to be plugged into.

Let others understand the interface of the module correctly when you complete the module by yourself. Correct oral communication is very important when you do not write documents. When you need to write documents, the ability to write documents is also considered as part of the communication ability.