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

In almost every school, a sign with a statement by Lomonosov hangs in the office of mathematics: “Mathematics must then be taught that it brings the mind in order.” For many of those who do not understand what programming is, it seems that writing code is the same as solving mathematical problems, and all programmers are necessarily mathematicians. But how is everything 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: “Do I need a programmer to know math?”

Under the cut, as always, is the full text version.

After graduating from MEPhI, he began working at CJSC STC “Module”. In the 90s, it was almost the only place in Moscow where they studied automatic learning systems. Then he went to Parascript, which is actually a monopolist in the field of handwriting and printed text recognition. For many years he worked in the USA. For the past seven years, at Microsoft, five of which led Bing's multimedia search services division. In the spring, he came to Yandex as director of search technologies.

Once I came to work as a system administrator, and now I am the Director for Technology Distribution.

I came to the Market as a C ++ programmer. Worked on a variety of service tasks. A few years later I moved to search, where I was engaged in the reliability and performance of runtime search. Now he is engaged in a build system that will allow us to assemble our entire code base in a few minutes on a large distributed cluster.

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

The first two years Market wrote. For a long time I was engaged in search - mainly its performance, and then to everyone else. 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.

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

He came to Yandex as a C ++ developer, for a long time he was the head of the development of Blog Search and wrote in Perl. Andrey is a candidate of physical and mathematical sciences. He is currently working with Andrei Gulin to improve search engine learning algorithms.

I came to Yandex to work on search related projects. Under his leadership, a search on blogs , Yandex.XML was created , a new ranking algorithm and a robot were launched to quickly index fresh information, a service of assessors was created, and the measurement of search quality began. Sasha is the author of many publications in scientific and popular media about search engine algorithms and website promotion on the Internet.

Yandex called for parsing data from Blog Search. They called not only to scold, but also to work. He did Blog Search for many years, in particular, he was the main developer of the Yandex.Puls service. Now it is developing an advertising network, one of the most critical in terms of fault tolerance services.

I came to Yandex as a developer in Yandex.Video. He was the main one in the development of Music, then - in the service of media services. Made several projects for Yandex.Disk. Now - head of the big data technology group. One of the tasks Sergey is working on is Yandex projects for CERN.

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

Director of the computer science department at the School of Data Analysis, HR Director of Yandex, professor at the Department of Higher Algebra, Faculty of Mechanics and Mathematics, Moscow State University M.V. Lomonosov, deputy head of the department "Data Analysis" MIPT. Doctor of physical and mathematical sciences. The theme of her doctoral dissertation is “Automorphisms and elementary equivalence of Chevalley groups and other derived structures”.

Lyosha is the head of the Yandex development office in Nizhny Novgorod. 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 involved in the development and program management of mobile devices.

You could see Misha 's lecture on how mathematics helps Yandex to earn. A very large part of his activity is working in our academic programs. He teaches at the School of Data Analysis, participates in the creation of a training program at the Faculty of Computer Science of HSE and Yandex. Twice won medals at the ACM ICPC as part of the team of Moscow State University. M.V. Lomonosov.

He came to Yandex as a C ++ programmer. The first task was to redo the format of the inverted index in order to record information about the exact form of the word in the documents (only the lemma was stored before). One of the main creators of Matrixnet , our machine learning technology. Now runs the ranking service. If Knut had not written his three-volume, this work would have been worth giving to Andrei. Andrei himself, when asked what he was doing at Yandex, replied: “I work at a computer and do all kinds of things so that everyone is happy.”

Opinions about mathematics and programming in Yandex, in fact, are much greater. 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, those who do not have their own tasks in the other. What do you think? Did it ever bother you that you skipped matan? Or does mathematics help you every day?

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

Under the cut, as always, is the full text version.

**Mikhail Parakhin***Moscow. Programs for 24 years. In Yandex - 9 months.*After graduating from MEPhI, he began working at CJSC STC “Module”. In the 90s, it was almost the only place in Moscow where they studied automatic learning systems. Then he went to Parascript, which is actually a monopolist in the field of handwriting and printed text recognition. For many years he worked in the USA. For the past seven years, at Microsoft, five of which led Bing's multimedia search services division. In the spring, he came to Yandex as director of search technologies.

