Спортивное программирование и карьера программиста

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

Поэтому, мое отношение к спортивному программированию - как отношение зрителя к спортивным соревнованиям: приятно, когда “наши” выигрывают - но и только. Да, возможно, спортивное программирование - “это прикольно!”. Куда лучше, чем по улицам без дела слоняться. Но все же, так ли велика польза спортивного программирования для будущего профессионального программиста?

“Добро пожаловать в реальный мир!” (с)

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

  1. Умение уложиться в отведенный клочок времени? А какой ценой? Ценой плохо связанных обрывков кода, зачастую не охватывающего полного набора данных стресс-тестов? Практически некомментированного кода, который плохо читаем, плохо модифицируем и плохо сопровождаем коллегами? В реалиях нет таких жестких временных рамок и любой руководитель проекта отдаст преимущество ясному и легко сопровождаемому коду: “прима-балерина” может уволиться, а проблема преемственности сопровождения ляжет на руководителя, который, в общем-то, о своем кресле должен заботиться.
  2. Умение держать в памяти и применять типовые алгоритмы? А зачем их в памяти-то держать? Сделайте библиотеку и берите оттуда. В реальном мире все именно так и обстоит.
  3. Способность решать задачи втроем на одном компьютере, как признак сплоченности команды? Ну где в реальном мире один компьютер на трех программистов? Кому чем заниматься решает руководитель проекта. В спокойной обстановке. И в процессе реализации проекта периодически наблюдает за её ходом, внося необходимые коррективы. Не на бумажке, конечно.
  4. Какую задачу, имеющую практическое значение, можно решить за время, отведенное на соревнование? Допускаю, что когда-то чудом что-то и решили. Но тогда это исключение. Возможно, какие-то простенькие проблемки, пригодные для “чистой науки”, решить и можно. Но большой ли сейчас на это спрос?

Я приведу один пример из своей жизни, не связанный с олимпиадами. В свое время по работе возникла потребность решить практическую задачу. Все тривиально: “шеф” делал диссертацию, а справиться с расчетами не мог. Задачка была непростой: обращение уравнения Абеля; я работал в паре с математиком и на решение ушло несколько месяцев. Результат был даже опубликован в университетском сборнике “Вычислительные системы и алгоритмы”. “Сердцем” задачи оказалось решение огромной (по тем временам) системы уравнений, имеющей пятидиагональную матрицу. Как известно, для трехдиагональных матриц существует метод прогонки. Лёве, как звали в обиходе математика, пришла в голову замечательная мысль: обобщить метод прогонки для работы с пятидиагональной матрицей. И это сработало! С тех пор прошло 34 года. Кто-то из вас слышал о решении СЛАУ с пятидиагональной матрицей методом прогонки? Во всех источниках по-прежнему утверждается, что этот метод для трехдиагональной матрицы. Пример того, что можно потратить много сил и средств на реализацию задачи, которая но поверку оказывается разовой. Фактически, для нас тогда это тоже была своего рода “олимпиада” - вызов, потому что решать надо было на ЭВМ “Минск-32” с объемом памяти 32 К машинных слов и за время, не превышающее нескольких минут (тогда машины арендовали и надо было платить за время). Вот так же и все олимпиадные задачи. Они - разовые. Работа “на корзину”, как сейчас говорят работодатели.

Как обобщение. Спортивное программирование - это прикольно, весело, круто при рассказах в своей среде, но … малополезно будущему профессиональному программисту.

Естественно, это моё личное мнение.

2 лайка

Откуда вообще эти странные споры…

Я занимался спортивным программированием около 3х лет и делал это только потому, что это интересно, как и практически все, кто занимается спортивным программированием. Никто особо не думает, что оно даст. Так что дискуссия довольно ни о чем, потому что никого не привлечь тем, что “даст спортивное программирование”, и никто не бросит из-за того, что “не дает\забирает спортивное программирование”.

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

4 лайка

Да нет никаких споров. Прочитал ветку, появились мысли. Спасибо, что подтвердили мое мнение: спортивное программирование - просто “клуб по интересам”.

@RAlex c такой позицией Вам никогда не работать в Google или Яндекс. Скажу больше, в Яндекс есть отдел (кажется метриками занимается), в который берут только победителей международных соревнований по математике или программированию. Для вас спортивка ничего не стоит, но есть ИТ-компании, я бы даже сказал очень крупные ИТ-компании, для которых это крайне важно.

Вы не поверите, насколько мне “фиолетовы” эти “ваши” яндекс с гуглом с их тупыми кадровыми вывертами.

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

1 лайк

Ну, речь идет не только о Гугле с Яндексом. Например, после 3го места на региональном этапе IT-планеты я получил предложение о работе в двух компаниях: DevExperts и кто-то еще, название забыл уже(было это на втором курсе, а я уже почти год как универ закончил). Примеров множество, и таким образом действительно можно найти хорошую работу. В общем случае, конечно, опыт подобного программирования в стиле “затыкать 80% дырок в заглушке” реальному программированию не очень помогает - до сих пор не могу от этого избавиться. Хотя, порой возникают задачи вроде “надо сделать вчера” - например, крупный баг в алгоритме, выявленный на сдаче, и заставляющий его кардинально менять - в таком случае подобное мышление очень помогает. Но поддерживать такой код впоследствии очень сложно.

