Pull to refresh

Comments 15

Интересно, будут ли когда-то олимпиады по нормальному инженерному программированию? С правильными названиями переменных, красивым, достаточно модульным, достаточно связным кодом и с правильными интерфейсами доступа? Назвать как-нибудь: "код для людей". А то после этих олимпиадников с ЧСВ лопатой приходится код техдолг вычищать и переписывать, благо, нейросети теперь помогают разобраться "что имел в виду автор".

Можно не волноваться - все спортсмены-программисты склонны к быстрому выгоранию, и не работают в профессии уже в возрасте после 23-х лет.

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

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

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

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

А моя практика показывает обратное. В гугле олимпиадников довольно много (их особо активно доставали рекрутеры гугла, гугл проводил собственные соревнования вроде code jam, да и олимпиадникам интервью очень просты). Сам ревьювил много кода от них, и олимпиадного не поддерживаемого кода вообще ни разу не встречал. Люди еще до того как отправить первый код читали руководство по стилю и все понимали.

И есть много компаний где доля олимпиадников очень влика и как-то они от технического долга и ЧСВ сотрудников не развалились. Вон, пока вконтакт не отжали, там почти все олимпиадниками писалось. Брат Павла Дурова - Николай - чемпион мира вообще, они из олимпиадной тусовки кучу народу набрали с самого начала. И была самая быстрая и удобная соцсеть.

Есть история про то, как в фейсбуке технический долг разгребали, расхлебывая последствия олимпиадного программирования, и сколько ресурсов на это было выделено. Гуглится по ... code quality problem. Что-то до сих пор разгребают. Возможно в гугле гораздо лучше ситуация. Но я во многих местах видел, что именно такие люди пишут рабочий и даже быстрый, но абсолютно неподдерживаемый код, а на замечания реагировать не хотят. Буду рад, если это en masse не так.

расхлебывая последствия олимпиадного программирования,

Нагуглил вот это: https://darkcoding.net/software/facebooks-code-quality-problem/

Там нигде не упоминается ни "competitive", ни "olympiad". Ни одного упоминания олимпиадного программирования или соревнований.

Позволю себе процитировать John Ousterhout, "A Philosophy of Software Design":

Facebook is an example of a startup that encouraged tactical programming. For many years the company’s motto was “Move fast and break things.” New
engineers fresh out of college were encouraged to dive immediately into the
company’s code base; it was normal for engineers to push commits into production in their first week on the job. On the positive side, Facebook developed a reputation as a company that empowered its employees. Engineers had tremendous latitude, and there were few rules and restrictions to get in their way.


Facebook has been spectacularly successful as a company, but its code base suffered because of the company’s tactical approach; much of the code was unstable and hard to understand, with few comments or tests, and painful to work with. Over time the company realized that its culture was unsustainable. Eventually, Facebook changed its motto to “Move fast with solid infrastructure” to encourage its engineers to invest more in good design. It remains to be seen whether Facebook can successfully clean up the problems that accumulated over years of tactical programming. In fairness to Facebook, I should point out that Facebook’s code probably isn’t much worse than average among startups. Tactical programming is commonplace among startups; Facebook just happens to be a particularly visible example.

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

А где здесь про олимпиадное программирование? Самое типичное стимулирование на "тяп-ляп и в продакшен" — здесь дело в менеджменте. Какой людям таргет поставишь — такой результат и получишь.

Опять же, ни одного упоминания олимпиадников нет. Вы сову на глобус натягиваете.

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

Да, кстати, у вас практика работы с олимпиадниками есть, скажите, а они у вас все выгорают до 23 лет и уходят из профессии, как утверждает @marteinветкой выше?

Есть практика переписывания за ними кода. Есть практика менторинга стажеров и джунов внутри компании, три кейса олимпиадных. Код будет написан, но он будет для машины, а не для человека. Модульность - для дебилов. Комментарии - для дураков. Можно обойтись кармаковским // what the fuck?! Только через год-два как-то начинает доходить. Не выгорели, научились, но времени ушло много, далеко не две недели.

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

В другой раз был релиз, где мне пришлось писать генетический алгоритм для решения NP задачи. И это обычный Enterprise проект. Компетенции решать такие задачи не было ни у кого, потому что это далеко от перегона json. Не раз за карьеру приходилось решать NP задачи. На гитаре от удивлённых коллег узнал, что они тоже сталкивались, но просто даже не знали, что это за класс задач до митапа и не решили.

ЗЫ. По сей день разгребаю оптимизации за антиалгоритмистами, которые в попытке продемонстрировать знание фреймворков не спешат оттачивать когнитивные способности.

Все, можете минусовать)

В принципе помимо "тяжеловесного" спортивного программирования с чемпионатами можно найти относительно "легковесные" соревнования - челленжи, которые не требуют очень большого количества времени, но тоже могут быть интересны. Как пример (не реклама) могу порекомендовать, скажем Challenges на Stack Overflow. Там достаточно свободный формат, можно практически на любом языке. Я поучаствовал в Integer Counting, занял четвёртое место. Ещё сейчас в Германии проводится соревнование Hidden Gems (там камушки в лабиринте надо собирать), это в первую очередь для учеников гимназий, но и родители могут принять участие в открытой лиге. Там можно на одном из 16 языков участвовать, регистрация открыта до конца года. Мне было интересно Раст чутка прокачать, получил массу удовольствия. Тут у меня третье место в первом раунде. Сайт на немецком, но с современными технологиями это вообще не проблема, да и после регистрации (России в списке стран нет, но можно Англию выбрать) потом язык не нужен - кидаете код на гитхаб, бот его забирает и раз в сутки обновляет результаты. Бывают совсем узко-специальные, в позапрошлом году летом проводился Summer of LabVIEW, там я отчаянно читерствовал, как результат - первое и второе места в двух соревнованиях. Много времени это не занимает, пару-тройку выходных от силы, но как занятие, чтобы размять мозги - да почему бы и нет.

Sign up to leave a comment.

Articles