user_of_toster
@user_of_toster

Как сильно пересекаются олимпиадное программирование и разработка?

Как сильно знания, полученные при решении олимпиадных задач \ задач спортивного программирования (topcoder \ codeforces) помогают в решении прикладных задач на работе и на реальных проектах?

Особенно интересует мнение Илья Николаевский
  • Вопрос задан
  • 301 просмотр
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, гуглер, экс-олимпиадник.
Решение олимпиадных задач прежде всего учит решать задачи, и только потом алгоритмы и структуры данных. Получается некоторый склад ума, или подход к задачам, если хотите. Это очень помогает собрать мысли в кучу, формализовать задачу и решить ее, даже если там не нужны хитрые алгоритмы.

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

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

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

Для баланса укажу также и минус олимпиадников - это привычка писать ужасно неподдерживаемый код. Но это легко лечится за несколько недель. Особенно, если в проекте работает код-ревью.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
robinzonejob
@robinzonejob
разработчик .NET
Решение задач, особенно сложных, развивает мышление и не дает закостенеть и облениться мозгу.
На реальных проектах ленивые мозги часто норовят прибегнуть, например, к готовым решениям или копипасте, которая не всегда идеально подходит или бывает избыточна, а когда мозги в тонусе - таких соблазнов не возникает и любая задача - новый вызов.
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
Абсолютно никак не помогают.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Когда проект содержит сложные ("тяжёлые") мат.вычисления при обработке данных (поиск, сортировка, кластеризация, хеширование, обход "дерева" и т.д.), то практика (именно опыт, а не знания!) на олимпиадных/спорт-задачах помогает наиболее оптимальным способом закодировать (запрограммировать) логику обработки данных.

Если проекты не содержат обработку сложных структур данных (сайты на CMS, блог на WP, и т.д.), то разумеется: олимпиадные навыки здесь никак не помогут.
Ответ написан
@Andy_U
Я бы сказал, что реальные успехи в олимпиадном программировании коррелируют с успешностью человека, как программиста. Но просто их решать, чтобы набить руку, смысла особого не вижу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
iChar Санкт-Петербург
от 120 000 до 180 000 ₽
Яндекс Москва
от 100 000 до 300 000 ₽
23 янв. 2021, в 18:06
5000 руб./за проект
23 янв. 2021, в 17:51
150000 руб./за проект