Насколько программисту нужно знать математику? Что думают в Яндексе
Почти в каждой школе в кабинете математики висит табличка с высказыванием Ломоносова: «Математику уже затем учить надо, что она ум в порядок приводит». Многим из тех, кто не понимает, что такое программирование, кажется, что писать код — это то же самое, что решать математические задачи, а все программисты — обязательно математики. Но как все обстоит на самом деле? Насколько помогает знание математики в решении практических задач?
Наконец-то мы добрались до одной из самых острых тем и задали нашим коллегам в Яндексе вопрос: «Нужно ли программисту знать математику?»
Под катом, как всегда, полная текстовая версия. Михаил Парахин Москва. Программирует 24 года. В Яндексе — 9 месяцев.
После окончания МИФИ начал работать в ЗАО НТЦ «Модуль». В 90-х это было почти единственное место в Москве, где занимались системами автоматического обучения. Потом ушел в компанию Parascript, которая фактически является монополистом в области распознавания рукописного и печатного текста. Долгие годы работал в США. Последние семь лет — в Microsoft, пять из которых возглавлял в Bing подразделение мультимедийных поисковых сервисов. Весной пришёл в Яндекс директором по поисковым технологиям.
Григорий bobuk Бакунов Москва. Программирует 25 лет. В Яндексе — 10 лет.
Когда-то пришёл работать системным администратором, а сейчас — директор по распространению технологий.
Антон pg83 Самохвалов Москва. Программирует 18 лет. В Яндексе — 9 лет.
Пришёл в Маркет программистом на C++. Работал над самыми разными задачами сервиса. Через несколько лет перешёл в поиск, где занялся надежностью и производительностью runtime поиска. Сейчас занимается системой сборки, которая позволит собирать всю нашу кодовую базу за несколько минут на большом распределенном кластере.
Андрей styskin Стыскин Москва. Программирует 18 лет. В Яндексе — 9 лет.
Пришёл в Яндекс разработчиком на Java в группу поиска Маркета. Занимался классификацией товарных текстов и извлечением фактов из товарных описаний. Так началось его увлечение поиском и машинным обучением. Вне работы Андрей делал различные IR-игрушки: генератор стихов на языковых моделях, робота для прокачки социальных сетей. Сейчас Андрей руководит отделом ранжирования, в котором работает команда почти из 200 человек.
Анатолий anatolix Орлов Программирует 25 лет. В Яндексе — 9 лет.
Первые два года писал Маркет. Долгое время занимался поиском — в основном его производительностью, а потом и всем остальным. Сейчас занимается разными проектами в области скорости, архитектуры и т.д. Заместитель руководителя направления поисковых сервисов. Входит в 2% людей, которые заканчивают курсы на Coursera.
Степан Кольцов Москва. Программирует 10 лет. В Яндексе — 7 лет.
Старший разработчик в службе разработки систем хранения и обработки данных. Стёпа из тех сотрудников Яндекса, которые уходили, но потом возвращались. Сейчас работает над системами мониторинга в поиске.
Андрей Мищенко Москва. Программирует 24 года. В Яндексе — 9 лет.
Пришёл в Яндекс разработчиком на C++, долго был руководителем разработки Поиска по блогам и писал на Perl. Андрей — кандидат физико-математических наук. Сейчас работает с Андреем Гулиным над улучшением алгоритмов машинного обучения в поиске.
Смотря какие у программиста цели. Для решения некоторых задач нужно знать математику лучше, чем некоторые ученые, а для других она совершенно не нужна. Если ты занимаешься инфраструктурными, инженерными задачами, то тебе нужны совсем другие умения. Есть задачи, в которых гуманитарное образование тебе даже больше поможет, чем фундаментальное математическое. Особенно там, где ты больше всего работаешь с пользователями. Если ты разрабатываешь интерфейс, который должен быть удобен среднестатистическому пользователю, глубокое математическое образование будет тебе только мешать. Интерфейс будет очень стройнымм, но при этом совершенно неудобным. Ты должен уметь срезать углы, делать его не таким стройным и более гладким, чтобы он был более интуитивный.
Нужна математика в системном программировании на нижнем уровне, в каких-то хайтечных задачах. В том же машинное обучении, конечно, сплошная математика и статистика. Наверняка в криптографии тоже нужна очень глубокая математика. Таких областей хватает.
Александр sadovsky Садовский Москва. В Яндексе — 10 лет.
Пришёл в Яндекс работать над проектами, связанными с поиском. Под его руководством были созданы поиск по блогам, Яндекс.XML, запущены новый алгоритм ранжирования и робот для оперативного индексирования свежей информации, создана служба асессоров и начато измерение качества поиска. Саша — автор множества публикаций в научных и популярных СМИ об алгоритмах поисковых систем и продвижении сайтов в интернете.
Артём breqwas Киреев Программирует 12 лет. В Яндексе — 8 лет.
В Яндекс позвали за то, что парсил данные из Поиска по блогам. Позвали не только поругать, но и на работу. Много лет делал Поиск по блогам, в частности был основным разработчиком подсервиса Яндекс.Пульс. Сейчас разрабатывает Рекламную сеть, один из самых критичных в смысле отказоустойчивости сервисов.
Сергей svv Вавинов Москва. Программирует 27 лет. В Яндексе — 6 лет.
Пришёл в Яндекс разработчиком в Яндекс.Видео. Был главным в разработке Музыки, потом — в службе медиасервисов. Сделал несколько проектов для Яндекс.Диска. Сейчас — руководитель группы технологий работы с большими данными. Одна из задач, над которой работает Сергей, — проекты Яндекса для ЦЕРНа.
Роман Кашицын Нижний Новгород. Программирует — 11 лет. В Яндексе — год.
Как и многие наши коллеги в Нижнем Новгороде, окончил ННГУ им. Н.И. Лобачевского. До Яндекса разрабатывал системы страхования, информационной безопасности, управления медиасерверами. Работал над ПО в телекоммуникациях, автоматизированными рабочими местами, порталами. У нас участвует в модернизации бэкофиса справочника организаций.
Елена Бунина Москва. В Яндексе — 7 лет.
Директор отделения computer science в Школе анализа данных, HR-директор Яндекса, профессор кафедры высшей алгебры механико-математического факультета МГУ им. М.В. Ломоносова, заместитель заведующего кафедрой «Анализ данных» МФТИ. Доктор физико-математических наук. Тема её докторской диссертации «Автоморфизмы и элементарная эквивалентность групп Шевалле и других производных структур».
Алексей Волохович Нижний Новгород. Программирует — 25 лет. В Яндексе — 8 месяцев.
Лёша — руководитель нижегородского офиса разработки Яндекса. Окончил Нижегородский технический университет им Р. Е. Алексеева. Сейчас преподаёт там дискретную математику. Кандидат технических наук. До Яндекса занимался разработкой и программным менеджментом мобильных устройств.
Михаил mlevin Левин Москва. Программирует 18 лет. В Яндексе — 5 лет.
Вы могли видеть лекцию Миши о том, как математика помогает Яндексу зарабатывать. Очень большая часть его деятельности — работа в наших академических программах. Он преподает в Школе анализа данных, участвует в создании программы обучения на факультете Computer Science Вышки и Яндекса. Дважды завоевывал медали на ACM ICPC в составе команды МГУ им. М.В. Ломоносова.
Андрей Гулин Программирует 25 лет. В Яндексе — 9 лет.
Пришёл в Яндекс программистом на C++. Первой задачей было переделать формат инвертированного индекса, чтобы записать в него информацию о точной форме слова в документах (до этого хранилась только лемма). Один из главных создателей Матрикснета, нашей технологии машинного обучения. Сейчас руководит службой ранжирования. Если бы Кнут не написал свой трехтомник, эту работу стоило бы отдать Андрею. Сам Андрей на вопрос, чем он занимается в Яндексе, ответил: «Я работаю за компьютером и делаю всякие штуки, чтобы всем было хорошо».
Конечно, знать математику необходимо. Тут коллеги смеются, настолько несуразный вопрос вы задаете. Но не очень понятно, можно ли не знать математику с нашей системой общего образования. Уже в первом классе всех обучают складывать, и это навык, который необходим и которым мы пользуемся постоянно. Математика не исчерпывается, как мы знаем, арифметикой — в ней есть много разделов с большей или меньшей полезностью. Некоторые изучают дифференциальную геометрию. Другие — сложные разделы математики, которые редко бывают полезны. В то же время есть разделы математики, которые считаются нетривиальными. Например, теория вероятностей, и хотелось бы, чтобы её знало как можно больше людей. Потому что она примерно так же полезна, как и обычная арифметика. Первая дает всем возможность посчитать, сколько денег нужно заплатить за обед и хватит ли их до конца месяца, а вторая позволит нам посчитать гораздо более интересные вещи. Например, какие у нас шансы на то, что нам удастся устроиться на новое место работы с большей зарплатой, что не отменят визы и мы сможем уехать в отпуск в этом году. Для в общем-то насущных решений вполне себе можно применять теорию вероятностей в полном объеме. Соответственно знать математику необходимо, и вообще, как мы знаем, математика — царица наук. И одна из самых абстрактных наук, которая вообще бывает.
Машинное обучение — всего лишь другое название статистики. Если вы занимаетесь статистикой, но с применением компьютеров, то вы занимаетесь машинным обучением. Математику вам придется ее знать, и даже если вы ее не знаете, вы ее изучите. Единственное, что необходимо, — уметь изучать новые области. Без этого навыка говорить, что вы хотите заниматься чем-то новым в своей жизни, невозможно. Машинное обучение было новым недавно, поэтому все, кто им занимался, имели этот навык. Прямо сейчас изучать машинное обучение намного проще, чем это было 10 лет назад, потому что написали много книжек, есть много курсов. Соответственно, если вы хотите заниматься не машинным обучением, которым занимаются уже примерно все, а чем-то совершенно новым, нужно уметь изучать новые области и выбирать те области, которые действительно нужны.
Мнений по поводу математики и программирования в Яндексе, на самом деле, гораздо больше. Здесь мы постарались показать, что в принципе они разные. И даже когда кто-то в одной части Яндекса считает, что без глубоких математических знаний невозможно работать, в другой свои задачи решают и те, у кого их нет. А что думаете вы? Мешало ли вам когда-нибудь то, что вы прогуливали матан? Или же математика вам каждый день помогает?