company_banner

Помогают ли опыт и достижения в спортивном программировании в реальной жизни и работе, или мешают?

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

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

    В связи с приближением Яндекс.Алгоритма, нашего собственного чемпионата по спортивному программированию, мы решили спросить разработчиков из Яндекса, которые как участвовали и побеждали на различных контестах, так и нет, помогает ли опыт в спортивном программировании в программировании промышленном?



    Все этапы Яндекс.Алгоритма в этом году пройдут в онлайне, так что поучаствовать в нём смогут и те, кто не готов куда-то ехать. Алгоритм состоит из нескольких отборочных раундов, в каждом из которых нужно решить пять задач за 100 минут. В финал, который состоится 6 августа, выйдут 25 лучших по результатам отбора. Тренировочный раунд, до которого стоит зарегистрироваться, пройдет 3 мая.



    Роман Удовиченко, Минск.
    Разработчик геосервисов. В Яндексе — три года.

    Работает в Яндекс.Картах над различными задачами, решение которых позволяет улучшать читаемость карт и делать их более удобными для ориентирования. Окончил факультет прикладной математики и информатики БГУ в 2013-м году. Серебряный медалист студенческого чемпионата мира ACM ICPC 2013, финалист и призер еще множества различных соревнований. Автор задач финала Яндекс.Алгоритма 2013 года.



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


    Михаил Парахин, Москва.
    Директор по поисковым технологиям. В Яндексе — год

    После окончания МИФИ начал работать в ЗАО НТЦ «Модуль». В 90-х это было почти единственное место в Москве, где занимались системами автоматического обучения. Потом ушел в компанию Parascript, которая фактически является монополистом в области распознавания рукописного и печатного текста. Долгие годы работал в США. Последние семь лет — в Microsoft, пять из которых возглавлял в Bing подразделение мультимедийных поисковых сервисов. Прошлой весной пришёл в Яндекс директором по поисковым технологиям.

    image

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


    Павел Сухов, Нижний Новгород.
    Младший разработчик систем хранения геоданных. В Яндексе — год.

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

    image

    Главный плюс спортивного программирования – оно учит решать сложные задачи и делать это быстро. Главный минус – оно учит решать сложные задачи и делать это быстро. Но представим, что задача простая и решается не быстро, а долго, методично и упорно. Ты умеешь справляться с заданиями одного стиля и соответственно проигрываешь в решении задач другого стиля. Спортивное программирование — это не панацея, но точно не вред. Это механизм работы с конкретным видом задач.


    Алексей Толстиков, Минск.
    Разработчик факторов, куратор минского филиала Школы анализа данных. В Яндексе — 3 года.

    Многократный участник чемпионатов ACM ICPC, занял 20-е место в составе команды БГУ в финале 2010 года в Харбине. Полуфиналист Google Code Jam, дважды финалист Russian Code Cup. Победитель TopCoder Belarus College Tour. Окончил БГУ, где и преподает.



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

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

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


    Владислав Малаховский, Минск.
    Руководитель бригады интерактивных технологий. В Яндексе — 2 года.

    Занимается разработкой Яндекс.Браузера. Учился на факультете компьютерных систем и сетей Белорусского государственного университета информатики и радиоэлектроники. Первые программы на бейсике пробовал писать в 10 лет в кружке Дворца пионеров.



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

    Андрей Черепаха. Минск
    Разработчик интерфейсов. В Яндексе — 1 год.

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



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


    Сергей Силаев. Минск
    Разработчик. В Яндексе — 1 год.

    Занимается анализом и обработкой больших объемов внешних данных. Параллельно преподает в Белорусском государственном университете и Школе анализа данных Яндекса в Минске. Окончил магистратуру факультета прикладной математики БГУ.




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

    Алексей Сикорский, Минск.
    Руководитель минского офиса Яндекса. В Яндексе — 3 года

    Кроме того, что Лёша курирует наш офис разработки, он ещё и руководит сервисом toloka.yandex.ru, которое имеет в своём названии и белорусские корни. Закончил ФПМИ и эконом БГУ и магистратуру Академии наук по прикладной математике.



    У меня есть хобби. Я вот уже лет десять являюсь автором задач и членом жюри наших национальных олимпиад по информатике. В студенческие годы участвовал в ACM, поэтому, как мне кажется, хорошо понимаю душу спортивного программиста. И да, я считаю, что этот опыт очень сильно помогает.

    Спортивное программирование тренирует умение добиваться результата в экстремальных условия в ограниченное время. И это очень похоже на жизнь. Часто приходится решать задачи определенной сложности, которые, возможно, и не имеют решения. Олимпиада – модель маленького мира. Достигни результата, получи высокий балл, и все будет хорошо.

    Нельзя сказать, что потом все олимпиадники становятся хорошими сотрудниками и делают хорошую карьеру. В большинстве случаев это помогает, они успешны, у них очень хорошо развита креативность. Но есть некоторые минусы. Спортивные программисты — это в принципе субкультура, где к твоему мнению часто прислушиваются, ты окружен вниманием, получаешь призы и начинаешь подсознательно чувствовать себя звездой. Когда потом происходит смена обстановки, ты приходишь на работу и перестаешь быть звездой, тебе нужно свой авторитет завоевать заново. И люди часто не понимают: «Как так? Почему, когда я прихожу, никто меня не слушает?» Или думаешь: «Я и так все знаю. Зачем мне надо что-то изучать?»

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

    Кто такой олимпиадник? Это человек, который привык достигать результата при помощи своей креативной деятельности в экстремальных условиях в ограниченное время. Олимпиада — это некая модель, которая мягко ложится на реальную жизнь. В ней часто приходится справляться с задачами, когда ты не знаешь, есть вообще решение или его нет, тебе приходится проявлять креативность, ты ограничен во времени.

    Да, олимпиадник не всегда может построить хорошую карьеру. Но часто люди перестраиваются.

    Михаил Лопаткин, Нижний Новгород.
    Разработчик ядра мобильного браузера. В Яндексе — 2 года

    Пишет мобильный Яндекс.Браузер под Андроид. До Яндекса работал в разных аутсорсинговых компаниях. Окончил Нижегородский ГТУ и сейчас тренирует команду университета по олимпиадному программированию.

    image

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


    Алексей Чернигин, Нижний Новгород
    Разработчик мобильной геоплатформы. В Яндексе — год.

    Окончил ННГУ им. Н.И. Лобачевского. Работал в телекоммуникационной компании, где занимался разработкой и поддержкой программного обеспечения для узлов сотовой связи. Затем разрабатывал системы видеонаблюдения и алгоритмы компьютерного зрения для розничных сетей. В Яндексе занимается разработкой мобильных геоприложений.

    image

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

    Олег Игнатьев, Москва.
    Разработчик качества поиска Картинок. В Яндексе — год.

    Призер Всероссийской олимпиады школьников по информатике, победитель командного чемпионата Москвы. Четвертьфиналист ACM ICPC. Студентом занял седьмое место на полуфинале Россия. Окончил ВМиК МГУ.



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

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

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

    Я видел много обсуждений исследования Норвига. Больше всего нравится замечание, что в нём задавали вопросы спортивным программистам и не спортивным, а интервью у Google действительно очень заточено на то, чтобы первые его очень хорошо проходили. В итоге, если человек не спортивный программист и справился с ним, то, скорее всего, он мегазвезда. Поэтому у не спортивных программистов результаты могли получаться лучше. Но есть еще миллион доводов, почему результаты получились именно такими. Конкретно в то, что спортивные программисты заточены на 5 часов работы я не верю. У меня есть много знакомых, которые постоянно занимаются какой-то деятельностью помимо работы, делают какой-то свой проект и им не жалко на это тратить несколько месяцев.

    Михаил Левин, Москва
    Руководитель службы анализа больших данных. В Яндексе — 5 лет

    Очень большая часть деятельности — работа в наших академических программах. Он преподает в Школе анализа данных, участвует в создании программы обучения на факультете Computer Science Вышки и Яндекса. Дважды завоевывал медали на ACM ICPC в составе команды МГУ им. М.В. Ломоносова.

    image

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

    Иван Фефер, Москва
    Разработчик ранжирования видео. В Яндексе — полгода.

    Учился в Саратовском государственном университете, где очень развиты факультативные занятия спортивным программированием. Участвовал ICL в Казани, Russian Code Cup, VK Cup, Яндекс.Алгоритме. В 2014 году был финалистом ACM ICPC в Екатеринбурге.



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

    Во время соревнований по программированию приходится писать много кода, и это формирует технику, стиль — ты всегда пытаешься продумать свою программу, чтобы не запнуться во время её написания. Это тоже помогает в работе. Конкретно мне иногда приходится проводить эксперименты. Благодаря такому опыту, я могу что-то быстро и эффективно написать, чтобы только проверить свою гипотезу. В такой ситуации можно писать так, будто ты на соревновании, не оглядываясь на какие-то стили. Если гипотеза оказывается рабочей, можно всё реализовывать в соответствии со стандартами промышленного программирования.

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

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

    К тому же, бывают командные соревнования, где члены команды читают код друг друга. Там тоже можно использовать, например, однобуквенные названия переменных, но всё равно внутри формируется свой стиль. Мы всегда знаем, что переменная с названием g означает граф. Конечно, на работе я не называю переменную g, я называю её graph, но для этого мне не пришлось специально переучиваться.

    Из всего негативного, что я слышал, самое правдивое — это, наверное, высокомерность. Иногда участие в соревнованиях мирового уровня, особенно успешное, даёт в голову. Всё, конечно, очень персонально, но, на мой взгляд, это даёт лишь объективную уверенность в себе и ни в коем случае не делает тебя лучше других людей.
    Яндекс
    1 059,86
    Как мы делаем Яндекс
    Поделиться публикацией

    Комментарии 17

      +10
      Несколько человек правильно отметили, что собеседования в некоторые компании сильно заточены под олимпиадников. В результате, при прочих равных, у олимпиадников головокружение от успехов, а у простых смертных — отказы в перспективных для них местах.
      Вопрос, который я хочу задать HR'ам — эта ситуация является недостатком системы отбора кандидатов или нет?
        0
        Я не HR и могу говорить только о Яндексе, но у нас нет такого, чтобы задачи для собеседований затачивались под олимпиадников. Единственное, что может быть как-то похоже — это необходимость написать код за время собеседования. Но это тоже никак не связано с олимпиадниками. Единственное, им в таких органиченных по времени условиях может быть комфортнее, чем другим.
          +5
          Не могу согласиться, собеседовался как-то с ребятами из маркета и получил на одном из этапов хорошую стопку классических ACM-овских задачек на устное решение. Так что может и не везде в яндексе, но такие задачки задают. Не скажу, что это можно считать такой уж заточкой под олимпиадников, но люди не сталкивавшиеся со спортивным программированием с большой вероятностью эти задачи не возьмут.
          Код, который предлагали написать, действительно был абсолютно не олимпиадный.
          +2
          Почему «недостатком»? Заметьте, что эти несколько отметивших сами являются олимпиадниками, заметьте, чем они занимаются в Яндексе. Любая область влево иили вправо от создания сайтов, вёрстки и т.п. требует знания алгоритмов. Это нормально, если мы говорим про нормальные компании.
          Если же о конторках, которые занимаются типичным вебом, то да, я встречал интервью, полностью состоящие из решения задач, либо же (что ещё более унылее) полностью состоящие из тестов на знание языка. Ни то, ни другое, не поддаётся объяснению, но и, собственно, можно представить чего ждать от такой конторки.
          +4
          в Гугле есть негативная корреляция между победами человека на олимпиадах для программистов и его успехами в работе
          Я не думаю, что это специфика Гугла. И корреляция, скорее всего, вызвана тем, что на работу берут или перспективных новичков (спортивное программирование — способ оценить перспективность), или уже опытных экспертов. По итогам работы часть новичков уходит, а профессионалы по большей части остаются — они в этом плане более предсказуемы. В итоге — такая странная корреляция, которая наводит на ложный вывод, что «олимпиадность» мешает карьере. Я уверен, что если сравнить новичков-не-олимпиадников и новичков-олимпиадников, или опытных-не-олимпиадников и опытных-олимпиадников, там всё будет наоборот.
            +1
            А зачем нужно авторизоваться перед регистрацией? Напоминает регистрацию перед регистрацией. Нельзя как-то безо всяких этих паспортов с согласием Яндексу на обработку моих персональных данных просто одноразово зарегистрироваться?
              0
              Тестирующая система будет узнавать вас как раз по яндексовому логину, поэтому он необходим. Завести его совсем просто, например можно авторизоваться через социальную сеть
              +1
              вот и спрашивается, если есть люди, понимающие что спорт программирование не очень то приближено к реальным задачам и зачастую мешает, то почему же они в яндекс олимпиадников набирают?
                0
                На то он и Яндекс, чтоб «реальные» задачи там соответствовали уровню и профилю олимпиадников. Если же вдруг олимпиадник попадает в фирму, где наиболее типичные «реальные задачи» — «сделать UNIT-тесты на entity bean» или «сделать веб-страницу» или «скрам-митинг с зарубежным аутсорс-заказчиком», то он просто плохо умеет искать работу. «Джуниорские» «реальные задачи», конечно же, будут олимпиадника демотивировать.
                +3
                Факты изложены вполне верно, но вот анализ их несколько странный.
                Спортивное и производственное программирование — ортогональные друг другу вещи, которые пересекаются всего в одной небольшой области — в том, что это, в любом случае, программирование, и в том, что для хорошего программирования, в любом случае, нужен интеллект.

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

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

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

                Так что дело не в том, участвовал ли ты в олимпиадах, а в том, почему ты это делал. Если олимпиады — твой конек и твоя страсть, в производстве будет скучно и сложно. Если это всего лишь попытка реализовать себя — никаких проблем это повлечь не должно.
                  +1
                  Судя по тому, что вместо того чтобы показать статистику нам показывают интервью, в Яндексе корреляция тоже отрицательная. :)))))))))))
                    0
                    Лучшая реклама — антиреклама! Суть статьи: «Ребята, если хотите работать у нас в Яндексе — занимайтесь спортом» :))
                    Не знаю как в Яндексе, но в жизни, к сожалению, часто бывает, как у Райкина «Кто сшил костюм?»:
                    — К пуговицам притензии есть?
                    — Нет! К пуговицам притензий нет! Пришиты намертво, не оторвёшь!
                    Так и с программами, можно писать спортивный код, можно писать промышленный код, от них может не быть толка; главный критерий качества кода — удовлетворение потребностей потребителя. Позиция «Я программист, я должен программки писать» приводит к отрыву от Земли :))
                      +2
                      Похоже на то как оценивать полезность/вредность участников соревнований по скоростной или меткой стрельбе в составе группы войск, которая ведёт длительные боевые действия в горячей точке. Полезны ли их навыки меткой и быстрой стрельбы? Да, полезны, но насколько? Насколько они полезнее умения не попасть в засаду или окружение, например? Всё зависит от задач, которые ставит жизнь.
                        +2
                        А может быть надо вводить специальное задание на олимпиадах и в соревнованиях по спортивному программированию:

                        − превратить не читаемый код в понятный.

                        Тоже за ограниченное количество времени. То есть тренировать навыки:

                        − прочитать код,
                        − сделать его чище.
                          +1
                          Как предлагаете проверять код на «понятность»? Если я открою его в своей любимой IDE, нажму Auto format, а потом назначу каждой переменной случайное слово из словаря длиною в 5 букв, он станет понятным? Предложите решение, которое масштабировалось бы на несколько тысяч участников.
                            +2
                            На codeforces некоторые соревнования собирают до 5000 человек. Все задачи тестируются автоматически на специально подготовленном наборе тестов. В сам код лезут только если надо глазами сопоставить два решения на предмет плагиата. Если бы можно было в автоматическом режиме проверить является ли код читаемым и понятным, то такие модули были бы уже встроены во все популярные IDE.
                              +4
                              На соревнованиях TopCoder и Codeforces можно получать дополнительные баллы за тесты, которые валят решения соперников.

                              Таким образом применяется умение прочитать, понять и найти баг.

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

                            Самое читаемое