Олимпиады по программированию — помогают ли они в реальной работе?

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

Денис Мухаметьянов

Денис Мухаметьянов, инженер-разработчик СКБ Контур

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

Начинать заниматься в 11 классе не поздно. Замечательный пример — человек, с которым в прошлом году мы вместе играли финал ACM ICPC. Он активно начал заниматься олимпиадами на 2 (!) курсе и добился очень даже неплохих результатов.

Михаил Адигеев

Михаил Адигеев, начальник отдела проектов ГК «ГЭНДАЛЬФ», доцент ЮФУ, эксперт международной олимпиады «IT-Планета»

Многое зависит от того, какой проект. Большинство (95%) проектов связаны с автоматизацией бизнес-процессов, графикой и т.п. В таких проектах олимпиадные навыки практически не играют роли.

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

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

Сергей Рогатнёв

Сергей Рогатнёв, руководитель группы разработки ПО, 2ГИС

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

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

Дмитрий Сошников

Дмитрий Сошников, технологический евангелист Microsoft, доцент МФТИ, МАИ, преподаватель детского лагеря JUNIO-R

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

Есть такое понятие – overqualification. Если вы будете слишком хорошо владеть теоретическими знаниями Computer Science, то вам будет скучно решать повседневные задачи, и полностью реализовать свой потенциал вы сможете только в крупных компаниях, типа Яндекс, Mail.ru, или тот же Microsoft. Поэтому круг интересных вам работодателей будет несколько уже, но и решаемые задачи будут намного интереснее и глобальнее.

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

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

Григорий Петров

Григорий Петров, технический евангелист VoxImplant

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

Станислав Протасов

Станислав Протасов, сооснователь и глава разработки компании Acronis

Отрывок из нашего интервью, Станислав отвечает на вопрос «правда ли, что успехи на олимпиадах по программированию (математике) негативно коррелируют с работой в компании? Много ли у вас в команде олимпиадников?»

Напрямую олимпиады не помогут. Так же, как и знание матанализа не поможет человеку писать программы на Java или Python. Но олимпиадное программирование, если хотите, это как спортивное самбо. Оно не гарантирует успеха в уличных драках, мало того, есть много примеров, когда спортсмены-самбисты были жестоко покалечены именно в уличных драках, потому что там нет правил: там могут ударить ножом и втроем накинуться на одного. Но спортсмен-самбист намного быстрее становится именно бойцом, начав изучать боевое самбо (или другое рукопашное единоборство), чем человек, который с попкорном смотрит в экран монитора. Поэтому относиться к этому нужно ровно так: олимпиадное программирование — это хороший способ улучшить свой уровень. Человеку, который этим занимается, овладеть новой областью компьютерной науки или способом программирования будет легче. Это полезная деятельность, ее не стоит избегать. Если человек профессионально работает в компании, делает продукты, продающиеся широко, это становится как хобби. Человек, который работает в компании, производящий продукты для резервного копирования, наверное, за несколько лет становится профессионалом мирового класса в этой области. И олимпиадное программирование, если он начнет в нём участвовать, вряд ли ему сильно поможет, чтобы он стал на голову выше своих коллег. Но это полезное хобби, которое развивает нужные навыки.

А вообще, удивительно, как люди отказываются учиться. Когда я был молодым, пропаганда была очень мощная: надо учиться, это полезно, знание — сила, невежество — тьма. Не понимаю, почему у ваших ребят могут возникать такие вопросы. Знания не бывают лишними. В конечном итоге жизнь устроена так, что если человек понимает что-то очень-очень глубоко, ему легче увидеть, как работает какая-то совершенно, казалось бы, несвязанная с ним область. Всё, что мы делаем, в конечном итоге похоже. Так, я пребывал в иллюзии по поводу строителей, пока не стал делать свой первый ремонт. Первый и последний. Я обнаружил, что работа строителей в квартире очень похожа на работу коллектива программистов. И мало того, что все те проблемы, с которыми мы сталкиваемся, у строителей стоят в полный рост. И там еще хуже. Потому что средний уровень строителя ниже среднего уровня программиста, с точки зрения образования и общей толковости. Они так же ошибаются, у них есть баги, бывают как хорошие, так и плохие проектные менеджеры. Если плохой – могут, образно, и унитаз на потолок прикрутить, а потом делать вид, что так и было. Поэтому знаний избегать не надо. Возможно, конкретно данное знание мне никогда не пригодится, но если я что-то понял, понял почему так, а не иначе, мне оно пригодится хотя бы в виде аналогии.