Сколько Математики Нужно Знать Программисту? Что Думают В Яндексе

Почти в каждой школе в кабинете математики висит табличка с высказыванием Ломоносова: «Математику надо учить потом, потому что она приводит ум в порядок».

Многим из тех, кто не понимает, что такое программирование, кажется, что написание кода — это то же самое, что решение математических задач, а все программисты обязательно математики.

Но как это на самом деле? Насколько полезно знание математики при решении практических задач? Наконец мы добрались до одной из самых актуальных тем и задали коллегам из Яндекса вопрос: «Нужно ли программисту знать математикуЭ» Ниже, как всегда, полная текстовая версия.

Михаил Парахин Москва.

Программирую 24 года.

В Яндексе - 9 месяцев.

После окончания МИФИ начал работать в ЗАО НТЦ «Модуль».

В 90-е годы это было чуть ли не единственное место в Москве, где работали системы автоматического обучения.

Затем он перешел в компанию Parascript, которая фактически является монополистом в области распознавания рукописного и печатного текста.

Он много лет работал в США.

Последние семь лет — в Microsoft, пять из которых возглавлял подразделение сервисов мультимедийного поиска в Bing. Весной он пришел в «Яндекс» на должность директора по поисковым технологиям.



Сколько математики нужно знать программисту? Что думают в Яндексе

Вы должны знать математику.

И обязательно нужно знать хотя бы базовую часть за первые два года обучения в институте.

Каким-то образом за свою жизнь мне удалось выучить много статистики, и, поскольку я систематически занимался автоматическим обучением, мне пришлось изучить много специальной математики.

В общем, если вы не знаете математику в рамках школьно-институтского курса, то жизнь программиста вам не очень понравится.

Грегори бобук Бакунов Москва.

Программирую 25 лет. В Яндексе – 10 лет. Когда-то я пришел работать системным администратором, а сейчас являюсь директором по распространению технологий.



Сколько математики нужно знать программисту? Что думают в Яндексе

Как вы думаете, водитель автомобиля должен уметь водить машину? Мне кажется, что это необходимо.

Это настоящая человеческая потребность.

Нужно иметь достаточно глубокое понимание того, как работают даже такие тривиальные вещи, как системная библиотека.

И, как ни странно, для этого еще нужна математика.

Есть определенный класс программистов, которым это, вероятно, не особо нужно.

Можно провести простое сравнение.

Есть люди, которые рисуют картины – их называют художниками.

Есть люди, которые красят заборы – это маляры.

То же самое и с программистами: есть определенный класс программистов, которые создают что-то великое, а есть люди, которые красят заборы.

И в конце концов, их во многом отличает знание математики, умение тонко и детально понимать то, что они пишут. Дальше выбор за человеком.

Или ты начинаешь заниматься математикой, и тогда у тебя есть шанс стать художником.

Или красишь заборы – это тоже хорошая профессия.

Антон стр.

83 Самохвалов Москва.

Программирование 18 лет. В Яндексе – 9 лет. Я пришел в Маркет как C++-программист. Выполнял различные сервисные задачи.

Через несколько лет он перешел в поиск, где работал над надежностью и производительностью поиска во время выполнения.

Сейчас работаю над системой сборки, которая позволит нам за несколько минут собрать всю нашу кодовую базу на большом распределенном кластере.



Сколько математики нужно знать программисту? Что думают в Яндексе

Вопрос в том, зачем ему знать математику? Для того чтобы объяснить компьютеру, что ему нужно делать, не нужно знать математику — нужно знать язык и уметь им пользоваться.

Но есть некоторые предметные области, где знание математики необходимо.

Если бы я, например, писал Matrixnet или работал с ДНК, вполне возможно, что мне пришлось бы знать немного математики.

А вот в программировании — нет. Я не могу вспомнить, когда мои знания математического анализа пригодились мне при написании кода.

Но само знание математики заставляет людей писать более качественный код. Все лучшие программисты, которых я знаю, обычно заканчивали какой-нибудь механико-математический факультет, а не компьютерный.

Видимо, изучение математики как-то корректирует мозг, и ты начинаешь лучше программировать.

Андрей тыскин Стыскин Москва.

