Я впервые начал заниматься соревновательным программированием (КП) на первом курсе бакалавриата. Я должен был начать раньше.

До сих пор КП играла важную роль в моей карьере. Фактически, это была основная причина того, что я заключил контракт с фрилансером (Toptal), которым я занимаюсь. Проще говоря, хорошие навыки в соревновательном или спортивном программировании позволили мне значительно опередить других программистов.

Так что да, CP важен. Давайте просто перечислим причины, по которым это помогает вам как программисту.

(1) Улучшает логику

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

(2) Ускоряет кодирование

Это могло быть прямым следствием пункта (1). Благодаря улучшенной логике вы сможете быстрее решать проблемы, быстрее принимать решения и быстрее вводить их в код, не беспокоясь о том, как лучше всего его кодировать.

Дополнительное преимущество - существует множество соревнований по спортивному программированию на 2–3 часа, поэтому, если у вас есть привычка проводить их, вы, должно быть, также увеличили скорость набора текста.

(3) Вы начнете писать лучший код в любой ситуации.

C, C ++ и Java - это скомпилированные языки. То есть они напрямую взаимодействуют с системой и, как следствие, дают вам 100% контроль (образно говоря) над тем, как работает ваш код.

Если вы выполняете CP на этих языках (что вам следует), вы будете регулярно сталкиваться с ситуациями, когда ваш код зависает на несколько миллисекунд или занимает слишком много памяти. Тогда микрооптимизации играют огромную роль.

  • Цикл выполняется больше раз, чем должен?
  • Может ли дерево рекурсии как-то задерживаться?
  • Можем ли мы лучше использовать переменные, чтобы уменьшить объем памяти?

Решение этих проблем поможет вам написать лучший код на других интерпретируемых языках, таких как Python, Ruby, JavaScript. Неважно, пишете ли вы мобильное приложение или пишете монитор задач cron.

Уроки, которые вы усвоите в CP, останутся с вами, где бы вы ни писали.

(4) И, наконец, что не менее важно, CP помогает вам взломать раунды кодирования найма.

В раундах программирования соревновательное программирование всегда использовалось как проверка потенциала кандидата. Я не на 100% согласен с этим, но вы ничего не можете с этим поделать. Так что практика CP здесь всегда увеличивает ваши шансы на то, чтобы вас выбрали.

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

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

Я бы порекомендовал начать с Hackerrank, а затем перейти к Codeforces и Codechef.

С уважением,
Ави

PS - Я начал новый специальный список рассылки для разработчиков под названием Dev Letters. Вы найдете там this и многие другие сообщения. Рекомендуем вам присоединиться к ней, чтобы не пропустить ни одного нового контента.