Путь олимпиадника в промышленное программирование

    Друзья, мне тут в руки попал рассказ Саши Куприна про его поездку на финал, знакомство с Яндексом, диплом и ночевки в офисе. С разрешения автора делюсь с вами!

    Яндекс достаточно давно интересуется олимпиадными программистами. Будучи второкурсником, я слушал рассказы про ШАД Григория Кондакова, выступления Миши Левина. Получал футболки и брошюры на четвертьфиналах и полуфиналах чемпионата мира. Но, знаете, в то далёкое исключительно олимпиадное время совсем не волновали вопросы работы, а уж тем более дополнительного обучения. Ну, до поры, до времени.

    На четвёртом курсе наша провинциальная команда (Orel STU) пробилась на финал ACM ICPC. Это был, мягко говоря, феерический успех – ведь мы никогда не срывали звёзд с неба, да и отбор был посерьёзнее, чем нынче. К нашей неугомонной радости случилась революция в Египте, которая стала причиной переноса финала из Шарм-Эль-Шейха в город Орландо солнечных штатов Америки.

    А там-то и случился тот короткий разговор. Как-то вечером в chill zone мы болтали с Мишей Левиным о танцевальном агрегате, как вдруг подошёл на тот момент мне неизвестный Серёжа Чернышёв и, опознав по футболке участника финала, спросил: «В Яндекс к нам хочешь?» А чего отказываться? =)

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

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

    Забавно, но первый «рабочий» день совпал с закрытием ШАДа и подведением итогов Яндекс.Алгоритма. Так что я бы приехал в Москву всё равно. =) Рабочий день мне понравился. До четырёх часов вечера я тусил с друзьями-олимпиадниками в Экстрополисе и поедал куриные шашлычки. Не выходя из здания получил бейджик с серьёзной надписью: «Департамент разработки».

    Вообще надо отметить, что я серьёзно переживал. Когда, когда мне дадут первое задание? Хватит ли моих скудных олимпиадных знаний, чтобы с ним справиться? Два с половиной месяца – это совсем немного, поэтому я ожидал уж если не галопам-по-европам, то хотя бы в-темпе-вальса mode on.

    Однако никто даже не чесался. Ну, наверное, мне так казалось. Лёша Мирзоян с переменным успехом успокаивал меня: «тю, ну ты чего? Первую неделю знакомься с начальством, ребятами, офисом. Не заморачивайся!» В общем, конец дня прошёл попеременно то в бильярде, то в музыкальной комнате. ;)

    Самым большим удивлением оказался мой сосед по жилищу. Саша Прудаев, с которым мы пару лет обсуждали по аське олимпиадные задачи, перебрался из далёкой Тюмени в столицу. И вышел на работу на два дня раньше меня. Вот так новость, вот так встреча! Другим моим соседом оказался Даниил Бурдаков, весьма толковый парнишка, с которым мы сейчас часто пересекаемся в ШАДе. Поэтому компашка подобралась что надо. Мы жили в двух минутах ходьбы от Нагорной и, с учётом того, что кольцевая Парка Культуры была закрыта на ремонт, тратили на дорогу порядка сорока минут в одну сторону.

    На следующий день в моих руках оказался ноутбук. С виндой. Уже здорово, ибо линуксами я не пользовался в жизни. Задание начальство подобрало с душой. Нужно было каким-то образом научиться сравнивать документы на похожесть, ввести определение похожести и делать это всё достаточно быстро – ну, в предположении, что у нас овер 10^9 документов.

    Но давайте обо всём по порядку. Меня записали в практикантский проект Ябракадабра, где занимались новым поисковиком с нуля. На его основе можно уверенно изучать и демонстрировать архитектуру любого поисковика, объяснять принципы информационного поиска и прочая, и прочая.

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

    Практически сразу я понял, что в промышленном программировании две беды: ООП и названия переменных. С горем пополам и божьей помощью декомпозировав задачу, я приступил к поиску решения. Ребята советовали разные статьи на практически неизвестном мне тогда английском про simhash и minhash. Но как должен поступить настоящий олимпиадник? Конечно же придумать что-то своё! (Не хватает только комикса со шваброй).

    Читал статьи и думал я где-то неделю. Конечно же, не переставая знакомиться с окружением. Трудовые будни скрашивались няшным офисом, посиделками на кофепоинтах с Сашей Прудаевым и другими спортивными программистами. Дальше произошёл переломный момент, которым я горжусь до сих пор: я придумал решение. Это было в поезде метро, как сейчас помню. =) В дальнейшем практика показала, что оно оказалось уж точно не хуже аналогов, которые всё равно пришлось реализовывать для построения графиков и убеждения начальства.

    В итоге, на своё первое ревью я «отправил» нечто, состоящее из 300+ строк кода. В свою защиту могу сказать, что эти 300+ строк полностью решали поставленную задачу. =)

    Ребята бились в истерике. Артём Бабенко плакал кровавыми слезами и говорил, что больше пяти раз он не станет принимать мой код. Ещё один дико забавный момент был в том, что на распечатке (а ревью было именно таким – я распечатывал код, и мы шли его толпой читать) сверху указан путь вроде “…/cadabra/kpr/hash.cpp”. На соответствующий вопрос я соответствующе ответил, и Артём долго и регулярно мне потом со слезами на глазах вспоминал «Купринхэш». [Alex_KPR – мой никнейм].

    В дальнейшем мой код рос и ширился. Это было как-то глупо и странно, учитывая, что функциональность не менялась. Пять раз быстро исчерпались, и со мной существенную часть времени проводил другой начальник Егор Самосват. Несмотря на то, что я чувствовал себя идиотом и выглядел ничуть не умнее, происходящее мне нравилось. Фактически, я учился в одновременно комфортных и боевых условиях.

    Приходило время летних петрозаводских сборов, куда я напросился поехать от Яндекса, дабы нести свет и добро (зачёркнуто) дабы рассказать о прелестях летней стажировки. Народ отреагировал не очень охотно, и тогда я вспомнил себя на младших курсах: настоящий олимпиадник будет заниматься олимпиадными задачами бесконечно. Что ж, господа, придёт и ваше время. ;)

    Тем временем, мы переехали в другую квартиру, на Белорусской. Станция Парк Культуры всё ещё была закрыта, а к концу второго месяца стажировок у меня окончательно поехал режим. Полтора часа в день на дорогу тратить было просто лень, поэтому я проводил в офисе практически круглые сутки, ночуя в мягких переговорках, гамаках и на пуфах. Это было действительно здорово. Удавалось много времени проводить в музыкальной комнате – ночами напролёт я терзал синтезатор и гитары. Ночные прогулки по офису приводили в недоумение охранников, зато какая атмосфера!

    А тем временем работа медленно подходила к концу. «Купринхэш» обрёл новое имя – FirstLetterHash, перерос из одного файла в десяток, у него появились новые возможности и братья, имеющие тот же интерфейс, собралась статистика по запросу “проблемы бытия”, и многое, многое другое.

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

    А в родном университете вовсю шли дискуссии и баталии о темах дипломных работ. Договорившись заранее с ребятами из Яндекса, мне удалось убедить дипломного руководителя в бесконечном пафосе и практической применимости FirstLetterHash. Так что в некотором роде диплом у меня был в кармане – осталось налить воды в пояснительую записку, что оказалось вопросом пары недель.

    1 февраля я снова «вышел» на работу. Вот тут-то мне понадобился и git, и putty, и многие другие ранее неведомые радости жизни. Задание снова оказалось классным. На этот раз по ключевым словам нужно было построить сниппет – небольшую склейку из кусочков исходного текста, которая бы одновременно содержала много ключевых слов и воспринималась человеком как выдержки из документа, а не нарезка фраз.

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

    По ощущениям я был предоставлен сам себе, и это сильно расслабляло. И, хотя я честно выполнил задачу, оттестировал и закоммитил, мне кажется, что я халявил. Где-то с апреля-мая, когда 90% работы оказалось выполнено, перестали поступать разумные задания, и здесь скорее логика была простая: с новой большой задачей я справиться не успею, а время ещё есть.

    После успешной защиты диплома я поступил в магистратуру ВШЭ на программу, совмещённую с ШАДом Яндекса, то есть по сути пошёл учиться сразу в два места. Заботливая ВШЭ поселила будущих магистров в тихом уютном лесном посёлке под названием Дубки, за что спасибо ей большое. Практически сразу я пришёл к выводу, что пять часов на дорогу в сутки можно разменять на рабочий день на полставки и житьё недалеко от офиса.

    Очень скоро подвернулась отличная возможность: на выезде ШАДа мой знакомый Паша Шишкин, золотой медалист ACM ICPC, объявил о том, что Яндекс.Картинки ищут разработчика. Ура, вот он, мой шанс!

    Скоро состоялось собеседование, на котором я с превеликим трудом отвечал на вопросы теста под названием «pure evil c++ test 2», почему-то лишь со второй попытки верно решил несложную задачку по теорверу, но зато убил наповал скоростью написания алгоритмической задачки в промышленном стиле.

    Правда позиции на полставки не было — лишь на полный рабочий день. Но, пожалуй, так даже лучше. В картинках я с 1 октября – как раз прошло ровно пять месяцев. И по внутренним ощущениям всё по-настоящему здорово.

    Вот так вот, с одного короткого разговора начался путь олимпиадника в промышленное программирование. И я уверен, что это только начало. Так что, ребят, дерзайте, учитесь, тренируйтесь, — и всё непременно получится!
    Share post

    Comments 46

      +44
      Так неожиданно читать, что четверокурсник, финалист ACM никогда не пользовался линуксом, не знал что такое putty.
      Но с другой стороны это очень здорово, дает надежду на будущее)

      И Яндекс в очередной раз радует своей рекрутской системой.
        +2
        А что странного то? В АСМ совсем не в линуксе, или ООП счастье.

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


        Это и есть ключевая разница меджу олимпиадником и промышленником. На олимпиадах нас учили решить задачу. Максимально быстро, используя в идеале именно тот подход который надо, а не ООП ради ООП. Я настолько устал от ООП в PHP разработке, что ушел в верстальщики и вспоминаю свои PHP-будни по разгребанию чужих ООП-монстров для задач где можно обойтись линейным программированием «на 300 строк» с ужасом.

        Но это горькая промышленная правда.
          +4
          Я бы все же не стал делить на олимпиадников и промышленников. Когда решаешь задачу, действительно не задумываешься над тем, что кто-то будет читать твой код, но в команде читабельность кода превыше всего. Можно успешно и решать задачи, и работать в команде, благо научиться писать читабельный код не так уж и сложно, а некоторые на олимпиадах даже пишут читабельный код и при этом получают первые места (не буду тыкать пальцами), хотя лично я на олимпиадах и в команде пишу абсолютно разными стилями.
            +1
            не задумываешься над тем, что кто-то будет читать твой код

            Это до первой отладки :-) По крайней мере меня олимпиадное программирование научило всегда и сразу писать читаемый, отформатированный код.
          0
          Молодец! Не останавливайся)

          А Яндекс молодцы, да.
            0
            никогда не пользовался линуксом, не знал что такое putty

            Это, вкупе с отсутствием опыта с VCS, отличительная черта спортивных программистов.
            Главное чтобы вовремя поблизости оказался кто-нибудь, кто расскажет что изучить. И направит в сторону либы в которой половина задачи уже реализована, а то олимпиадник сгоряча и XML парсить вручную может начать, например.
              0
              У вас какие-то экстремальные проявления спортивных программистов. Вполне себе не отличаются от любых других по этим параметрам. Так же я видел просто программистов не знающих про VCS, отличающихся тягой к велосипедостроению.
                0
                Понятно что случаи бывают разные, ни в коем случе не пытаюсь говорить за всех программистов, но тенденцию такую отметить можно смело.
            +1
            Как участник этой же программы могу только присоединиться к данному посту. Летняя стажировка это круто и очень многое дала мне в плане промышленного программирования и себя как разработчика.
              +27
              Дизайн приложений не легче чем имплементация выученных алгоритмов/структур данных или даже создание новых. Создать неподдерживаемый софт с супер-крутыми алгоритмами — нехитрая задача. При этом у многих олимиадников ЧСВ как у 3 Цукербергов.
              Не в обиду, но мое личное мнение — что спортивное программирование хорошо лишь тем, что поддерживает «хакерский» стиль мышления, который позволяет решать различные задачи нестандартными методами + знание, как это устроено «под капотом».
                +3
                А методологии программирования хороши лишь тем, что позволяют упорядочить процесс разработки. А фотошоп хорош лишь тем, что может обрабатывать фотографии. Выражение «лишь тем» очень коварное
                Олимпиадный программист не все обязан решать олимпиадными методами и никто, вроде, не говорит, что олимпиадников надо ставить на все рабочие места. Но многие задачи требуют для себя именно «хакерский» стиль.
                  +8
                  Таким образом вы говорите, что автору не следовало идти в промышленное программирование. В промышленном программировании не нужны гении, там нужны просто грамотные инженеры. Гениям, имхо, лучше идти в науку — девелопить вьюшки хорошо для них слишком скучно, а тех, кто девелопит их плохо, и без олимпиадников хватает.
                    +6
                    Вы под «промышленным программированием» подразумеваете только написание «дейтингов на пхп» и собирание стандартных вещей из стандартных модулей? Не поверите, но в промышленном программирование есть много интересных задач с написанием новых вещей, алгоритмов, решений. Вон в статье оно и есть. Статья в общем-то про работу в крупной компании с интересными задачами. Таких компаний достаточно много. И наука в них используется, и продвигается.
                    А чистая наука вещь совсем на любителя.
                      +2
                      Про дейтинг на php ничего не могу сказать, т.к. не писал на php уже более четырех лет, но в средненькой вьюшке крупного iOS-приложения (сравнимого с Facebook или DropBox) найдется много над чем подумать. Науки там нет — одно прикладное программирование. Конечно, во время такого прикладного программирования учишься параллельно и некоторым системным вещам, которые еще меньше относятся к науке (если не считать их самих по себе отдельной наукой).
                        0
                        Я не говорю, что такое программирование тупое и бездуховное занятие. Просто я как а) олимпиадник б) занимающийся промышленным программированием не понимаю почему это должно быть мне скучно. Да и спортивное программирование к науке имеет очень опосредованное отношение.
                          +1
                          Согласно вашему ходу мыслей выходит, что математику тоже не стоит изучать, чтобы программировать. Если ваше программирование заключается исключительно в создании вьюшек и клонировании сайтов и приложений, то оно действительно скучное. В моей понимании в «промышленном программировании» есть множество интересных задач, требующих знание математики, структур данных и алгоритмов
                            +3
                            Вы меня не совсем правильно поняли — я не говорил, что не нужно знание математики, но, как показывает мой личный опыт, люди с инженерной специализацией — с весьма средними знаниями вышки, ограниченными первыми двумя курсами вуза — лучше справляются с повседневными задачами, коих в каждодневном программировании большинство.

                            Они не мнят себя звездами, не чураются рутинной работы (коей, опять же, в любом крупном проекте большинство), не испытывают внутреннего дискомфорта от просьбы дизайнера «подровнять вьюшки по пиксельной сетке 8x8».

                            С другой стороны, я не обобщаю — среди олимпиадников тоже встречаются люди, не пораженные звездной болезнью. Но, по моим наблюдениям и к моему сожалению, среди олимпиадников процент «звезд» значительно выше.
                              0
                              С этим утверждением, я, как олимпиадник, даже соглашусь — по себе знаю, что в проекте предпочту работать над интересными задачами, а от рутины буду отбрыкиваться руками и ногами. Но моя точка зрения здесь в том, что для общего блага проекта задача менеджера в том, чтобы оптимально распределять задачи по способностям и интересам каждого.

                              Если Петя идеальный инженер, и не видит разницы между «выровнять вьюшки по пиксельной сетке», «настроить связь либы А с либой Б» и «оптимизировать поиск по внутренней структуре данных до двух секунд вместо двух минут», а Коля бывший олимпиадник, и для него третья задача в разы интереснее первых двух, и на ней он способен добиться отличных результатов в рекордное время, а на первых двух будет прокрастинировать неделю, то выбор довольно очевиден. Просто подкидывайте сотрудникам их личные, идеальные задачи. На любом проекте можно сделать такое распределение (в конце концов, если у вас в команде есть олимпиадник, значит, вы его зачем-то наняли, то есть процент алгоритмических задач в вашем проекте достаточно высок).
                                0
                                А чтобы сделать такое распределение, решите задачу о назначениях… Или заставьте олимпиадника ее решить, пусть хотя бы над чем-то работает :-)
                                  +2
                                  «Не видит разницы» все же редкость. Идеальному инженеру тоже интересны сложные задачи, а рутинные воспринимает как неизбежное зло. Но если ему оставить только рутину, то есть вероятность его потерять — уйдет туда, где олимпиадников или нет, или их не выделяют, давая всем интересные и рутинные задачи в плюс-минус равной пропорции.
                                    0
                                    Мир же не делится на чёрное и белое, на исключительно алгоритмические и исключительно примитивные задачи. Есть полумеры, инженерные задачи с отдельными моментами «на подумать», или алгоритмические задачи, для которых требуется вначале подготовить инфраструктуру для тестирования. Проще говоря, хороший менеджер умеет решить задачу о взвешенном паросочетании между задачами и работниками так, чтобы каждый остался в среднем доволен своими заданиями.
                                      +1
                                      В начальном комменте у вас не было слова «в среднем», но была фраза «выбор очевиден». Я как раз заострил внимание на том, что не очевиден, что распределение задач по принципу максимальной производительности конкретного человека на конкретных типах задач при всей своей очевидной выгодности в краткосрочном плане может привести у неочевидным проблемам в долгосрочном.
                                        0
                                        И все же, я знаю несколько сфер, где креатива больше и не нужно отбирать у простого инженера (такого как, например, я) его работу :) Сходу:

                                        — финансовая аналитика — вот где по-настоящему много статистики и математики. Не будучи голословен, мой друг с сугубо математическим образованием и ph.d. устроился в один из крупных банков Лондона на такую должность, креатива там достаточно, зарплаты — вдвое-втрое выше среднего даже по GB.
                                        — моделирование процессов в Matlab, например расчет физ. процессов определенного автомобиля. В свое время делал курсач на данную тему как инженер по автоматике, но использовал, конечно, готовую мат. модель. Для меня большинство выводов и формул давалось с диким трудом, а математик бы решил не подавившись.

                                        А оптимизацию быстродействия все же оставьте инженерам, в 90% случаев наших знаний вышки для этого хватает.
                        0
                        > Не в обиду, но мое личное мнение — что спортивное программирование хорошо лишь тем, что поддерживает «хакерский» стиль мышления, который позволяет решать различные задачи нестандартными методами + знание, как это устроено «под капотом».

                        И это именно тот набор навыков, который требуется от хорошего инженера, не так ли?
                          +1
                          От инженера скорее требуется прежде всего предсказуемость результата.
                            0
                            Не совсем понятно какой смысл вы вкладываете в предсказуемость результата, можете написать более развернуто?
                              0
                              Для инженера важнее умение решать задачу стандартными, апробированными, технологичными способами, если задача не сформулирована как «найти нестандартное решение» или очевидно, что стандартное решение не проходит формальные критерии (например по себестоимости). Поиск нестандартного решения может занять неопределенно долгое время, а бизнесу нужна предсказуемость, которую дают прежде всего стандартные способы. Пускай меньше прибыль, но меньше и риски. «Хакерский» стиль мышления хорошим инженерам не необходим, он необходим отличным, способным не только решать задачи от менеджмента, но и находить их без его указаний, а то и вопреки им.
                                +1
                                Да, в своем комментарии я имел ввиду именно отличных инженеров.

                                Кстати, хороший спортивный программист должен обладать и предсказуемостью — довольно большой процент задач на соревнованиях требует быстро и безбажно «собрать» из стандартных алгоритмов решение.
                                  +4
                                  Проблема то в том, что обычным программерам не нужно писать свою сортировку, и не нужно знать 100+ алгоритмов. Нужно уметь ориентироваться в проекте, где куча приложений с количеством строк кода в N*100.000, и еще отдельная разветвленная логика в билд скриптах. При этом, в некоторых из этих проектов полная вакханалия в коде, антипаттерны, говнокод, который нужно уметь рефакторить (если конечно, не хочешь завалить сроки или вырыть себе яму). При этом, не отвлекаясь от текущих задач.
                                  Я уже молчу, что зачастую все решают «soft skills», типа как знать, какие проблемы ты можешь решить сам, а какие надо эскалировать выше.

                                  Вообще я вижу фундаметальную проблему в том, что большинство задач в спортивном программировании решается методом algoritmic decomposition. В индустрии такого давно НЕТ (этак с конца 80-х). Фреймворки повсюду, кода в разы больше и задачи другие.

                                  Еще раз — что мне не нравится, это опухшее ЧСВ *некоторых* олимпиадников, которые заняв места на паре олимпиад, считают, что любой, кто не знает, к примеру, алгоритм Флойда-Уоршела — ЛОХ, и вообще непонятно за что ему деньги платят.
                                    +2
                                    Не меньше раздражает мнение некоторых «практиков», что олимпиадники вредны. И опять же у вас тезис какой-то, что олимпиадные навыки будут напрямую использовать в работе, а по другому олимпиадники не работают.
                                    Никто не утверждает, что для 100% вакансий надо какие-то mad skillz. Вообще большинство вакансий может занимать трудолюбивый и исполнительный птушник. Но есть еще меньшинство вакансий для которых нужны навыки отличного инженера с «хакерским» подходом.
                                      +1
                                      >Вообще большинство вакансий может занимать трудолюбивый и исполнительный птушник.
                                      Вот оно — ЧСВ. Хакер != олимпиадник. Более того — алгоритмы и структуры данных это не rocket science, это проходят в универах на первых курсах. Если типичный олимпиадник конкретно эту тему знает лучше среднего студента — не делает его рок-звездой.
                                        +1
                                        Да при чем тут ЧСВ? В большинстве отраслей основной костяк работников не нуждается в высшем образовании.
                                        Олимпиадник это не знание тысячи алгоритмов. Олимпиадник это не рок звезда. Просто успешный олимпиадник с большей вероятностью может решать сложные задачи, находить нестандартные пути решения, делать это быстро и четко. Этот навык не обязателен для большинства мест работы, но никто не говорит «только олимпиадники и везде!».
                                          +1
                                          >Просто успешный олимпиадник с большей вероятностью может решать сложные задачи, находить нестандартные пути решения, делать это быстро и четко.
                                          Этим спортивный программист мало чем отличается от победителя олимпиад по математике, физике или другим точным наукам. Да и от любого хакера вообще. Только вот в отличии от вышеупомянутых без опыта в программировании, олимпиадник вполне может называть переменные «a,b,c» писать жуткий код и при этом презирать «практиков».
                                          Спортивное программирование совсем не приучает к «best practices». Скорее наоборот.
                                            +1
                                            Я придерживаюсь разных стилей написания кода на олимпиадах и в проектах. Да, оно не приучает к «best practices» (в плане стиля кода и используемых библиотек), цель спортивного программирования в другом. Но я не называю свои переменные в проекте «a,b,c». Научиться писать читабельный код на самом деле не так уж и сложно. Сложнее научиться добиваться успехов в олимпиадах
                                              0
                                              ЧСВ у меня низкое, я не знаю множества библиотек, не работал с многими языками и фреймворками, на которых хотел бы, и я определенно не гуру в использовании коммандной строки. До хакера мне очень далеко
                                              +1
                                              С чего вы взяли что олимпиадник будет писать жуткий код? Жуткий код = невозможность его отладить и невозможность объяснить его сокоманднику (если олимпиадник участвует в ACM контестах).
                                                0
                                                В постоянной команде из 3 человек можно придерживаться короткого стиля, понятного каждому участнику, но непонятного за пределами команды. Для сокомандника этот код будет вполне ясным, но другим он может показаться жутким. Для себя же свой код, написанный 5 минут назад практически всегда будет ясным
                            +1
                            Я учился в том самом «OrelSTU», и тоже участвовал в ACM ICPC (не так успешно, правда), знаком со многими олимпиадниками. У всех с ЧСВ все нормально. Откуда ваша статистика?
                            +2
                            Спасибо за рассказ. Я в качестве практиканта участвовал в проекте «Ябракадабра», когда он только начинался — в 2010 году. Интересно, остался ли там еще написаный мной код?
                              0
                              Эх, кураторы говорят, что весь изначальный код переписали. Уже ведь три десятка практикантов через этот проект прошло:)
                              +3
                              Алекс, я с большим интересом прочитал пост, узнал много деталей о том, как именно будет выглядеть этот волнующий момент для меня самого (тоже олимпиадника) через какое-то время, спасибо!
                              Появился только один вопрос: как натура олимпиадная и творческая ты, случайно, не забыл об NDA? :-) Из знакомых ребят, которые ездили в фейсбук стажироваться, никаких деталей о том, чем они там занимались, вытащить не удалось, они отбивались запретом разглашать эту информацию. В яндексе такого нет?

                              UPD: Ой, я невнимательный — запостил не автор, оказывается. А поделитесь кто-нибудь инвайтом с человеком — он всегда писал много и хорошо. Если кто знает ресурс CodeForces, посвященный спортивному программированию, то этот товарищ является одним из ведущих тамошних блоггеров.
                                0
                                Есть соглашение о конфиденциальной информации и объектах интеллектуальной собственности. Действует в течение 3 лет после прекращения гражданско-правового договора
                                  +4
                                  Отвечу за автора:
                                  Ябракадабра — открытый проект, и NDA на него не распространяется.

                                    0
                                    А исходники можно где-нибудь посмотреть?
                                      0
                                      Да его уже долго собираются выложить в опенсорс, но всё никак не выложат.
                                        0
                                        Оно какое-то время даже лежало в открытом доступе

                                Only users with full accounts can post comments. Log in, please.