Программирование 18 лет. В Яндексе – 9 лет. В Яндекс я пришел Java-разработчиком в группу поиска Маркета.

Занимался классификацией текстов товаров и извлечением фактов из описаний товаров.

Так началось его увлечение поиском и машинным обучением.

Вне работы Андрей мастерил различные ИК-игрушки: генератор стихов на основе языковых моделей, робот для обновления социальных сетей.

Сейчас Андрей возглавляет отдел рейтингов, в команде которого работает почти 200 человек.



Сколько математики нужно знать программисту? Что думают в Яндексе

Чтобы быть программистом в Яндексе, человеку нужно хорошо знать математику.

Можно сказать, это часть нашего корпоративного духа.

Если кто-то не может решить сложную задачу на собеседовании, то в Яндексе его никто серьезно не воспримет. По крайней мере, так это работает в поиске.

Мне кажется, это самоидентификация, механизм, с помощью которого можно понять, что человек мыслит теми же категориями, говорит на одном языке с вами, чтобы можно было работать с ним в команде.

Я знаю много хороших разработчиков, которые не смогли выполнить ни одного проекта в Яндексе, но прекрасно справились бы с аналогичными в других структурах.

Например, «Яндекс» тоже занимается инфраструктурными проектами, которые можно было бы сделать в «Люксофт», но мы бы просто никогда не взяли на работу таких людей.

Анатолий анатоликс Орлов Программирую 25 лет. В Яндексе – 9 лет. Первые два года были написаны Маркетом.

Долгое время занимался поиском - в основном его производительность, а потом все остальное.

В настоящее время работаю над различными проектами в области скорости, архитектуры и т.д. Заместитель руководителя службы поиска.

Среди 2% людей, прошедших курсы на Coursera.

Сколько математики нужно знать программисту? Что думают в Яндексе

Математика — это большая область знаний, где есть части, которые нужны и не нужны в программировании.

Если вопрос в том, есть ли что-то в математике, что необходимо знать программисту, то да, конечно.

А если это звучит так: «Есть ли в математике что-то, что программисту не нужно знатьЭ» - тогда ответ тоже будет: «Да, их много».

Например, программисту очень нужен дискретный диск, но мне за много лет матан в программировании ни разу не понадобился.

Степан Кольцов Москва.

Программирование 10 лет. В Яндексе – 7 лет. Старший разработчик службы разработки систем хранения и обработки данных.

Степа — один из тех сотрудников «Яндекса», которые ушли, но потом вернулись.

В настоящее время занимаюсь поисковыми системами мониторинга.



Сколько математики нужно знать программисту? Что думают в Яндексе

Зависит от того, что делает человек.

Если он пишет что-то высокотехнологичное, то он обязательно должен знать математику.

Чем ближе человек, условно говоря, к поиску Яндекса, в котором у нас самые высокотехнологичные задачи, тем лучше ему нужно знать математику.

Если ему ближе вполне прикладные задачи (например, он пишет программы для банка по оптимизации работы бухгалтерии), то математику он, конечно, может и не знать.

Мне очень нравится Яндекс, потому что у нас есть еще много мест, где он еще нужен.

Андрей Мищенко Москва.

Программирую 24 года.

В Яндексе – 9 лет. В Яндекс он пришел C++-разработчиком, долгое время был руководителем разработки поиска по блогам и писал на Perl. Андрей – кандидат физико-математических наук.

Сейчас работаю с Андреем Гулиным над улучшением алгоритмов машинного обучения в поиске.



Сколько математики нужно знать программисту? Что думают в Яндексе

Это зависит от целей программиста.

Для решения некоторых задач нужно знать математику лучше, чем некоторые учёные, а для других это совершенно не нужно.

Если вы занимаетесь инфраструктурными и инженерными задачами, то вам нужны совершенно другие навыки.

Есть задачи, в которых гуманитарное образование поможет вам даже больше, чем фундаментальное математическое образование.

Особенно там, где вы больше всего работаете с пользователями.

Если вы разрабатываете интерфейс, который должен быть удобен для обычного пользователя, глубокое математическое образование вам только помешает. Интерфейс будет очень тонким, но в то же время совершенно неудобным.

