
The profession of a programmer is becoming increasingly popular and in demand. Now the threshold of entry into the IT sector has, in principle, decreased, but interest in IT technologies in general, and programming in particular, continues to grow.
Among IT companies and programmers, however, competition is increasing. However, it is worth noting that, at least in the labor market, it is fairly honest. For example, when hiring a programmer, an employer will first of all assess the level of real knowledge and skills, and not the color of the diploma. However, this situation contributes to the spread of “self-taught programmers” who are limited to a narrow specialization. For them, the expression “step to the right, step to the left - shooting” is often fair. So, now it is not enough to say: this person is “ITshnik,” or even a programmer. Programmer programmer disagree.
')
Programmer specializations are multiplying and developing; a programmer specializing in one application area cannot always understand a colleague who works in another area. Although it seems that both programming languages ​​and technologies are the same. The areas of applications can be radically different from each other, and in order to write specialized programs, it is not enough to know the languages ​​and programming technologies, you need to be well versed in the area for which the software is developed. Recently, more and more often when studying the subject area there is a need for mathematical formalization.
I studied in the university, in which earlier, about 30-40 years ago, there was no specialty “Software Engineer”. However, the people involved in programming were there - they were called “PMs”. The fact is that they studied at the Department of Applied Mathematics. But it would be fair to call them mathematicians rather than programmers.

Years passed, and over time, the department began to oversee a new specialty - “Software for computing equipment and automated systems”. Mathematics in the curriculum was much less, and teachers began to complain that high school graduates had big problems with mathematics. That is, when enrolling in the first year, many students already have a rather weak mathematical base, and since there is now less time for this subject in the curriculum, there is little hope of improving the situation.
Of course, you can still remember that before there was grass and greener, and the sky is bluer ... But where are the programmers to pump hardware in today's conditions? Does this mean that now the “serious” positions of developers will be more willing to take mathematicians, rather than programmers?
New reality
Already in the last courses of the university, students often learn that new technologies have emerged that were not studied at the university: they simply did not have time to include them in the curriculum. However, thanks to the fundamental education, laid foundations, future specialists can easily study these technologies on their own. But then the question arises about the quality of this education. Is there enough for today's labor market requirements?
Recently, new technologies have become more high-tech - more precisely, math-intensive. In many areas of human activity, mathematical modeling of various processes has become more actively applied, representatives of the Novosibirsk State Technical University
write in their message to the applicants.
Physical realization of experiments, experimental testing of hypotheses put forward are very expensive, as a rule, they require significant human and material resources. And imitation of experiments on mathematical models, the identification of patterns in the course of multiple modeling is much cheaper.
On the basis of mathematical models, appropriate software is developed that implements a mathematical model of the object and mathematical methods to find the optimal solution. And if we replace a physical experiment with a mathematical one, then we must be sure that their results coincide. “And how can a specialist in IT-technologies do without deep mathematical knowledge and computational methods?”, They ask.
Until the beginning of the 90s, the so-called applied statistics developed slowly. But it developed more in theoretical terms than in practical terms.
And “one fine day” came the need to adapt it to practice. In connection with the improvement of the technology of recording and storing data, colossal flows of information in a wide variety of areas have fallen upon people. The activity of any enterprise (commercial, industrial, medical, scientific, etc.) is now accompanied by the registration and recording of all the details of its activities.

