📜 ⬆️ ⬇️

About knowledge and skills of the programmer

Suppose that, after reading the previous post " On computer science in general, " you weighed all the pros and cons and decided to become a programmer.

What abilities in yourself it makes sense to develop and how to find out if you have a vocation for programming?

It is considered that a good basis for programming is mathematics. Of course, this is true. A person must be familiar with Aristotle's logic and be able to solve mathematical problems in three steps.
But there are other requirements ...

')
By the way, here it is appropriate to say that the programmer comes across tasks not in three, but in 10,000 actions. And these actions need to be able to be broken down into subtasks, each of which needs to be formally described, evaluated the complexity, formulated performance criteria, entrusted the execution of each subtask to groups of programmers (or himself), monitored the progress of their implementation (to carry out self-control) and be able to make important adjustments in the course of assignments. Something like that, something like that ... Have you ever thought about becoming a programmer?

Yes, programmers get complex tasks. And the ability of a programmer to reduce this complexity is especially important. Surprisingly, but the fact is that two different IT specialists (IT - information technologies) can offer two different solutions to the same task, which will ultimately differ in labor costs dozens of times. It is not easy to guess which of the two IT specialists is more correct. In the IT industry, the main risks are still associated with recruitment. The success of the project depends on which technology will be the basis, and which people will lay the basic architecture of the product. The last is the most important. The choice of programming language and technology is usually made right. So it turns out that after the wording of the task, the elementary analysis of technology and the accounting of available funds, there are two or three options to choose from, and each of them can lead to success if the programmer’s team is generally competent.

The unpredictability of a programmer (team of programmers) is one problem. It is solved simply - you just need to give trial lines. But there is another problem - the uncorrectable optimism of programmers. They really succeed in simplifying complex tasks, they are able to find architectural solutions that reduce the seemingly heavy task to a completely feasible one. But they almost always overestimate their abilities and believe that everything will be fine until “imperfect matter” once again puts them in place. If you become a programmer who will make less than two times the error in the completion of the task, there will be no price for you.

So, the programmer needs basic mathematical knowledge, the ability to simplify tasks (a systematic approach to solving problems) and the ability to adequately assess the complexity of the problem.

But, despite the obvious need for mathematical knowledge and abilities, I would not like to say that programmers need classical mathematical education. This must be a special mathematical program, in which there is not much continuous analysis, but a lot of discrete mathematics and logic. At the same time, a considerable part of the time during the training of programmers should be given to the ability to clearly articulate thoughts. Regular training should be as follows: the study of texts, their annotation, the selection of the main idea, the assessment of usefulness, interesting and promising. Speaking roughly, programmers need to be made from mathematicians, preparing them according to programs of linguistic specialties, or from linguists - according to programs of computer specialties (this is the idea of ​​N.N. Nepejvoda).

If you analyze the types of activities of a typical IT specialist or programmer, it turns out that this is not a job with mathematical abstractions, but an analysis of technical texts, annotation, expression of thoughts and concepts as briefly and clearly as possible.

Moreover, it can be said that the programmer’s everyday lives are in the transformation of thoughts into a formal language. This work is naturally compared with the work of a translator - it is necessary to translate a technical text in a native language into a programming language. A person who is unable to clearly express his thoughts will not be able to write and logically coherent working programs. Programs should be well structured and easy to read. Today it is one of the most important criteria for the quality of a programmer. This is due to the fact that software systems become more complex, a large team works on them and it is important that team members read and understand the code written by others, and themselves write easy to read code. It is important not only the ability to put together the correct beautiful long sentences, but also the talent of harmoniously constructing the presentation, splitting into parts and the location of these parts.

Programming languages ​​are not the only area where a programmer is confronted with languages. Formal languages ​​are used to describe data, protocols, architectures, and processes. A professional programmer can be compared with a polyglot, which already knows quite a lot of languages, each of which increases its ability to express thoughts briefly, accurately and beautifully. Learning or developing a new language is a typical programmer’s task.

Source: https://habr.com/ru/post/50346/


All Articles