Вы должны уметь срезать углы, делать его менее тонким и более гладким, чтобы он был более интуитивным.

Математика нужна в системном программировании на нижнем уровне, в каких-то высокотехнологичных задачах.

Машинное обучение, конечно же, связано с математикой и статистикой.

Конечно, криптография также требует очень глубокой математики.

Таких территорий предостаточно.

Александр садовский Садовский Москва.

В Яндексе – 10 лет. Пришел в Яндекс работать над проектами, связанными с поиском.

Под его руководством были созданы поиск по блогу , Яндекс.

XML , запущен новый алгоритм ранжирования И робот Для быстрого индексирования самой свежей информации создана служба оценщиков и начато измерение качества поиска.

Саша — автор многочисленных публикаций в научных и популярных СМИ об алгоритмах поисковых систем и продвижении сайтов в Интернете.



Сколько математики нужно знать программисту? Что думают в Яндексе

По моему мнению, математика — очень мощная вещь, которая может облегчить решение многих задач программирования.

И даже если программист не знает ее на уровне математиков, он должен обладать базовыми знаниями высшей математики, чтобы общаться с теми, кто ее понимает, и уметь воспринимать информацию, которую передает сам математик.

Когда я работал в лаборатории, у нас был человек, который очень хорошо разбирался в математике, алгоритмах, оптимизации и мог построить хорошую математическую модель.

Но если программист всего этого не понимает и тупо программирует один в один, как ему сказали, то результат получается не очень.

Хорошо, когда два человека находят точки пересечения.

Математика позволяет оценить в уме эффективность алгоритмов, время их выполнения, а также позволяет лучше описывать объекты реального мира.

В нашей области без математики невозможно создать такие алгоритмы, как Matrixnet.

Артём завтрак Киреев Программирование 12 лет. В Яндексе – 8 лет. Меня позвали в Яндекс для парсинга данных из Поиска по блогам.

Меня позвали не только поругаться, но и на работу.

Я много лет занимался поиском по блогам, в частности был основным разработчиком подсервиса Яндекс.

Пульс.

Сейчас разрабатываю Рекламную сеть, один из самых критичных сервисов с точки зрения отказоустойчивости.



Сколько математики нужно знать программисту? Что думают в Яндексе

Я совсем не знаю математику.

Более того, это очень странная ситуация, потому что все, кто сидит вокруг меня, это прекрасно знают. Поэтому, когда они начинают говорить какие-то умные вещи или когда у них на партах исписаны бумажки ужасным почерком даже не знаю чем, мне становится очень стыдно.

Но я не знаю математики, и это нормально.

Абсолютно ничего хорошего, но без математики есть много задач, в которых ее знать не обязательно, серьезная информатика, алгоритмы и все такое.

Существует множество прикладных задач, в которых это не требуется.

Сергей свв Вавинов Москва.

Программирую 27 лет. В Яндексе – 6 лет. Пришёл в Яндекс разработчиком в Яндекс.

Видео.

Он был главным в развитии Музыки, затем в отделе медиауслуг.

Сделал несколько проектов для Яндекс.

Диска.

Сейчас он возглавляет группу по технологиям больших данных.

Одна из задач, над которой работает Сергей, — проекты Яндекса для ЦЕРН.



Сколько математики нужно знать программисту? Что думают в Яндексе

Программисту необходимо знать математику.

Конечно, есть разные виды программирования, разные проекты, какие-то требуют больше математики, какие-то меньше, какие-то требуют какой-то специальной математики.

Но базовое образование, базовое понимание математики необходимы просто потому, что они формируют мозг.

У человека развивается абстрактное мышление, он может лучше смотреть на проблему, разбивать ее на части, понимать, как к ней подойти, искать какие-то новые подходы к ее решению — это важно в любом программировании.

Есть и очень простые вещи.

Например, оценка сложности алгоритмов.

Это нужно уметь осуществить в любой ситуации — какую бы программу вы ни написали, ее нужно уметь оценить.

Причем заранее, прежде чем писать код, чтобы просто понять, нужно ли вам использовать этот алгоритм или вообще взять какой-то другой, чтобы он был более эффективным.