The mathematician has to know. And you must know at least the basic part within the first two courses of the institute. It somehow happened to me in my life to learn a lot of statistics and, since I was engaged in automatic learning systematically, I had to learn a lot of specialized mathematics. In general, if you do not know mathematics as part of the school-institute course, then you will not really like the life of a programmer.

**Grigory bobuk Bakunov***Moscow. It has been programming for 25 years. Yandex is 10 years old.*Once I came to work as a system administrator, and now I am the Director for 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. It is necessary to understand deeply enough how even such commonplace things as the system library work. And, oddly enough, this still requires mathematics. There is a certain class of programmers who really need this, probably. A simple comparison can be made. There are people who paint pictures - they are called artists. There are people who paint fences - these are painters. This is the same with programmers: there is a certain class of programmers who do something high, and there are people who paint fences. And ultimately, they are largely distinguished by their knowledge of mathematics, the ability to subtly and in detail understand what they write. Then the choice is up to the person. Or do you start doing math, and then you have a chance to become an artist. Or painting fences is also a good profession.

**Anton pg83 Samokhvalov***Moscow. Programs for 18 years. Yandex is 9 years old.*I came to the Market as a C ++ programmer. Worked on a variety of service tasks. A few years later I moved to search, where I was engaged in the reliability and performance of runtime search. Now he is engaged in a build system that will allow us to assemble 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 the computer what it needs to do, you don’t need to know the mathematics - you need to know the language and be able to use it. But there are some subject areas where it is necessary to know the mathematics. If, for example, I wrote the Matrixnet or worked with DNA, it is quite possible that I would need to know some math. But in programming, no. I can’t remember when my knowledge of matanalysis came in handy in writing code. But knowledge of mathematics itself makes people write better code. All the best programmers I know usually graduated from some department of mechanics and mathematics, and not from the VMK. Apparently, teaching mathematics somehow corrects the brain so correctly that you begin to program better.

**Andrey styskin Styskin***Moscow. Programs for 18 years. Yandex is 9 years old.*He came to Yandex as a Java developer in the Market search group. He was engaged in the classification of commodity texts and the extraction of facts from commodity descriptions. Thus began his passion for search and machine learning. Outside of work, Andrei made various IR toys: a verse generator on language models, a robot for pumping social networks. Now Andrey is in charge of the ranking department, which employs a team of almost 200 people.

A person needs to know mathematics well in order to be a programmer in Yandex. It can be said that this is part of our corporate spirit. If someone cannot solve the difficult task of an interview, then nobody will simply take him seriously in Yandex. At least in the search exactly. It seems to me that this is self-identification, a mechanism by which you can understand 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 would not be able to complete a single project in Yandex, but they would do very well with similar ones in other structures. For example, Yandex also makes infrastructure projects that can be done in Luxoft itself, but we would never hire these people.

**Anatoly anatolix Orlov***Programs 25 years. Yandex is 9 years old.*The first two years Market wrote. For a long time I was engaged in search - mainly its performance, and then to everyone else. 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.

Mathematics is a large area of knowledge where there are parts that are needed and not needed in programming. If the question is, is there 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 does not need to know?” - then the answer will also be: “Yes, there are a lot of such things” ... For example, a programmer really needs a discrete, and a matan has never been useful to me in programming for many years.

**Stepan Koltsov***Moscow. Programs 10 years. Yandex is 7 years old.*Senior developer in the development of storage and data processing systems. Styopa from those Yandex employees who left but then returned. Now working on monitoring systems in the search.

Depends on what a person does. If he writes something high-tech, then he needs to know mathematics directly super-obligatory. The closer a person, relatively speaking, to Yandex search, in which we have the most high-tech tasks, the better you need to know math. If he is closer to completely applied tasks (for example, he writes programs for the bank in order to optimize the work of bookkeeping), then, of course, you may not know the mathematics. I really like Yandex because we have a lot more places where you still need it.