It became clear that without productive processing, data streams form an unwanted dump for anyone. Identifying hidden patterns in the accumulated information is the task of data mining (Data Mining) - an integral part of the decision-making process. Looking deeper, data mining is based on a wide range of methods of probability theory and mathematical statistics.
The knowledge of mathematics is needed by most programmers, but what sections are needed for developing this or that type of software? What you need to know in order to program games, artificial intelligence, big data, scientific software and so on?
Ivan Khvatov, software developer, Yandex:
How much does a math programmer need? Please describe your history of relations with materiel.In general, need. In some areas - more, in some - less. After university, the theory was immersed only if there was a need for tasks.
In what areas of development is the materiel needed? Why? What sections of mathematics are needed there?There are many directions. Just do not list. If, for example, to talk about the current HYIP, then you need to know the statistics well. The basic level that you need to know everywhere: the university course of mathematical logic, probability theory, statistics and discrete mathematics.
Can you advise how to tighten the mathematical apparatus to programmers who have long finished college? Are there any difficulties?Take online courses. Now there is no problem.
What is the difference between mathematical thinking and programmer (algorithmic)?I do not know, I would not share it.
Which experts are better suited to mathematics development: mathematics with the basics of programming or programmers with the basics of mathematics?Anton Karakulov, web developer, TM
How much does a math programmer need? Please describe your history of relations with materiel.It all depends on what tasks the programmer has to solve. The more applied - the less often a materiel is needed. The more systemic - the more often it turns out to be in demand.
Unfortunately, my any intelligible relationship with her ended at the 2nd year of the institute. At that moment, it was still believed that it would be useful and necessary for me, but due to circumstances I was distracted by other knowledge, and then it was very difficult to return to abstract study.
In what areas of development is the materiel needed? Why? What sections of mathematics are needed there?As said above, the more system tasks are solved by the programmer, the more knowledge is needed of the hardware. In the name of the mat. disciplines are always confused about what was happening, so I cannot surely say anything here.
Can you advise how to tighten the mathematical apparatus to programmers who have long finished college? Are there any difficulties?From the programmer I heard the opinion that on coursera good courses for every taste. You can start with the base, and then choose the interests and needs.
What is the difference between mathematical thinking and programmer (algorithmic)?The mathematician defines concepts (answers the question “What”), and the programmer translates them into machine language (answers the question “How”).
Which experts are better suited to mathematics development: mathematics with the basics of programming or programmers with the basics of mathematics?In general, the average for the hospital - of course, programmers with the basics of mathematics.
Artem Kukharenko, founder of NTechLab:
How much does a math programmer need?If here we mean the knowledge of mathematics, then, in my opinion, it is not necessarily in all areas of programming, but, of course, it will not be superfluous either. I would say that in different areas it will give an increase in qualification: in some - 10%, in some - 1000%.
If it means knowing the theory and fundamentals of the field in which a person works, then, in my opinion, this is a must have for any expert in his field.
Please describe your history of relations with materiel.He studied in the mathematics class of one of the best Math schools in Moscow - Grammar school â„– 1543, then he studied at VMK MSU, where there was also mathematics, not so serious, of course, like at MEU MSU for example, but at a sufficient level so that you can understand and understand, for example , modern machine learning algorithms. Plus I participated in school programming contests where it was necessary to study the theory of algorithms, which helped me a lot in the future.
In what areas of development is the materiel needed? Why? What sections of mathematics are needed there?I can definitely say that mathematical and algorithmic training is needed in areas related to machine learning, neural networks, artificial intelligence. We actively use knowledge from the following sections: mathematical analysis, linear algebra, theory of probability, linear programming and solving optimization problems, algorithms, high-performance computing.
Can you advise how to tighten the mathematical apparatus to programmers who have long finished college? Which courses are better to attend?Now there are a lot of open courses, such as Coursera, but they usually provide very superficial material to reach the widest possible audience. There are, of course, exceptions, but they are few. There are several resources where the material is given at a very good level, for example, Stanford engineering everywhere: there are just lecture notes that are being read at Stanford. In my opinion, they are very useful to see if there is basic training.
But you need to understand that obtaining good knowledge in any field is a rather long process and it will not be possible to get good mathematical (like any other) training from scratch quickly (within a few months). If, nevertheless, there is a goal to do it seriously, then, in my opinion, either a master's degree or a second higher education in a mathematical university would be better for this.
Which experts are better suited to mathematics development: mathematics with the basics of programming or programmers with the basics of mathematics?In our company development and research are divided. Programmers with the basics of mathematics are more suitable for development, mathematics with the basics of programming for research. But in both teams very often there are people who have at the same time a very high level of knowledge and mathematics and programming.
The user Mrrl , arguing about the sections of mathematics needed by programmers, wrote the following:
1) Mathematical analysis - without it, simply nowhere, the basis of all numerical models.
2) Algebra (higher) - is used quite rarely. Either in the form of group theory - when you need to do something with groups of rotations or movements of space, or in the form of finite groups / fields, where it interlocks with the theory of numbers. But if you really had to go there, you have to use it actively. If not in the code, then in the development of algorithms.
3) Analytical geometry - I think it is needed by anyone who is involved in computer graphics, computer geometry, 3D modeling ...
4) Linear algebra and geometry - similar to analytic geometry. Plus matrices come out in many information processing tasks.
5) Discrete mathematics - are the graphs included here? And boolean algebra? And the state machines? For the development of algorithms will be used often, even in the background.
6) Mathematical logic - except at the level of understanding logical operations and quantifiers. To prove the correctness of programs, and less often - to design them on the basis of “given” and “receive”. It can help when the conditions of the task are too formal and stubbornly refuse to be perceived by the brain.
7) Differential equations - if they are not part of the subject domain, they are rarely met. More often as the same auxiliary tool as generating functions. Or for data analysis, optimization algorithms ...
8) Differential geometry. - It happens. When you have to work with a multiparameter model, it is useful to imagine the properties of the parameter space. Most often this is limited to the metric - even geodesics cannot be counted. Well, there is one specific case - programs in which things are going in Lobachevsky space.
9) Topology - except for tracing the boards I can not imagine where it is needed. Perhaps, in computer geometry, for example, when building a surface using one or several point clouds, calculating the interaction of bodies, to search for a path in the space of permissible parameters of some robot ... But I haven’t done this yet, and I don’t know how much topology is needed . For the development of algorithms, I think, needed.
10) Functional analysis - I do not remember what is included there. But if bases of families of functions (Fourier series and more complex systems) are studied there, then this is useful. Infinite-dimensional spaces are most likely not required.
11) Integral equations - did not collide. Perhaps because I do not know them as a separate subject.
12) The theory of functions of a complex variable — linear and rational functions are very useful for working with the motions of a plane and a sphere; it is easier to work with complex numbers than with orthogonal matrices. Even in a complex field it is convenient to solve systems of polynomial equations (they are rare, but they occur). And the same Lobachevsky space in complex coordinates looks nicer.
13) Equations in partial derivatives - if not part of the domain ... may be useful for some variants of smooth data interpolation (when working with basic functions for some reason is not enough). I don’t know how much the PDA is needed for modeling, say, the sea surface in computer graphics. I suspect that we are.
14) The theory of probability, mathematical statistics, the theory of random processes - to varying degrees in any data analysis.
15) Calculus of variations and optimization methods - AI in games and robotics.
16) Calculation methods and numerical methods - as many as you like. If the work is connected with at least any real numbers.
17) Number theory is similar to the theory of finite groups. In general, it occurs infrequently. Unless, of course, not to consider modern cryptography ...