Роман Кашицын Нижний Новгород. Программирование – 11 лет. В Яндексе - год. Как и многие наши нижегородские коллеги, он окончил Нижегородский государственный университет. Н.

И.

Лобачевский.

До «Яндекса» он занимался разработкой систем страхования, информационной безопасности и управления медиа-серверами.

Работал над программным обеспечением в сфере телекоммуникаций, автоматизированных рабочих станций и порталов.

Участвуем в модернизации бэк-офиса справочника организаций.



Сколько математики нужно знать программисту? Что думают в Яндексе

Такие вопросы часто задают известным хорошим программистам.

Я считаю, что математика полезна, но не обязательна.

Это очень полезно знать, особенно если вы пишете, например, на Haskell. Многие известные программисты не имели профессионального математического образования и писали очень хорошие программы.

Скорее, программирование иногда является даже такой лингвистической работой; например, многие программисты были лингвистами.

Но, с другой стороны, математика иногда очень помогает. Особенно если вы пишете какие-то приложения, связанные с графикой.

Без высоких математических абстракций там очень плохо.

Матрицы, преобразования, кватернионы и всякие подобные вещи очень нужны.

Елена Бунина Москва.

В Яндексе – 7 лет. Директор кафедры информатики Школы анализа данных, директор по персоналу Яндекса, профессор кафедры высшей алгебры механико-математического факультета МГУ.

М.

В.

Ломоносова, заместителя заведующего кафедрой анализа данных МФТИ.

Доктор физико-математических наук.

Тема ее докторской диссертации — «Автоморфизмы и элементарная эквивалентность групп Шевалле и других производных структур».



Сколько математики нужно знать программисту? Что думают в Яндексе

С моей точки зрения, есть разные программисты: те, кто просто что-то кодирует по заданным алгоритмам и может обойтись без математики, и все те, кто анализирует большие данные и те вещи, которые у нас есть в Яндексе — им нужна математика.

Более того, есть разные аспекты.

Иногда даже заранее не представляешь, какая математика им понадобится.

Но, безусловно, те, кто занимается машинным обучением, должны знать математику, должны хорошо разбираться в алгоритмах, и для них очень важно знание статистики.

Алексей Волохович Нижний Новгород. Программирование – 25 лет. В Яндексе - 8 месяцев.

Лёша — руководитель нижегородского офиса разработки Яндекса.

Окончил Нижегородский технический университет имени Р.

Е.

Алексеева.

Сейчас он преподает там дискретную математику.

Кандидат технических наук.

До «Яндекса» занимался разработкой и управлением ПО мобильных устройств.



Сколько математики нужно знать программисту? Что думают в Яндексе

В принципе, программисту важно знать математику, поскольку задачи, которые он решает, очень часто связаны со знанием основных математических понятий.

Написание кода не означает расстановку каких-то букв, использование каких-то операторов, функций и т.п.

, которые описаны в KPI. Можно написать код, который потом не сможет взлететь, а если и полетит, то упадет так, что все под ним развалится.

Поэтому закладка красивых решений в самом начале проектирования системы — это основа фундамента.

Для того, чтобы получить это красивое решение, необходимо обладать базовыми фундаментальными знаниями, понимать, что такое красота, а что не красота, как увидеть, что это решение оптимально для конкретного круга задач, которые решает ваше программное обеспечение.

Майкл млевин Левин Москва.

Программирование 18 лет. В Яндексе – 5 лет. Вы могли видеть Лекция Миши о том, как математика помогает Яндексу зарабатывать.

Очень большая часть его деятельности связана с нашими академическими программами.

Преподает в Школе анализа данных и участвует в создании программы обучения на факультете компьютерных наук ВШ? и Яндекс.

Дважды выигрывал медали на ACM ICPC в составе команды МГУ.

М.

В.

Ломоносов.



Сколько математики нужно знать программисту? Что думают в Яндексе

Если вы хотите заниматься интересной работой, то вам нужно достаточно хорошо знать математику.

Есть определенные разделы (например, алгоритмы), которые требуют достаточно глубоких знаний математики и в целом являются отчасти математическими.