**Andrey Mishchenko***Moscow. Programs for 24 years. Yandex is 9 years old.*He came to Yandex as a C ++ developer, for a long time he was the head of the development of Blog Search and wrote in Perl. Andrey is a candidate of physical and mathematical sciences. He is currently working with Andrei Gulin to improve search engine learning algorithms.

It depends on what the programmer has goals. 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 a liberal education will even help you more than a fundamental mathematical one. Especially where you work most with users. If you develop an interface that should be convenient for the average user, a deep mathematical education will only bother you. The interface will be very slim, but completely uncomfortable. You must be able to cut corners, make it not so slim and smooth, so that it is more intuitive.

We need mathematics in system programming at the lower level, in some high-tech tasks. In the same machine learning, of course, is solid mathematics and statistics. Surely, cryptography also needs very deep mathematics. There are enough such areas.

**Alexander sadovsky Sadovsky***Moscow. Yandex is 10 years old.*I came to Yandex to work on search related projects. Under his leadership, a search on blogs , Yandex.XML was created , a new ranking algorithm and a robot were launched to quickly index fresh information, a service of assessors was created, and the measurement of search quality began. 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 programming problems. And although the programmer does not know it at the level of mathematicians, he must have basic knowledge of higher mathematics in order to communicate with those who understand it and be able to perceive the information that the mathematician actually conveys. When I worked in the laboratory, we had a person who was very knowledgeable in mathematics, 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. It’s good when two people find intersection points. Mathematics makes it possible to estimate in the head the effectiveness of algorithms, then, for how long they will be executed, it allows to better describe real-world objects.

**Artyom breqwas Kireev***Programs 12 years. Yandex is 8 years old.*Yandex called for parsing data from Blog Search. They called not only to scold, but also to work. He did Blog Search for many years, in particular, he was the main developer of the Yandex.Puls service. Now it is developing an advertising network, one of the most critical in terms of fault tolerance services.

I don’t know math at all. And this is a very strange situation, because everyone who is sitting around me knows her very well. So when they start to say some clever things or when there are pieces of paper lying on their tables, they are scribbled with scary, I don’t even know what, I feel very ashamed. But I don’t know mathematics, and nothing. Nothing good at all, but without mathematics, there are many tasks in which it, 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 for 27 years. Yandex is 6 years old.*I came to Yandex as a developer in Yandex.Video. He was the main one in the development of Music, then - in the service of media services. Made several projects for Yandex.Disk. Now - head of the big data technology group. One of the tasks Sergey is working on is Yandex projects for CERN.

A programmer needs to know math. Of course, there are different programming, different projects, some need more mathematics, some less, some need some special kind of mathematics. But basic education, a basic understanding of mathematics is necessary simply because it builds brains. A person develops abstract thinking, he can better look at a task, break it into some parts, understand how to approach it, look for some new approaches to solving - this is important in any programming. There are still some completely basic things. For example, an assessment of the complexity of algorithms. It must be able to be carried out in any situation - no matter what program you write, you need to be able to evaluate it. And in advance, before you write the code, just to understand

**Roman Kashitsyn***Nizhny Novgorod. Programming - 11 years. Yandex is the year.*Like many of our colleagues in Nizhny Novgorod, he graduated from UNN to them. N.I. Lobachevsky. Before Yandex, he developed insurance, information security, and media server management systems. Worked on software in telecommunications, workstations, portals. We are involved in the modernization of the back office of the directory of organizations.

Such questions are often asked by well-known good programmers. I think math is useful, but not necessary. It is very useful to know it, especially if you write, for example, on Haskell. Many well-known programmers did not have a professional education in mathematics and wrote very good programs. Rather, programming is even sometimes such a linguistic job; many programmers were linguists, for example. But, on the other hand, math sometimes helps a lot. Especially if you write some kind of application related to graphics. There, without high mathematical abstractions, it is very bad. Matrices, transformations, quaternions and all sorts of such things are very necessary.

