Thinking About Programming Ability

programming ability

In an interview, I talked with my supervisor about what programming ability is. This is a topic worth thinking about and pondering. What is the real programming ability of a programmer? Or, what is the difference between non-professional programmers and professional programmers?

 

The author believes that programming ability is divided into two aspects: theoretical basis and system design ability. At the current technical level, continuing to improve strength requires one "up" and one "down": "up" is to improve system design capabilities in the macro direction, and "down" is to dig deep and consolidate the foundation in the micro direction.

 

theoretical basis

Theoretical basis refers to the basic knowledge about computers and programming that programmers need to master, including computer composition principles, operating system principles, compilation principles, data structures and algorithms, etc. If you want to develop in the fields of machine learning, big data, and image recognition, you also need to master advanced mathematics, linear algebra, probability analysis, discrete mathematics and other mathematical knowledge.

 

Although most development tasks in work do not use too much basic knowledge, these basic knowledge as the foundation determines whether a programmer can become a good programmer. Programming is an abstraction, and the program is the carrier of communication between humans and computers. Only by understanding the computer can we communicate better. Mathematics is the foundation of programs. Only with a good mathematical foundation can we design reasonable and efficient algorithms to solve problems.

 

system design capability

System design ability is the ability to abstract the problem and design a reasonable implementation scheme. Possessing good system design skills is an essential requirement for becoming a software architect. Although there are many mature frameworks for programmers to use, such as spring, MyBatis, dubbo, etc., the general framework solves the abstract problem of a common scenario, and programmers are still required to design independently when encountering specific needs at work.

 

The quality of system design directly affects the long-term development of the project. With the development of business, there will be higher and higher requirements for compatibility, concurrency, availability, scalability, and scalability. When the limit is really reached, it is impossible to reinvent the wheel, and it is impossible to take risks to carry out large-scale reconstruction. Therefore, system design will eventually become a bottleneck. Only good programmers must carry out good design to support the growing business scale. .

 

Popular open-source frameworks are often huge in scale, embodying the wisdom of many excellent programmers, with reasonable module division, good architecture design, appropriate design patterns, safe and efficient concurrent processing, and programming ideas worth learning. A deep dive into open source frameworks can provide system design capabilities.

 

3 study notes or technical summaries per week, aimed at Java programmers with a certain foundation, covering Java advanced, virtual machine, MySQL, NoSQL, distributed computing, open source framework and other fields. Follow the author or WeChat public account backend-develop to get the latest content as soon as possible.

Thinking about programming ability | back-end development

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326642720&siteId=291194637