Мы по-прежнему считаем, что все уважающие себя разработчики должны знать алгоритмы на каком-то базовом уровне, и вообще в Яндексе на собеседованиях, по-моему, всех спрашивают об алгоритмических проблемах.

Дальше все зависит от направления деятельности.

Если человек развивает что-то инфраструктурное, то он может углубиться в системные вещи.

Там тоже есть своя математика, но я в ней мало что понимаю.

Функциональные языки — это вообще то, над чем ломает голову человек, не знающий математики, а некоторые алгебраисты просто все схватывают на лету.

Ну понятно, что новые области машинного обучения - это вообще чистая математика и там, конечно, можно просто пользоваться инструментами, ничего в них не понимая, но тогда есть риск совершить глобальную ошибку, из-за которой ничего не получится.

вообще, очень высока.

Андрей Гулин Программирую 25 лет. В Яндексе – 9 лет. Я пришел в Яндекс программистом на C++.

Первой задачей было перепроектировать формат инвертированного индекса, чтобы записывать в документы информацию о точной форме слова (ранее сохранялась только лемма).

Один из главных создателей Матрикснет , наша технология машинного обучения.

Сейчас он руководит службой рейтингов.

Если бы Кнут не написал свой трехтомник, эту работу стоило бы подарить Андрею.

Сам Андрей на вопрос, чем он занимается в «Яндексе», ответил: «Я работаю за компьютером и делаю всякие вещи, чтобы всем было хорошо».



Сколько математики нужно знать программисту? Что думают в Яндексе

Конечно, нужно знать математику.

Вот коллеги смеются, такой абсурдный вопрос вы задаете.

Но не очень понятно, можно ли при нашей системе общего образования не знать математику.

Уже в первом классе всех учат складывать, а это навык, который необходим и которым мы пользуемся постоянно.

Математика, как мы знаем, не ограничивается арифметикой — в ней есть множество разделов, обладающих той или иной полезностью.

Некоторые изучают дифференциальную геометрию.

Другие представляют собой сложные разделы математики, которые редко бывают полезны.

В то же время существуют разделы математики, которые считаются нетривиальными.

Например, теория вероятностей, и мне бы хотелось, чтобы ее узнало как можно больше людей.

Потому что это так же полезно, как обычная арифметика.

Первый дает каждому возможность посчитать, сколько денег нужно заплатить за обед и хватит ли его до конца месяца, а второй позволяет посчитать гораздо более интересные вещи.

Например, каковы наши шансы, что мы сможем устроиться на новую работу с более высокой зарплатой, что визы не отменят и мы сможем поехать в отпуск в этом году.

Для вообще срочных решений вполне возможно применить теорию вероятностей в полной мере.

Соответственно, необходимо знать математику, и вообще, как мы знаем, математика – царица наук.

И одна из самых абстрактных наук, которые существуют. Машинное обучение — это просто другое название статистики.

Если вы занимаетесь статистикой, но используете компьютеры, то вы занимаетесь машинным обучением.

Математику вам придется знать, и даже если вы ее не знаете, вы ее выучите.

Единственное, что требуется, — это уметь исследовать новые области.

Без этого навыка невозможно сказать, что вы хотите сделать что-то новое в своей жизни.

Машинное обучение было недавно новым явлением, поэтому каждый, кто им занимался, имел этот навык.

Сейчас изучать машинное обучение намного проще, чем это было 10 лет назад, потому что написано много книг, есть много курсов.

Соответственно, если вы хотите заниматься не машинным обучением, которым уже занимаются практически все, а чем-то совершенно новым, вам нужно уметь изучать новые направления и выбирать те направления, которые действительно нужны.

На самом деле мнений о математике и программировании в Яндексе намного больше.

Здесь мы попытались показать, что в принципе они различны.

И даже когда кто-то в одной части Яндекса считает, что без глубоких математических знаний невозможно работать, в другой части Яндекса те, у кого их нет, тоже решают свои проблемы.

Что вы думаете? Вас когда-нибудь беспокоило то, что вы прогуливали школу? Или математика помогает вам каждый день? Теги: #математика #сотрудники Яндекса

Вместе с данным постом часто просматривают: