Блог пользователя RodionGork

Автор RodionGork, 13 лет назад, По-русски

Не секрет, что существуют два противоположных взгляда на олимпиадное (спортивное?) программирование:

Первый из них - почёт и уважение лучшим, вплоть до благоговейного трепета.

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

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

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

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

Впрочем обсуждать это всё долго, да и много на эту тему говорилось, даже здесь, по блогам уважаемых людей:
http://codeforces.me/blog/entry/1851
http://codeforces.me/blog/entry/2047
и т.п.

Среди своих знакомых - профессиональных разработчиков - я с удивлением не нашёл никого, кто хоть когда-то заходил бы на популярные ресурсы связанные с олимпиадным программированием. Теперь хочу узнать "обратную сторону" вопроса. Так что просто поделитесь (если не тайна):

- работаете ли вы программистом/тестировщиком, и т.п. (если да, то как часто доводилось заниматься интересными алгоритмическими задачами - мне, скажем, раза 4 за два года, притом больше околоматематическими алгоритмами);
- работаете ли вы "математиком/аналитиком-программистом" (или как называется ваша должность) - т.е. человеком который на практике занят разработкой, модификацией или внедрением достаточно неординарных алгоритмов в проектах;

- работаете ли вы в решительно иной отрасли (в инженерной - или нет?);
- либо не работаете пока вообще, но собираетесь (или не собираетесь) работать в IT, даже с учётом того что "интересных задачек" там отнюдь не так много и достаются они обычно либо лучшим, либо везучим... ;-)


Заранее спасибо.

  • Проголосовать: нравится
  • +17
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я пока студент, думаю что буду заниматься олимпиадами до окончания вуза, после этого хотелось бы, конечно, попасть в серьезную компанию. Меня привлекает, например, game-индустрия(я почти уверен что там требуется писать что-либо посложнее бинпоиска).
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    кстати, по поводу game индустрии... Действительно то, чем хотелось бы заняться в будущем :) А пока выучиться бы
  • 13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    А как насчёт всяких контор связанных с разработкой синтеза или распознавания речи или вообще цифровой обработкой сигналов датчиков, радаров и т.п.? (правда в олимпиадных задачах такие алгоритмы вероятно реже встречаются)

    Или каких-то заведений занимающийся разработкой поисковиков, автоматичным ковырянием инфы из инета и т.п.

    В смысле - почему именно game-индустрия? Я как вижу она нынче делится на разработку крупных игрушек и разработку под мобильные девайсы... Везде своя специфика - где-то кучи готовых крутых библиотек - где-то наоборот необходимость решать заново примитивные задачи для оптимизации... (эх, помню - лет 10-15 назад трёхмерный лабиринт написать чтоб нормально на 486-й машинке работал - было круто - а сейчас совершенно неактуально т.к. есть опенгл и прочие - и можно более глубокими вещами заниматься)

    Но насколько там будет сложно/интересно видимо чаще от самой конторы зависит...
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Конечно по большей части зависит от конторы, однако же...

      Под обработкой данных в посте ниже я подразумевал (в частности) обработку сигналов датчиков на телефонах под управлением ОС Android :) Да, оно, несомненно, увлекательно, но всё-же интересней было бы видеть визуально результат своей работы :) С большим любопытством посматриваю в сторону Wargaming.net (в частности их игры WORLDofTANKS). Вот от чего-то подобного точно бы не отказался в будущем.
    • 13 лет назад, # ^ |
        Проголосовать: нравится -11 Проголосовать: не нравится
      Я привел к примеру. В поисковики-да, пошел бы с удовольствием. В распознование-думаю, нет, хотя бы потому что я уже этим занимался, правда, не с точки зрения прогера, а с точки зрения физика. В соцсети-да. Может, пошел бы в какую-нибудь транспортную компанию(графы!!!)-но я лично не знаю, как там у них с программистами, что им надо, сколько платят.
      • 13 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
        Соцсети? Не понимаю... Я работал немного в разработке одной социальной сети, но что-то ни одной алгоритмической задачи сложнее бинпоиска как-то не встретилось. Там больше важны понимания психологии, дизайна, ну и умение применять стандартные средства разработки, а не алгоритмическое мышление.
        • 13 лет назад, # ^ |
            Проголосовать: нравится +8 Проголосовать: не нравится
          Вот, почитайте, узнаете много нового: Архитектура facebook, vkontakte.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Ну... как-то не вижу я ничего в архитектуре, где нужно писать какие-то сложные или не очень алгоритмы. Только использовать стандартные средства.... готовые библиотеки, готовые фрэймворки, готовые решения, где все алгоритмы уже написаны - только правильно использовать. У нас половина было слизана с того же вконтакте, использовались абсолютно аналогичные решения, только не для PHP, а для Java, и крутилось всё под тем же nginx, в том же Linux, и тот же ffmpeg юзался для обработки видео, бо и альтернатив особых нету.

            Единственное исключение - мы не писали собственную СУБД. Тут согласен - для изобретения такого велосипеда нужна алгоритмическая подготовка. Мы как обычные смертные юзали Oracle (бо у фирмы два десятка лет опыта как правильно юзать эту СУБД ). Изобретать свой велосипед - экономически не оправдано (по крайней мере для скромной компании, которая не собирается его продавать).

            • 13 лет назад, # ^ |
                Проголосовать: нравится +8 Проголосовать: не нравится
              Сомневаюсь, что оракул подойдет для вконтакте или фейсбука. Но СУБД - это не совсем исключение, обычно СУБД содержат в себе чуть ли не весь алгоритмический теорминимум + некоторые довольно редкие алгоритмы + некоторое количество своих ухищрений, позволяющих ускорять частые операции. Вы еще скажите, что гугл поиск просто писать - что там писать, стандартные средства, html, jquery, только правильно использовать. СУБД - единственное исключение.
              • 13 лет назад, # ^ |
                Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

                соцсеть - это не гугл... там в 90% чисто CRUD-операции и не более. А для поиска у нас был прикручен Яндекс.Сервер, хотя на самом деле, как по мне, надо было использовать Lucene или что-то на его основе.

                > Сомневаюсь, что оракул подойдет для вконтакте или фейсбука.

                На facebook, судя по Вашему линку, юзается Orcale MySQL... это мало чем лучше Oracle Database, скорее наоборот. Да и на Оракле свет клином не сошелся... у нас выбор был продиктован консерватизмом и существующим опытом. Есть куча других (и не обязательно реляционных) хороших СУБД - не обязательно тратить кучу денег и времени на изобретение своей. Ну и даже в этом случае я не назову это "разработкой соцсети", скорее сопутствующим проектом.

                • 13 лет назад, # ^ |
                    Проголосовать: нравится +2 Проголосовать: не нравится
                  Ну и что, что CRUD операции? Что вы этим хотели сказать? У гугла вообще одна операция, он что, проще от этого?
                  А вы сами когда нибудь писали базу данных? Или только использовали готовые?
                  • 13 лет назад, # ^ |
                    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

                    Вот-вот, потому что у гугла одна операция, потому ему Oracle database и не нужен... Но Вы не сравнивайте такого монстра как гугл, которому нужна только одна операция и почти обычный сайт, где нужен почти стандартный набор операций, для чего существует куча уже написанных СУБД, причем неплохо написанных. Сложно экономически обосновать потребность в своём велосипеде... выигрыш в производительности - очень спорная вещь по сравнению с СУБД, которую разрабатывают на протяжении 30 лет и в штате есть люди, которые умеют её очень эффективно использовать. Даже если он будет - его можно с лихвой компенсировать докупкой сервера(ов) - разработка же займет намного больше времени и тем более денег. Но поверьте, что тот же Oracle можно очень эффективно использовать. Не любой инвестор согласится дать денег на такую разработку.
                    • 13 лет назад, # ^ |
                        Проголосовать: нравится +3 Проголосовать: не нравится
                      ---------------------------------------------------
                      Я не предлагаю вам писать базу, я лишь пытаюсь объяснить, почему это необходимо для крупных соцсетей. Если вы не можете меня понять, тогда скажите, вы действительно считаете, что разработчикам вконтакте делать нечего и скучно, поэтому они пишут свою базу, которая, если упадет, уронит миллионы соединений и приведет к большим тратам? Вы действительно считаете, что одни из лучших программистов в России разрабатывают сообща какую-то простую в реализации вещь?
                      • 13 лет назад, # ^ |
                          Проголосовать: нравится -9 Проголосовать: не нравится

                        Ну... я тут писал выше, что разработку СУБД далеко не считают простой. Но я и не считаю правильным называть это разработкой соцсети. Это скорее сопутствующий проект.

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

                        • 13 лет назад, # ^ |
                            Проголосовать: нравится 0 Проголосовать: не нравится
                          ----------------------------------
                          Не все пользуются таким разделением. В частности автор статей выше включает БД в архитектуру соцсети. И я тоже, т.к. вокруг нее все крутится, соцсеть - это по сути очень удобная база данных. Что имел в виду JKeeJ1e30, мне неизвестно.
                          • 13 лет назад, # ^ |
                              Проголосовать: нравится +1 Проголосовать: не нравится

                            1. Если так пошло, то автор статей в архитектуру включает и процессоры Intel. Их разработка не есть разработка соцсети. ;)

                            2. Там же написано и то, что "хотели бы сделать СУБД универсальной и опубликовать под GPL" (читай: отделить мух от котлет -  СУБД от соцсети). Т.о. то, что оно пока сильно связано - есть недоработка.

                            3. Как по мне, то соцсеть - это по сути очень удобный интерфейс к базе данных, ну и сама база данных, которая под СУБД крутится. И эта СУБД вполне может быть универсальной.

                            Иначе говоря, если кто-то хочет идти работать в абстрактную соцсеть в надежде применять своё алгоритмическое мышление, то смею разочаровать. Идите лучше в разработчики СУБД. :)

                          • 13 лет назад, # ^ |
                              Проголосовать: нравится 0 Проголосовать: не нравится
                            Именно это:)
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Не-а, программистам денег мало платють =) Я банкир
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

    А банк свой?
    Вопрос серьёзно задаю. Если так, то выбор понятен. Иначе, Вы, видимо, банковский служащий достаточно высокого ранга. И когда-то бросили программирование, чтобы двигаться в банке по карьерной лестнице. Что Вас подвигло на такой выбор? 
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Предположу, что это от склада характера зависит... Может и там своеобразных задач хватает...

      С другой стороны кто-то предпочитает чтоб программирование оставалось хобби, искусством - а не становилось ремеслом... ;-)
    • 13 лет назад, # ^ |
        Проголосовать: нравится +32 Проголосовать: не нравится
      Нет, банк Сберегательный Российской Федерации =) Служащий я обычного ранга, но в Центрально Аппарате, и не по ИТ-специальности, а по управлению рисками
      Программирование я не бросал, поскольку не начинал его =) По образованию я финансист, спортивное программирование - исключительно хобби
      • 13 лет назад, # ^ |
          Проголосовать: нравится +11 Проголосовать: не нравится
        У вас неплохо получается:)
      • 13 лет назад, # ^ |
          Проголосовать: нравится +11 Проголосовать: не нравится
        Да, бывает.
        На этом сайте и философы встречаются =).
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        А можете поподробнее рассказать? Мне всё было интересно, как же это ГУ-ВШЭ выставляет на NEERC приличного уровня команду, ведь вуз-то, казалось бы, непрофильный. Насколько я знаю, там у вас нет бакалавриата, значит в команде вполне могут быть люди с базовым образованием программиста или математика. Но как же произошло столь маловероятное событие, что на экономическую специальность пошли трое человек, занимающихся спортивным программированием? Или же на самом деле Вы там один такой и тащите на себе всю команду (заранее извиняюсь перед другими участниками)? Или вы учитесь на каких-то смежных специальностях? И как вам удаётся добывать деньги на поездки - неужели руководство вуза настолько уважает программирование?
        • 13 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится +24 Проголосовать: не нравится

          Про команду. Я не очень понял, о какой команде речь. Сейчас от вышки несколько команд, но первая, в создании которой я принимал участие (HSE AOP: Babin, Tkachev, Vedernikov) появилась, когда я переехал из Перми (бакалавриат) в Москву. Спорткодинг был хобби со школы, к тому времени я даже выигрывал региональные соревнования Пермского края и тренировал школьников.
          В московской вышке на факультете бизнес-информатики нашел первокурсника бакалавриата (я не знаю, откуда вы взяли, что в вышке его нет) - Володю Ткачева, который тоже в школе этим занимался, и мы вдвоем выступали с переменным успехом (из достижений можно считать выход в полуфинал в первый же год). Уже потом к нам присоединился Михаил Бабин с мех-мата МГУ (поступил в аспирантуру), однако съездить на финал не удалось - я плохо сдал вступительную философию в аспирантуру =)
          Собсно, вот. По поводу поддержки - в мое время ее никакой не было, даже ездили на свои. Вышка еще "помогла" тем, что своими малоадекватными экзаменами по философии не дала поступить и съездить на финал. Так что вот - все, как всегда, держится на голом энтузиазме отдельных людей.
          P.S. По поводу состава - у нас в команде все равны и важны. Не хочется вдаваться в подробности, но можно заметить, что хотя бы без одного участника мы выступаем гораздо менее успешно.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Студент, работаю уже практически год (кстати взяли в основном за знание алгоритмов), 60% времени занимался именно различными алгоритмическими задачами (в основном обработка данных / структуры данных), хотя всё-же не всё это было очень полезно конторе. Т.к. сразу сказал, что пока упор таки делаю на учёбу, а не на работу, то меня на моей же работе сильно особо не колупают (начальник хороший попался таки). На зарплате это таки отражается, однако она не меньше, чем у моих одногруппников, пришедших на работу практически одновременно со мной (чистая случайность) и вообще не имеющих никакого отношения к олимпиадному программированию.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    (вообще это вопрос для Commanods - кажется я его не туда прицепил)

    Если не тайна - какой направленности заведение, где вы работаете - аутсорсерская контора, или всенародный веб-портал - или ещё что?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      По большей части аутсортинг, но я попал в эксперементальную группу, т.е. работали со своими идеями и в основном под андроид. Хотя вот сейчас очень понадобился человек на один американский (заказчик) проект и забрали туда меня. Не скажу, что я рад этому, хотя хоть зарплату обещали повысить...
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Мне тема представляется интересной. Но хотелось бы услышать не тех, кто занимается (занимался) спортивным программированием, а потом нашел (планирует найти) себя в IT-индустрии, а как раз других людей. Тех кто занимался СП, имел определенные успехи, но потом не смог или даже не пытался заняться промышленным программированием, а нашел себя в совершенно другой сфере. Есть такие? Почему у вас с IT то не срослось?
13 лет назад, # |
  Проголосовать: нравится +28 Проголосовать: не нравится
Программист-разработчик, полгода.

Из олимпиадных механизмов: один раз использовал бин.поиск чтобы найти виновника ошибки в системе контроля версий xD
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Аналогично. В работе использовал только бин. поиск. Изменил время работы программы с более чем 24 часов до 2-3 минут.

Однако из-за участия в олимпиадах у меня появился иной подход к работе. Обычно рабочие задачи требуют только умения их делать. 

Предположим если я вижу задачу на контесте, которую я уже делал, то мне необходимо лишь набрать её код, и обычно это занимает 5-10 минут. Теперь, когда я получаю задание на работе, я разбиваю его на подзадачи, которые могу сделать и решаю как один контест. Где стараюсь писать очень быстро. Возможно немного утрирую, но работать в обычном режиме мне очень удобно, и я не устаю от этого. А если работать в "олимпиадном" то получается очень быстро, однако постоянно работать так ещё сложновато. 

Слышал, что в играх требуются алгоритмисты. у нас в объявлении было написано: "Зание математики и алгоримтов". Больше нигде не встречал.

  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Угу, у нас тоже в универе висит объявление, где одним из условий приёма на работу (судя по объявлению) является «Знание классических алгоритмов» или что-то типа того.

    Ну так в этой фирме работает несколько студентов, которые слышали максимум про Дейкстру, и то на первом курсе, а парасочетания и КМП - это вообще китайская грамота!

    Так что если объявление пафосное - это ни о чём не говорит. ;-)

    Лучше всего заслать в компанию инсайдера и от него уже узнавать, что там на самом деле.
13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
Я вот в Microsoft проработал 1.5 года, и это было очень скучно. Но понты были.
Сейчас я нафиг оттуда ушел в стартап, и стало по-интереснее. Понтов, правда, больше нет :о)

В обоих случаях от ICPC понадобилась медалька (особенно в первом) и надрюченный мозг, полученные знания применения не нашли.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    А стартап для России или для Штатов ? И во втором случае медалька понадобилась чтобы найти инвесторов?:)
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

      Для штатов.
      С инвесторами общался не я, но факт наличия человека с медалькой упоминался. Не известно, играл ли он какую-то роль :о)

13 лет назад, # |
Rev. 9   Проголосовать: нравится +12 Проголосовать: не нравится

> работаете ли вы программистом/тестировщиком, и т.п. (если да, то как часто доводилось заниматься интересными алгоритмическими задачами...

Работаю и алгоритмические задачи, конечно же, встречаются. Например, во время разработки невинного сайта казино пришлось реализовывать алгоритмы некоторых карточных игр, хитрым образом моделировать всякие игровые автоматы для подбора параметров и пр. Думаю в таких исключительно практических областях, как разработка AI для компьютерных игр, разработка 3d-движков для этих же игр, разработка поисковиков, распознавание текста/чего-то другого, логистика и пр., алгоритмическое мышление очень и очень нужно. Другое дело, что это имеет мало общего со спортивным программированием, где касательно фазы кодирования счёт идёт на секунды.

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Разработчик в сфере телекоммуникаций, ~ 2 года.

Задачи разделил бы на два класса:

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

2. Доработки/разработки - на первый план выходит анализ бизнесс-требований, проработка всевозможных кейсов, обеспечение совместимости и масштабируемости решения. Здесь часто возникают интересные логические задачи, но с алгоритмами из СП они имеют очень мало общего.

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

  • 13 лет назад, # ^ |
      Проголосовать: нравится +14 Проголосовать: не нравится
    Работала разработчиком ПО для банков; за 5 лет алгоритм случился один раз - посчитать расстояние Левенштейна. Сейчас перешла на неполный день и занимаюсь ТопКодером.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      а зачем перешли? не поделитесь мыслями?
      я просто на развилке: ненапряжная работа и СП с развитием на перспективу, либо работа в большой компании с "отжимкой" всех соков.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Предположу, что денег пока хватает да и "воздухом подышать" хочется.
        • 13 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

          ну мне пока с ненапряжной работой денег тоже хватает, но рекрутеры регулярно столько сладостей предлагают по телефону.. прямо не работа, а Эдем :)
          но с деньгами ведь как: сегодня хватает, а завтра нет
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Работа свелась к "выяснить, что хочет заказчик, перевести это на SQL, потом переделать десять раз, потому что либо он передумал, либо неадекватно объяснил". Ну, и банковская отчетность - штука довольно-таки на любителя (не в моем лице), вроде 1С, и заказчики те еще. Я поняла, что пока я еще молода и не обременена потомством, надо это менять. Вот теперь думаю, на что :-)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Эх, написал бы кто-нибудь пост про зароботок в ТопКодере на Design, Development, Architecture. Немного не по тематике сайта, но все же интересно, каковы шансы делать на призовых, как argolite :). У Вас нет желания поделиться опытом?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Мой опыт в этой области укладывается в одно предложение: понятия не имею :-) Там всюду высокий порог входа и большая конкуренция, так что я участвую только в Content Creation (в основном как ревьюер) и Idea Generation. А кормят меня в основном марафоны.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Забавно... Я поработал именно в конторе творящей ПО для банков и околоденежных организаций - именно что скучно и делать нечего.

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

Может это пагубная специфика банковских/финансовых задач?