Написать пост

Заняться теорией и олимпиадами или пойти на работу в IT-компанию? — Эксперты дают советы начинающим программистам

Аватар Типичный программист

Обложка поста Заняться теорией и олимпиадами или пойти на работу в IT-компанию? — Эксперты дают советы начинающим программистам

Читатель прислал нам несколько вопросов: «Правда ли, что успехи в олимпиадах по программированию (математике) негативно коррелируют с работой в компании? Что лучше: работа в IT-компании или теоретические исследования в области Computer Science?» Мы, конечно же, передали их экспертам и собрали для вас ответы.

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

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

И, кстати, как организатор крупнейших в России чемпионатов и олимпиад по программированию, могу сказать, что их задача – вовсе не подготовка ребят к будущей успешной работе в компании (этим мы занимаемся в наших образовательных проектах: Технопарке, Техносфере и Технотреке), а привлечение внимания к профессии, стимулирование интереса к работе программистом. Обучения они не заменяют.

Рейтинг полезности ответа:
16.1

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

Компании, по большому счету, совершенно не интересно как и где эти навыки были получены. Будь они результатом участия в олимпиадах, учебы в вузе, самообразования или успешной работы в другой компании – всё едино, нормальный работодатель не страдает какими-то предубеждениями. В моем личном опыте была лишь одна компания, которая нанимала исключительно выпускников МГУ с красным дипломом. Не знаю, как эта компания себя чувствует сейчас. Возможно, уже никак.

Что лучше: работа в IT-компании или теоретические исследования в области Computer Science? Тут все зависит от человека. К примеру, я по натуре – инженер, а не ученый, то есть практик. Мне было бы сложно работать в каком-то условном НИИ, единственным продуктом которого являются кипы документов с теоретическими исследованиями без практического их применения. Кому-то наоборот может нравиться что-то открывать, но не придумывать, к чему бы эти открытия приложить.

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

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

Рейтинг полезности ответа:
23.6

Часто возникающая проблема при переходе из мира спортивного программирования в мир промышленного программирования — неумение писать читаемый и поддерживаемый код. Порой, при написании решения какой-нибудь олимпиадной задачки, ты не задумываешься о том, насколько хорошо твой код будет понятен другим людям, ведь чаще всего искать в нем баги будешь именно ты, а значит и код, скорее всего, ты будешь писать понятным для себя. Более того, олимпиадные задачи, как правило, должны писаться быстро, что также влияет на качество кода. Однако, когда ты попадаешь в большую команду с внедренной практикой code-review, тут же всплывет непонимание того, какой код хороший, а какой плохой, как надо и как не надо писать. И это не единственная проблема, с которой можно столкнуться при знакомстве с разработкой реального проекта. А вообще о корреляции между успехами в олимпиадах и успехами в промышленной разработке можно спорить долго и упорно, есть много положительных примеров, есть много отрицательных. Промышленная разработка или теория CS? Тут уж каждый для себя решает, что ему интереснее. Можно эти два занятия комбинировать, тут уже кто во что горазд.

Рейтинг полезности ответа:
16.0

У меня нет, конечно, полноценной статистики по этому вопросу. Но по опыту — корреляция если и есть (положительная или отрицательная), то достаточно слабая. Успешность практической работы в компании определяется множеством факторов, из которых умение быстро думать и решать нестандартные задачи (т.е. олимпиадные навыки) — далеко не самые важные. Очень важны умение общаться (с коллегами по команде, с клиентами), понимать бизнес-задачу, обязательность (пообещал – сделай) и другие. Олимпиадные «звёзды» не всегда это умеют.

Второй вопрос, конечно, на 100% субъективен. Всё зависит от ваших интересов. У большинства студентов такого вопроса не возникает вообще— больше интересует практика, чем теория. Если у вас такой вопрос возник – стоит глубже копнуть теоретическую Computer Science, там много интересных направлений. Возможно, вы обнаружите, что это «ваше». Определиться с этим лучше на 3–4 курсе.

Рейтинг полезности ответа:
3.2

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

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

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

Рейтинг полезности ответа:
6.4

Будущее Computer Science — это коммерчески обоснованные теоретические исследования, в перспективе приносящие пользу бизнесу. И наоборот, сложно себе представить будущее IT-компаний без теоретических исследований в Computer Science. Одно без другого не может существовать эффективно, поэтому к чему больше душа лежит, тем и нужно заниматься.

Рейтинг полезности ответа:
0.7

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

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

Рейтинг полезности ответа:
6.3
32889