📜 ⬆️ ⬇️

How much does a programmer need to know math? What do they think in Yandex

Almost in every school in the mathematics office there is a tablet with Lomonosov's statement: “Then it is already necessary to teach mathematics that it leads the mind in order”. Many of those who do not understand what programming is, it seems that writing code is the same as solving math problems, and all programmers are necessarily mathematics. But how is it really? How does knowledge of mathematics help in solving practical problems?

Finally, we got to one of the most pressing topics and asked our colleagues at Yandex the question: “Does the programmer need to know mathematics?”


')
Under the cut, as always, the full text version.

Mikhail Parakhin
Moscow. Programs 24 years. In Yandex - 9 months.

After graduating from the MEPhI, he began working at ZAO SEC Modul. In the 90s it was almost the only place in Moscow where they were engaged in automated learning systems. Then he went to the company Parascript, which is actually a monopolist in the field of handwriting and typed text recognition. For many years he worked in the United States. The last seven years have been Microsoft, five of which headed the multimedia search services division at Bing. In the spring I came to Yandex as search technology director.



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.


Gregory Bobuk Bakunov
Moscow. Programs 25 years. In Yandex - 10 years.

Once came to work as a system administrator, and now - director of technology distribution.



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.


Anton pg83 Samokhvalov
Moscow. Programs 18 years. In Yandex - 9 years.

Came to Market by a C ++ programmer. Worked on a variety of service tasks. A few years later I moved to search, where I took up the reliability and performance of the runtime search. Now he is working on an assembly system that will allow us to collect our entire code base in a few minutes on a large distributed cluster.



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.


Andrew styskin Styskin
Moscow. Programs 18 years. In Yandex - 9 years.

Came to Yandex by a Java developer to the Market search group. He was engaged in the classification of commodity texts and the extraction of facts from product descriptions. So began his passion for search and machine learning. Outside of work, Andrei made various IR-toys: a generator of poems on language models, a robot for pumping social networks. Now Andrey is in charge of the ranking department, in which a team of almost 200 people works.



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.


Anatoly Anatolix Orlov
Programs 25 years. In Yandex - 9 years.

The first two years he wrote Market. For a long time I was engaged in the search - mainly its performance, and then the rest. Now he is engaged in various projects in the field of speed, architecture, etc. Deputy Head of Search Services. Included in 2% of people who complete courses on Coursera.

image

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.


Stepan Koltsov
Moscow. Programs 10 years. In Yandex - 7 years.

Senior developer in the development of data storage and processing systems. Steppe from those employees of Yandex, who left, but then returned. Now he is working on monitoring systems in search.



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.


Andrey Mishchenko
Moscow. Programs 24 years. In Yandex - 9 years.

He came to Yandex as a developer in C ++, for a long time was the head of the Blog Search Development and wrote in Perl. Andrey is a Candidate of Physical and Mathematical Sciences. Now he is working with Andrey Gulin on improving machine learning algorithms in search.



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.


Alexander sadovsky Sadovsky
Moscow. In Yandex - 10 years.

I came to Yandex to work on projects related to the search. Under his leadership, a blog search , Yandex.XML were created, a new ranking algorithm was launched, and a robot for promptly indexing up-to-date information, an assessor service was created and a search quality measurement started. Sasha is the author of many publications in scientific and popular media about search engine algorithms and website promotion on the Internet.



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.


Artem Breqwas Kireev
Programs 12 years. In Yandex - 8 years.

Yandex was called for parsing data from Blog Search. They called not only to scold, but also to work. For many years, did a search on blogs, in particular, was the main developer of the Yandex.Pulse sub-service. Now he is developing an Advertising Network, one of the most critical services in terms of fault tolerance.

image

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.


Sergey svv Vavinov
Moscow. Programs 27 years. In Yandex - 6 years.

Came to Yandex by Yandex.Video developer. He was mainly in the development of music, then in the service of media services. Made several projects for Yandex.Disk. Now - the head of the group of technologies for working with big data. One of the tasks Sergey is working on is Yandex’s projects for CERN.



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.


Roman Kashitsyn
Nizhny Novgorod. Programs - 11 years. In Yandex - a year.

Like many of our colleagues in Nizhny Novgorod, he graduated from UNN them. N.I. Lobachevsky. Prior to Yandex, he developed insurance, information security, and media server management systems. He worked on software in telecommunications, automated workstations, portals. We are involved in the modernization of the back office directory of organizations.



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.


Elena Bunina
Moscow. In Yandex - 7 years.

Director of computer science at the School of Data Analysis, HR-Director of Yandex, Professor of the Department of Higher Algebra of the Mechanics and Mathematics Faculty of Moscow State University. Mv Lomonosova, Deputy Head of the Department "Data Analysis" MIPT. Doctor of Physical and Mathematical Sciences. The topic of her doctoral thesis is “Automorphisms and elementary equivalence of Chevalley groups and other derived structures”.

image

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.


Alexey Volohovich
Nizhny Novgorod. Programs - 25 years. In Yandex - 8 months.

Lyosha is the head of the Nizhny Novgorod development office of Yandex. He graduated from the Nizhny Novgorod Technical University named after R. E. Alekseev. Now he teaches discrete mathematics there. Candidate of Technical Sciences. Prior to Yandex, he was engaged in the development and program management of mobile devices.



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.


Mikhail mlevin Levin
Moscow. Programs 18 years. In Yandex - 5 years.

You could see Misha ’s lecture on how mathematics helps Yandex earn money. A very large part of his work is work in our academic programs. He teaches at the School of Data Analysis, participates in creating a curriculum at the Faculty of Computer Science at HSE and Yandex. Twice he won medals at ACM ICPC in the team of Moscow State University. Mv Lomonosov.



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.


Andrey Gulin
Programs 25 years. In Yandex - 9 years.

Came to Yandex programmer in C ++. The first task was to rewrite the format of the inverted index in order to write into it information about the exact form of the word in the documents (before that only the lemma was stored). One of the main creators of Matrixnet , our machine learning technology. Now leads the ranking service. If Knut had not written his three-volume book, it would be worth giving this work to Andrey. Andrew himself to the question of what he does in Yandex, replied: "I work at the computer and do all sorts of things so that everyone is good."



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.


There are much more opinions about math and programming in Yandex. Here we tried to show that in principle they are different. And even when someone in one part of Yandex believes that it is impossible to work without deep mathematical knowledge, in the other, those who do not have it also solve their problems. What do you think? Have you ever been hindered by the fact that you missed a matan? Or does math help you every day?

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


All Articles