Math has to know. And be sure to know at least the basic part in the first two courses of the institute. I somehow learned a lot of statistics in my life and, since I systematically engaged in automatic learning, I had to learn a lot of specialized mathematics. In general, if you do not know mathematics within the framework of the school-institute course, then you will not really like the life of a programmer.
Do you think a car driver needs to know how he drives? It seems to me that it is necessary. This is a real human need. You need to understand deeply enough how even such trivial things as the system library work. And, oddly enough, this still requires mathematics. There is a certain class of programmers who really do not need this. You can make a simple comparison. There are people who paint pictures - they are called artists. There are people who paint fences - these are painters. That's the same with programmers: there is a certain class of programmers who create something high, and there are people who paint fences. And in the end, they are largely distinguished by the knowledge of mathematics, the ability to subtly and in detail understand what they all the same write. Further choice after the person. Or you start doing math, and then you have a chance to become an artist. Or paint fences - this is also a good profession.
The question is, why should he know math? In order to explain to a computer what it needs to do, you don’t need to know math - you need to know the language and be able to use it. But there are some subject areas where math needs to be known. If I, for example, wrote Matrixnet or worked with DNA, it is quite possible that I would need to know some kind of math. But in programming it is not. I can not remember when my knowledge of mathematical analysis was useful to me in writing code. But the very knowledge of mathematics makes people write better code. All the best programmers I know usually graduated from some Faculty of Mechanics and Mathematics, and not from the VMC. Apparently, learning math somehow sets the brain right so that you start programming better.
A person needs to know mathematics well to be a programmer in Yandex. You can say this is part of our corporate spirit. If someone cannot solve a difficult task from an interview, then no one will take him seriously in Yandex. At least in the search exactly. It seems to me that this is self-identification, a mechanism by which it can be understood that a person thinks in the same categories, speaks the same language as you, so you can work with him in a team. I know a lot of good developers who could not perform any projects in Yandex, but they could cope well with similar structures in other structures. For example, in Yandex, infrastructure projects are also being made, which can be done in the same Luxoft, but we would never have hired these people.
Mathematics is a large area of knowledge where there are parts that are needed and not needed in programming. If the question is whether there is something in mathematics that a programmer needs to know, then yes, of course. And if it sounds like: “Is there something in mathematics that a programmer doesn’t need to know?” - the answer will be the same: “Yes, there are a lot of them” ... For example, the programmer really needs a discretionary program, and for many years I’m not interested in programming never useful.
It depends on what a person is doing. If he writes something high-tech, then he needs to know mathematics rightly super-obligatory. The closer a person is, relatively speaking, to the search for Yandex, in which we have the most high-tech tasks, the better you need to know mathematics. If he is closer to completely applied tasks (for example, he writes programs for the bank in order to optimize the work of the accounting department), then of course you can not know the math. I really like Yandex because we have many more places where it is still needed.
It depends on what goals the programmer has. To solve some problems, you need to know mathematics better than some scientists, but for others it is completely unnecessary. If you are engaged in infrastructure, engineering tasks, then you need completely different skills. There are tasks in which humanitarian education will help you even more than basic mathematical education. Especially where you work most with users. If you are developing an interface that should be convenient for the average user, a deep mathematical education will only disturb you. The interface will be very slim, but completely uncomfortable. You should be able to cut corners, make it not so slim and smoother, so that it is more intuitive.
We need mathematics in system programming at a lower level, in some high-tech tasks. In the same machine learning, of course, solid mathematics and statistics. Surely, cryptography also needs very deep mathematics. There are plenty of such areas.
In my opinion, mathematics is a very powerful thing that can facilitate the solution of many problems in programming. And let the programmer not know it at the level of mathematicians, but he must have basic knowledge of higher mathematics in order to communicate with those who understand it, and to be able to perceive the information that the mathematician himself transmits. When I worked in the laboratory, we had a person who was very good at math, algorithms, optimization, and could build a good mathematical model. But if the programmer does not understand all this and stupidly programs one-on-one, as he was told, the result is not very good. Well, when two people find the point of intersection. Mathematics allows you to figure out the efficiency of algorithms in your head, how much time they will be executed, allows you to better describe the objects of the real world. In our field, without mathematics, it is impossible to create such algorithms as Matrixnet.
I don't know math at all. And this is a very strange situation, because everyone who sits around me knows her very well. So when they start saying some clever things, or when they have papers on the tables, scribbled up I don’t even know what, I feel very ashamed. But here I do not know mathematics, and nothing. Absolutely nothing good, but without mathematics there are many tasks in which its, serious Computer Science, algorithms and all that is not necessary to know. There are many applications in which this is not necessary.
A programmer needs to know math. Of course, there are different programming, different projects, in some mathematics you need more, in some - less, in some you need special kind of mathematics. But basic education, basic understanding of mathematics is necessary simply because it builds brains. A person develops abstract thinking, he can better look at the task, break it into some parts, understand how to approach it, look for some new approaches to the solution - this is important in any programming. There are still some very basic things. For example, an estimation of complexity of algorithms. It needs to be able to carry out in any situation - whatever program you write, you need to be able to evaluate it. And in advance, before you write the code, just to understand, you need to use this algorithm or take some other at all to make it more efficient.
Such questions are often asked by well-known good programmers. I think mathematics is useful, but not necessary. Its very useful to know, especially if you write, for example, on Haskell. Many famous programmers did not have professional education in the field of mathematics and wrote very good programs. Rather, programming is even sometimes such a linguistic work; many programmers were linguists, for example. But, on the other hand, math sometimes helps a lot. Especially if you write some applications related to graphics. There, without high mathematical abstractions is very bad. Matrices, transformations, quaternions, and all such things are very necessary.
From my point of view, there are different programmers: those who simply code something according to the given algorithms and can do without mathematics, and all those who are engaged in the analysis of big data and those things that we have in Yandex - they need mathematics . And different aspects. Sometimes you can't even imagine in advance what kind of mathematics they need. But surely those who deal with machine learning should know mathematics, should be proficient in algorithms, and knowledge of statistics is very important for them.
It is important for a programmer to know mathematics in principle, because the tasks that he solves are very often associated with knowledge of basic mathematical concepts. To write a code does not mean putting some letters, using some operators, functions, etc., which are described in KPI. You can write such code, which then will not be able to fly up or, if it flies, then after that it will fall so that everything under it will collapse. Therefore, to lay beautiful solutions at the very beginning of system design is the foundation of the basics. In order to get this beautiful solution, you must have basic fundamental knowledge, understand what beauty is, what is not beauty, how to see that this solution is optimal for a specific range of tasks that your software solves.
If you want to do interesting work, then you need to know mathematics pretty well. There are certain sections (such as algorithms) that require a fairly deep knowledge of mathematics and in general, in part, mathematics are. We still believe that all self-respecting developers should know the algorithms at some basic level, and in general at Yandex at interviews, in my opinion, algorithmic problems ask everyone. Further it depends on the direction of activity. If a person develops something infrastructural, then he can go deep into system things. There is also my own mathematics, but I don’t understand much about it. Functional languages are generally something that a person who does not know mathematics puzzles, and some algebraists simply grasp everything on the fly. Well, and understandably, new areas of machine learning are generally solid maths, and there, of course, you can simply use tools without understanding anything, but then the risk of making a global mistake, because of which nothing happens at all, is very big.
Of course, you need to know math. Here colleagues laugh, so awkward question you ask. But it is not very clear whether it is possible not to know mathematics with our system of general education. Already in the first grade, everyone is taught to fold, and this is a skill that is needed and which we use all the time. Mathematics is not exhausted by arithmetic, as we know, there are many sections with more or less usefulness. Some study differential geometry. Others are complex sections of mathematics that are rarely useful. At the same time, there are sections of mathematics that are considered non-trivial. For example, probability theory, and I would like it to be known to as many people as possible. Because it is about as useful as ordinary arithmetic. The first gives everyone the opportunity to calculate how much money you need to pay for lunch and whether there is enough for the rest of the month, and the second will allow us to calculate much more interesting things. For example, what are our chances that we will be able to get a new job with a higher salary, that we will not cancel visas and we will be able to go on vacation this year. For generally important decisions, the theory of probability can be fully applied to oneself. Accordingly, it is necessary to know mathematics, and in general, as we know, mathematics is the queen of sciences. And one of the most abstract sciences, which generally happens.
Machine learning is just another name for statistics. If you do statistics, but using computers, then you do machine learning. You will have to know mathematics, and even if you don’t know it, you will learn it. The only thing needed is to be able to explore new areas. Without this skill to say that you want to do something new in your life is impossible. Machine learning was new recently, so everyone who practiced it had this skill. Right now, learning machine learning is much easier than it was 10 years ago, because I wrote a lot of books, there are a lot of courses. Accordingly, if you want to be engaged in machine learning, which is already involved in just about everything, but in something completely new, you need to be able to study new areas and choose those areas that you really need.
Source: https://habr.com/ru/post/239339/
All Articles