Я хочу заметить, что Гугл и, тем более, Яндекс — это отнюдь не самые лучшие места работы. Большие ИТ-компании создают вокруг себя ареол поиска “выдающихся талантов” и “креативной среды”. Ну что же, могут себе позволить. На деле же, вместо “креативной среды” после прыжков на нетривиальных собеседованиях вы получите в зубы эффективный менеджмент со всеми вытекающими, и на ваши таланты всем будет начихать. Разработка ПО находится в глубочайшем кризисе и с этой реальностью предстоит жить, стараясь не выгореть до сорока. По моему опыту в известных компаниях сложнее. Хотя продолжаю верить, что где-то еще есть the last sanctuary of sanity.

Я Вам так скажу, я тоже не фанат крупняка, потому что личность там часто ни во что не ставится. Но должен сказать, что многие из них делают реальные дела. Сделать модель осуществляющую перевод с китайского за 2 мес разве слАбо? Это сделали пара человек из Яндекса. А тензорфлоу 1.0 над которым 500+ чел внутри и еще столько же снаружи Гугла работали это разве не атмосфера креатива? Скажем так в Яндексе и в Гугле есть очень хорошие спецы способные оценить других и способные сами на многое.

@JediKnight знали бы вы как мне пригождаются эти знания в CV и ML … Все программисты разные и пишут разные программы.

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

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

Сами же и начали своё мнение “проталкивать”… еще полгода назад. Но теперь, конечно же, возникла мысль про “исключительно занятия” без обсуждения того, что они дать могут и вообще, зачем они ))) Смешно…

Если честно, то не в курсе, что они там понаделали. Еще одна нейросеть?

Вообще, я вам скажу так, что если хочется работать над подобными проектами, то в этих компаниях в последнюю очередь нужно смотреть на вакансии программистов (т.н. software engineers). Там есть R&D отделы. Может быть, в них по-другому. Сам хочу посмотреть и либо убедиться, либо разочароваться. Правда, соваться имеет смысл только с хорошей академической карьерой за плечами.

Сударь, я еще в теме про БД заметил, что Вы слышите только свою точку зрения. Никто не собирается Вам рот затыкать таким примитивным способом. “Почисть” означает перенеси в другую ветку. Тут так принято, и я не Вам говорил, не красиво в чужой разговор вмешиваться.

Тема эта существует 5 лет, а не полгода (с предыдущего форума переехала). Я ничего не проталкиваю, мотивация заниматься неотъемлемая часть самого обучения. Будьте добры, уймите свое эго.

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

Неверно. Прошу Вас перейти в личку из этого топика или в другой топик. Или давайте дождемся когда @bravit перетащит.

Когда человек разговаривает с богом - это молитва. Когда бог разговаривает с человеком - это шизофрения.

Когда некий “кулик свое болото хвалит” - это мотивация. Когда ему возражают - это холивар, требующий перлюстрации.

Все с Вами понятно. Подумайте для начала про собственное “эго”

Перехожу в новую тему как вы просили. По поводу R&D отделов: не знаю, какие именно вы имеете ввиду. Может, в яндексе как-то иначе. Не знаю. Пишу о том, что знаю точно: я сейчас нахожусь в процессе перехода на позицию Senior Research Scientist в одну небезызвестную компанию с зеленым логотипом. Там однозначные требования PhD in CS or applied math и good publication record in CS, deep learning, statistics, applied mathematics or any other related area. Что это, как не достаточно хорошая академическая карьера за плечами?

Кроме того, я имел счастье порабодать software engineer в достаточно известной конторе, находящейся в своей нише на уровне bleeding edge. И столкнуться с этой работой в некоторых других больших и “модных” фирмах. Так вот, я хочу заметить, что разница между собеседованиями и тем, чем реально приходится заниматься колоссальная. Я не хочу говорить за всех, но там, где я имел счастье с этим столкнуться (я не буду здесь писать названия компаний по этическим соображениям) работа в soft.dev. была по большей части скучна и рутинна. И заниматься ею может человек с наборядок более низкой квалификацией, нежели формально предъявляемая в требованиях на собеседовании.

Все вышесказанное разумеется ИМХО и мой личный опыт, который, я рассчитываю, еще может стать более позитивным.

RSокт. 2016Самый простой ответ: вы будете быстрее решать лабы и прочую практику по программированию. Моя точка зрения на вопрос почему стоит заниматься "Олимпиадным программированием" более развернуто:

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

“Amicus Plato, sed magis arnica Veritas”

тут не актуально?

Я уже не один зеленый логотип вспомнил ))

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

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