Здесь уже много писалось про пользу и вред спортивного программирования. Но хотелось бы узнать про реальные примеры, как, например, спортивное программирование помогло при устройстве на интересную работу, или как знание классических алгоритмов помогает при решении нестандартных задач, как часто это бывает и т.д.
Ну да...
В целом понятно.
У меня такой вопрос, может немного в сторону от авторского, может нет - не знаю. Адресован тем, кто уже занимается "полезным делом" в какой-то компании.
Какие олимпиадные алгоритмы конкретно Вы использовали в своей работе, и для чего именно? Слышал истории, как люди, допустим, при разработке социальных сетей в том месте прикрутили простое паросочетание, а в этом - Ахо-Корасик, а вон там, наоборот, до них был тупой Кун, а они заменили на Диницу, который для 0-1 графов летает намного быстрее.
Ну и почти боянистое "у них там был перебор по отсортированному массиву, а я написал бинарку".
Думаю, найдутся разные интересные истории, ведь у каждого - своя уникальная работа и т.д.
В целом не совсем так. Многое зависит от направления деятельности компании, куда вы устроитесь. ;-)
Безусловно есть отрасли в которых алгоритмические задачки будут попадаться, однако чаще всего либо примитивные, либо не совсем те что на соревнованиях. Из "похожих" мне приходилось писать нечёткие регекспы, из "непохожих" цифровые фильтры и геометрию. Но за 3 года это в общем довольно немного.
Довольно большой рынок вакансий связан с разработкой приложений для предприятий и здесь сложные алгоритмы достаточно редки - "креативные" вопросы здесь скорее связаны с разработкой структуры БД, оптимизацией запросов к ней же, рожанием адекватного интерфейса. Впрочем этим не ограничивается - могут попасться и задачи с разработкой протоколов обмена данными внутри приложения или между ними, и с разработкой САПР, платформ, библиотек/фреймворков... и естественно с разработкой игрушек. ;-)
В общем, если сможете, попытайтесь при устройстве на работу разобраться заранее чем придётся заниматься (это довольно трудно понять детально/достоверно)...
Насчёт того что успехи в спортивном программировании помогают в трудоустройстве... Ну в общем нужно быть готовым к тому что многие достойные работодатели не признают этих достижений, некоторые даже не слыхали. ;-)
То что резюме "может затеряться в общей массе" это чепуха - главное толково его написать, указать адекватные теги и выложить на адекватном сайте. Независимо от спортивных достижений предложений будет достаточно много.
Вот что реально может помочь в трудоустройстве, пожалуй - это участие в open-source проектах (см например http://sourceforge.net/people/), т.к. вы можете прямо дать ссылку на свои коммиты, рассказать о взаимодействии с координатором проекта, и привести, возможно, его отзывы о вас. Хотя если вас просто взяли в проект и не выгнали после первого коммита, то это уже говорит о многом.
Главное что этим вы (в отличие от спортивного программирования) демонстрируете те навыки которые актуальны работодателю:
- умение пользоваться средствами корпоративной разработки (пустячок а важно);
- умение писать адекватный и поддерживаемый код;
- и многочисленные т.п.
"
Просто общению со (старшими) коллегами. Достаточно часто встречаю руководителей проектов и старших разработчиков которые с открытой предвзятостью относятся к спортивным достижениям. Ну например зайдите на javatalks.ru и поищите обсуждение насчёт RussianCodeCup... ;-)
Конечно, я не имею в виду что это повально-тотально. Плюс вы можете задаться целью устраиваться в трудовые коллективы, где есть определённый процент спортсменов, в т.ч. среди начальства - тогда у вас будет возможно непохожая статистика.
UPD: Да плюс к тому вы же должны помнить - тут где-то проскакивала цитата из письма от яндекса кому-то из участников соревнований - к сожалению не помню дословно - желательно её найти - что мол уважаем спортсменов, но без возвышенного энтузиазма к ним относимся.
Кстати, на собеседовании в яндексе у меня глубоких алгоритмических вопросов не спрашивали. Правда я на глубоко не свойственную мне специальность автотестера собеседовался - и как я позже понял, на тот момент ещё сама эта вакансия не была ясна работодателю. Только сейчас появились замечания о том что нужны автотестеры на селениуме и что-то в этом духе конкретное.
Позволю себе усомниться.
Из опыта собеседований, задачи на них предлагаемые, разбиваются на две категории:
- короткие примитивные вопросы от "напишите хелло-ворлд, покажите как его скомпилировать", до "напишите поиск наибольшего элемента в двоичном дереве" - прямо сказать семи пядей во лбу иметь не надо чтобы это писать, но поскольку часто это требуется сделать на бумажке, нужна внимательность и аккуратность;
- длинные оффлайновые задания на недельку-две, из личного опыта я таких припомню несколько: "напишите поисковый движок для поиска фраз в большом файле, построения индекса и выдачи сниппетов, разумные требования и допущения определите сами", "разработайте БД с указанным набором сущностей (штук 7 всего) и небольшое J2EE приложеньице чтобы выполнять над этими сущностями заданные действия (использовать заданные технологии)", "напишите приложение проверяющее почту, выкачивающее письма с темами в заданном формате, разбирающее аттачи и производящее над ними какие-то операции" (у меня помню 80% программы занимал xml-конфигуратор который позволял описывать эти самые операции, не зашивая их тупо в программулину - что и повлияло на положительное решение работодателя) и т.п...
UPD: Ещё смешное вспомнил - когда собеседовался на работу с POS-терминалами связанную, мне дали листочек с задачами на знание C++, а я посмотрел и говорю "а, эти задачи я год назад на другом собеседовании видел, правда я их плоховато решил - я в ++ слаб" - тогда ребята засмеялись и сказали "у нас та же ситуация, поэтому мы задачи из инета спёрли"... ну тогда лучше расскажите на английском языке, насколько помните, примерный порядок действий для работы с rfid-картами по протоколу Mifare". Я рассказал и меня взяли, хотя ни C++, ни детали протокола mifare ни английский язык в дальнейшем на этой работе почти не понадобились...
- написали синглтон и фабрику в одном лице и спрашивают, "а это что"?
- а какие ещё паттерны вы знаете (стоит назвать хотя бы "фасад" и "конечный автомат" - и отстанут)?
- представьте игру в тетрис или червячка, как бы вы это в идеологии MVC реализовали?
Футболистам проще - у них спорт это сам по себе бизнес. Боксёров или фехтовальщиков можно вышибалами в компьютерные клубы или банки устроить.
Плющенко, Кабаева и Каспаров экспериментировали с политикой, ха-ха. Карпов и Москаленко вроде бы успешно занимаются личным бизнесом...
Но в целом вы понимаете - велик шанс что их новая работа по "крутости" будет несравнимо ниже чем их прежние достижения. ;-)
Хотя тут не исключено такое - соревнуются то они именно за этим, но именно этого как раз не достигают. %)
Женя Кузяков, с которым мы получили золотую медаль, после своего второго финала тоже сразу разослал резюме и получил работу в FaceBook в Сан-Франциско." Скиданов Алекс.
Источник
Откуда такая статистика? Мне повезло учиться с ребятами которые были гораздо умнее меня - победители олимпиад, соревнований - но я знаю что в программисты как раз пошли далеко не многие... Они примерно разделились на инженеров-математиков, научных сотрудников (хотя между этим грань довольно тонкая) и бизнесменов. Программисты тоже есть, но в основном как раз те кто в спортивном смысле успехов не имели... ;-)