How hard is programming?

Source: Internet
Author: User

My view: The programmer's core skills are short term memory ("Wikipedia"-short-term memory is the capacity for holding a small amount of infor Mation in mind in an active, readily available-a short period of time.), which is also an important indicator of distinguishing between a good programmer and a common programmer.

Programmers need to learn a lot of new things: the principle of programming language, grammar, basic library and framework of understanding, as well as domain knowledge and so on, but also to accumulate in the work, including program architecture, engineering, working methods of various experience. But I think these are not the core, if a programmer compared to a computer, the above mentioned things are data, can be entered (perhaps the speed of entry), but the merits and demerits of a computer, the real key is the processing power parameters, such as the processor's frequency and memory size, etc. What does the hardware metrics map to the programmer? For programmers, there must be some core thinking ability to play a decisive role, in other words, if the IQ as a multidimensional vector, where there must be one or some of the dimensions is critical to the programmer.

When programmers write code, they build a model of the program in their mind, including data structures and algorithms, and then turn the model into code. In this process, the model is stored in the short-term memory of the mind and may need to be refreshed from time to times. Once disturbed by the outside world, the model may disappear, it must be hard to reload, and someone compares the model to a house of cards because it is too prone to collapse. So programmers are afraid of interference when programming, because once interrupted, it will take a warm time to restore the original productivity again. The harder part is that the model is not static, it evolves over time, and programmers often think about the process of executing the program (playing the role of CPU with their brains) and making changes to the model based on different conditions. Programming this mental work, in fact, is in the brain of the volatile storage, maintenance and refinement of a time and space dimensions of the model process.

So I guess a major difference between a qualified programmer and another mental worker may be in the short-term memory of this piece: or the programmer's short-term memory space is large (generally people are 7+2/-2 kind of thing, but programmers sometimes need to put a huge system in the brain), or short-term memory for long periods of time (writing code is often a continuous number of hours of work, in such a long period of time in the brain to maintain a model is very energy-intensive), or the memory of the read/write rate is high (good programmers think of a problem, can quickly locate the location of the program model). Of course, these are purely speculative and require psychological experimentation to prove it.

I recently read coders at work, an interview with one of the top 15 programmers (or masters) in the world, and after reading it, I found that these people have a characteristic that they scoff at certain methods of software engineering, such as design patterns. I don't think that's a coincidence. Software engineering is a way of making it easier for programmers of all levels to understand complex code so that they can work together in a software project. We use a variety of abstract methods (object oriented, design patterns, etc.) to reduce the complexity of each unit of code, so that each such unit (class, object, etc.) can be loaded into our short-term memory without overflow. And for those masters, these abstractions are unnecessary, they can load a large program into the brain, understand clearly, and tinker with it. In my opinion, the difference between them and ordinary people is here.

Of course, some people say that the brains of stupid programmers to become good programmers, because their short-term memory is small, so do not write that hundreds of lines of functions (Spaggetti code), the code is more modular nature is better. The "good programmer" here should refer to the model code worker in the software project, not the coders in work, and the development of the software industry may depend on the brain with its super storage capacity.


How hard is programming?

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.