**Elena Bunina***Moscow. Yandex is 7 years old.*Director of the computer science department at the School of Data Analysis, HR Director of Yandex, professor at the Department of Higher Algebra, Faculty of Mechanics and Mathematics, Moscow State University M.V. Lomonosov, deputy head of the department "Data Analysis" MIPT. Doctor of physical and mathematical sciences. The theme of her doctoral dissertation is “Automorphisms and elementary equivalence of Chevalley groups and other derived structures”.

From my point of view, there are different programmers: those who simply code for 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 . Moreover, different aspects. Sometimes you can’t even imagine in advance what kind of mathematics they will need. But certainly, those who deal with machine learning should know the math, should have a good command of algorithms, and knowledge of statistics is very important for them.

**Alexey Volokhovich***Nizhny Novgorod. Programming - 25 years. In Yandex - 8 months.*Lyosha is the head of the Yandex development office in Nizhny Novgorod. 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 involved in the development and program management of mobile devices.

It’s important for a programmer to know mathematics, because the tasks that he solves are very often associated with knowledge of basic mathematical concepts. Writing a code does not mean putting some letters, using some operators, functions, etc., which are described in KPI. You can write a code that will not be able to fly up later, or if it flies, then after that it will fall so that everything under it falls apart. Therefore, laying beautiful solutions at the very beginning of system design is the basis of the foundations. In order to get this beautiful solution, you must have basic fundamental knowledge, understand what is beauty, 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 for 18 years. In Yandex - 5 years.*You could see Misha 's lecture on how mathematics helps Yandex to earn. A very large part of his activity is working in our academic programs. He teaches at the School of Data Analysis, participates in the creation of a training program at the Faculty of Computer Science of HSE and Yandex. Twice won medals at the ACM ICPC as part of the team of Moscow State University. M.V. 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, are partly mathematics. We still believe that all self-respecting developers should know the algorithms at some basic level, and in general, in Yandex, at the interviews, in my opinion, everyone is asked about algorithmic problems. Further already depends on the direction of activity. If a person develops something infrastructural, then he can go deep into systemic things. It also has its own math, but I don’t understand much about it. Functional languages are generally something over which a person who does not know mathematics is puzzling, and some algebraists simply grasp everything on the fly. Well, of course

**Andrey Gulin***Programs for 25 years. Yandex is 9 years old.*He came to Yandex as a C ++ programmer. The first task was to redo the format of the inverted index in order to record information about the exact form of the word in the documents (only the lemma was stored before). One of the main creators of Matrixnet , our machine learning technology. Now runs the ranking service. If Knut had not written his three-volume, this work would have been worth giving to Andrei. Andrei himself, when asked what he was doing at Yandex, replied: “I work at a computer and do all kinds of things so that everyone is happy.”

Of course, you need to know the math. Here the colleagues are laughing, you are asking such an awkward question. But it’s not very clear whether you can’t know the math with our general education system. Already in the first grade everyone is taught to fold, and this is a skill that is necessary and which we use constantly. Mathematics is not limited to, as we know, arithmetic - it has many sections with greater or lesser utility. 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 nontrivial. For example, the theory of probability, and I would like it to be known to as many people as possible. Because it is about as useful as regular arithmetic. The first gives everyone the opportunity to calculate how much money you need to pay for lunch and whether they will be enough until the end 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 they will not cancel the visa and we will be able to go on vacation this year. For generally pressing solutions, it is entirely possible to apply the theory of probabilities in full. 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 that ever happens. For generally pressing solutions, it is entirely possible to apply the theory of probabilities in full. 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 that ever happens. For generally pressing solutions, it is entirely possible to apply the theory of probabilities in full. 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 that ever 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 do not know it, you will study it. The only thing needed is to be able to learn new areas. Without this ability to say that you want to do something new in your life is impossible. Machine learning was new recently, so everyone who worked on it had this skill. Learning machine learning is a lot easier right now than it was 10 years ago, because many books have been written, there are many courses. Accordingly, if you want to engage not in machine learning, which almost everything is already engaged in, but with something completely new, you need to be able to study new areas and choose those areas that are really needed.

Opinions about mathematics and programming in Yandex, in fact, are much greater. 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, those who do not have their own tasks in the other. What do you think? Did it ever bother you that you skipped matan? Or does mathematics help you every day?