Codebattle — игровая платформа, на которой программисты соревнуются друг с другом. Это проект с открытым исходным кодом. В статье расскажем о платформе, пообщаемся с её разработчиками. Участники команды поделятся своими историями, покажут, как Codebattle повлиял на их карьеру.
На Codebattle проходят поединки программистов. Участники решают задачи. Побеждает тот, кто первым справился с заданием.
Во время поединка пользователь одновременно видит свой код и код соперника. То есть каждый из участников битвы в режиме реального времени наблюдает за действиями соперника. Это делает соревнование драйвовым и эмоционально насыщенным.
Часть интерфейса страницы поединков: редактор, список участников и зрителей, комментарии
Пользователь может выбрать для соревнований следующие языки:
Чтобы участвовать в поединках, необходимо авторизоваться через GitHub.
В ожидании живого соперника можно посоревноваться с ботом. На Codebattle есть виртуальные противники с уровнем скиллов от elementary до hard.
В разделе Tournaments проходят турниры. Создать турнир может любой пользователь. Чтобы другие игроки присоединились к соревнованию, достаточно отправить им ссылку.
Промежуточный итог: платформа Codebattle позволяет пользователям соревноваться друг с другом в написании кода на нескольких языках, включая JavaScript, PHP, Python и другие. На сайте есть рейтинг игроков, возможность наблюдать за поединками в качестве зрителя и играть с ботами.
Codebattle — проект с открытым исходным кодом (open source или «опенсорс»). Контрибьюторы проекта поделились своими историями, рассказали, как участие в проекте повлияло на их развитие и карьеру.
С Виталием Миляковым поговорили о технологиях, которые используют разработчики Codebattle, и о команде. Также Виталий рассказал свою историю.
«На фронтенде используем JavaScript и React. На бэкенде используем фреймворк Phoenix, написанный на Elixir. Подробнее о технологиях написано в репозитории проекта.
Список контрибьюторов также можно увидеть в репозитории проекта.
Ядро системы накидали Виталий, Вадим и Ула где-то год назад. Был спринт с Игорем, Андреем и Димой. Много полезного сделала Валя. Большой вклад в проект сделал Abbath. Он добавил в проект языки Haskell и Perl. Сейчас проект ждёт новых героев.
Участие в опенсорс-проекте помогает разобраться в технологиях, получить опыт работы с теми или иными инструментами. Отличительная черта проекта Codebattle — новичков сразу же вовлекает комьюнити. Общаемся в канале #codebattle в Telegram-сообществе Хекслета, часто созваниваемся. Сообщество у нас дружелюбное.
Проект прокачивает людей, даёт опыт командной работы. Участники получают важные навыки работы с проектом. Узнают о Git, учатся релизить, правильно переписывать код. Новички получают бесплатные консультации, общаются с опытными разработчиками.
Такой опыт нужен и важен для трудоустройства. Многие люди приходили в Codebattle без работы, а потом устраивались в коммерческие проекты. Конечно, все знания и умения можно получить самостоятельно. Но командная работа ускоряет этот процесс, делает его эффективным.
Я работал разработчиком, писал на Ruby on Rails. Мой уровень был junior+. Увидел Codebattle и захотел участвовать в проекте. Сразу начал изучать Elixir, JavaScript, React, Clojure. То есть благодаря Codebattle я расширил стек, превратился из рельсовика в универсального специалиста.
Результат не заставил себя ждать: буквально через полгода после начала работы с Codebattle меня схантили в коммерческий проект. Устроился на новую работу вместе с Вадимом и Улугбеком, они тоже активно участвовали в Codebattle. Проект дал полезные знакомства благодаря нетворкингу.
Участие в опенсорсе дало мне уверенность, позволило получить работу с более высокой зарплатой. Я научился планировать архитектуру и ощутил умение делать проекты. По сути, Codebattle превратил меня из джуниора в миддла.
С работой получилась интересная история. Известная компания открыла вакансию, искали разработчика на Elixir. Откликнулся, прошёл тесты, показал опыт участия в разработке Codebattle. Интервьюерам проект понравился, а я прошёл собеседование. Но на работу в эту компанию я так и не вышел, так как получил более интересное предложение от другого работодателя.
Полгода назад устроился в arena.tech. Опыт участия в Codebattle помог получить эту работу, а также решать рабочие задачи. Даже использовал в коммерческом проекте часть кода, написанного для Codebattle.
«На собеседовании показал опыт участия в проекте, это заменило тестовое задание».
Важный момент, который нужно понимать. Codebattle — opensource-проект. Код далёк от идеала, есть косяки, есть легаси. Это надо учитывать, на это надо обращать внимание интервьюеров во время собеседования».
Валентина рассказала, как участие в Codebattle мотивировало её изменить карьеру.
«До знакомства с Codebattle я уже работала, занималась фронтенд-разработкой. Первая работа была не очень удачным выбором. Пригласили в Codebattle, согласилась.
Здесь я начала изучать новый язык — Elixir. Работа с этим языком изменила моё восприятие программирования. Сильным драйвером развития стала командная работа. Практиковали созвоны, парное программирование.
В Codebattle получила реальный опыт работы с продакшен-кодом. Работала с разными инструментами, которые вряд ли потрогала бы самостоятельно, например, с Docker. Это не какой-то пэт-проект для себя и друзей, а платформа для людей.
Опенсорс-проект мотивировал меня изменить карьеру. Я стала более уверенной, появилась решительность, стала ходить на собеседования. Когда искала новую работу, показывала участие в Codebattle. Потенциальные работодатели расспрашивали о проекте, смотрели ссылки на GitHub в резюме. В итоге устроилась в известную компанию.
Codebattle стал хорошей строчкой в резюме, дал тему для разговора с любым интервьюером.
«Да, на собеседованиях я рассказывала про свое участие в Codebattle, обсуждали фичи, которые я делала. Да и в целом когда говоришь, что на эликсирчике писала, положительно смотрят на это».
Сначала я боялась, думала, что ничего не умею. Это нормально. Новичкам рекомендую изучить проект, заглянуть в issue. Соблюдайте культуру opensource-проектов. Это поможет успешно участвовать в разработке, расширит кругозор и даст важный опыт».
До Codebattle Игорь уже работал программистом, и не где-нибудь, а в «Хекслете». Тем не менее участие в проекте помогло Игорю вырасти. Вот его история.
«Работал в IT менеджером, решил стать программистом. В 2017 году прошёл обучение на «Хекслете». В 2018 году Кирилл Мокевнин позвал работать в «Хекслет». Здесь я отработал около 8 месяцев.
Сменил работу. До выхода на новое место у меня было около месяца. Пошёл в Codebattle, чтобы получить новый опыт. Стал изучать Elixir и фреймворк Phoenix. Эти инструменты мне понравились.
На новом рабочем месте разговаривал с CTO. Разговор зашёл о BEAM — виртуальной машине Erlang. Надо понимать, что Elixir — надстройка над Erlang, он использует BEAM. Рассказал CTO об опыте работы с Elixir в Codebattle. В итоге меня взяли на Erlang.
«На текущую свою работу я устраивался Ruby-разработчиком, делал тестовое на Ruby. Но упомянул опыт разработки Codebattle с Elixir, и мне предложили участвовать в проектах на Elixir, так что теперь я Elixir-разработчик. Это фан и опыт совместной разработки с более опытными программистами. Проект дал возможность пощупать новые технологии: Elixir, а для кого-то и React. Получилось пополнить свой аккаунт на GitHub и добавить в резюме опыт опенсорс-разработки».
Codebattle изменил вектор моего развития. В настоящее время 80 % рабочего времени пишу код на Elixir, остальные 20% на Ruby. То есть благодаря опенсорс-проекту я расширил стек.
Codebattle даёт опыт участия в полном цикле разработки. Учит работать с Git, самостоятельно настраивать окружение. Здесь найдётся место как для бэкенд-, так и для фронтенд-разработки, кроме Elixir тут можно поработать с React.
В Codebattle можно получить важные технические навыки, попробовать парное программирование. Эта практика стимулирует развитие».
Улугбек поделился своей историей.
«На момент старта проекта я был безработным. Было свободное время, решил поучаствовать. Познакомился с новым для меня языком Elixir и фреймворком Phoenix. Сразу окунулся в проект, уже второй комит в нём мой.
Потом сбережения иссякли, стал искать работу. Пришёл на собеседование, рассказал интервьюеру об участии в Codebattle. Потенциальный работодатель оценил мой интерес к функциональной парадигме. Было тестовое задание, я его выполнил. Так устроился на работу.
Писал на Python. Кстати, благодаря опенсорс-проекту понял, что язык — всего лишь инструмент, и для разных задач подходят разные языки. Есть задача, для решения которой нужен Python? Дайте две недели, и я смогу работать.
Когда закрылся проект на Python, встал вопрос о новой работе. Но он быстро решился благодаря социальным связям. Меня, Виталия и Вадима позвали в новый проект.
Участие в Codebattle научило меня работать в команде. Это знакомство с Виталием и Вадимом, опыт парного программирования, социализация. Проект расширил мои технические горизонты, позволил получить прибавку к зарплате».
Вадим рассказал, что ему дало участие в разработке Codebattle, а также о правдивом лозунге для привлечения контрибьюторов с фразой о трёхкратном росте зарплаты. Слово Вадиму.
«Узнал о проекте, когда руководитель «Хекслета» Кирилл Мокевнин объявил в сообществе, что нужен мейнтейнер для Codebattle. Я вызвался, хоть и не представлял, что от меня требуется. Нужно было решить, готов ли я принять ответственность.
Я не знал экосистему. Понимал, что нужно будет помогать другим участникам проекта. В итоге я решился, так как ответственность — повод для роста. Когда начали работать над проектом, я занимался фронтендом. Также занимался менеджментом. Создавал задачи, контролировал процессы. Потом в проект пришёл Виталий и стал мейнтейнером.
Много общался с другими людьми из другого круга. Нужно было созваниваться и совместно решать задачи со специалистами с другим мышлением. Такое общение — ещё один драйвер роста. Хорошим фактором роста стал воркшоп Кирилла Мокевнина по DevOps.
Участие в Codebattle создало хороший фон для развития карьеры. Добавил в резюме опыт работы в опенсорсе, опыт контрибуции на разных языках, использование разных технологий.
«У меня была хитрая стратегия: так как я, в основном, занимаюсь фронтендом, то опыт в несвязанных сферах (Elixir) помогает развить эрудицию и играет на руку в собеседованиях: мало ведь кто ожидает на позицию фронтенд-разработчика человека с опытом на Elixir. Собеседующий фронтендер видит опыт, который он не может оценить в силу отсутствия компетенции в данной сфере, и это производит на него сильное впечатление. А если чуть более серьезно, то вспомню свой лозунг для привлечения контрибьюторов в Codebattle: благодаря участию в проекте некоторые контрибьюторы нашли работу и увеличили зарплату в три раза. Это чистая правда».
Стал увереннее в себе, это важнейшее приобретение по итогам участия в проекте. Переехал в Москву, устроился в коммерческую компанию».
Дмитрий Батаев рассказал, что приобрёл благодаря участию в разработке Codebattle.
«Как Codebattle помог мне прокачаться? Очень короткий ответ на этот вопрос: участие в разработке проекта дало мне уверенность в своих силах. Это один из ключевых факторов успешного трудоустройства, развития карьеры и профессионального роста.
Работал с фронтендом, обеспечивал взаимодействие сервера с фронтендом с помощью сокетов. Познакомился с фреймворком Phoenix и языком Elixir. Это очень полезный опыт.
Участие в разработке проекта дало мне уверенность в своих силах.
Как участие в разработке Codebattle повлияло на карьеру? На собеседованиях я рассказывал о проекте. Интервьюеры задавали вопросы, интересовались деталями. Я объяснял, чем именно занимался, чему научился. Думаю, это сыграло роль: помогло мне пройти собеседование и устроиться на работу».
Сергей Кривцов рассказал свою историю участия в Codebattle.
«Пришёл в Codebattle на старте проекта вместе с Улугбеком, Виталием и другими ребятами. В основном у всех был какой-то опыт, а я только начинал путь в разработку, опыта не было. Сразу же проявились пробелы в знаниях, я увидел, чего мне не хватает, над чем нужно работать. Например, совсем не знал базы данных.
Включился в работу, старался быть в курсе, участвовал в парном программировании. Смотрел на Elixir, но вынужден был сделать паузу. Весь 2018 год выпал из обучения по состоянию здоровья: сломал руку. Несмотря на это, записался на воркшоп Кирилла Мокевнина по Ruby.
Продолжил разбираться с Elixir, познакомился с Erlang. Этот язык понравился. Чтобы понимать Elixir, нужно разобраться с Erlang. На практике узнал Git. Очень понравилась командная работа. Познакомился с жизнью настоящего проекта, это очень важный опыт.
Во время работы над проектом нам помогал Кирилл: говорил, что интересно, что плохо. Это тоже важный опыт и ценные знания.
Устраивался на работу в качестве разработчика на Node.js. Показал в портфолио участие в Codebattle. Во время собеседования тимлид увидел репозиторий на GitHub. Разговорились, сошлись в любви к Erlang. В итоге меня взяли на работу. Уже прошёл испытательный срок».
Слово членам команды.
Игорь Инковский: «Любой желающий может присоединиться, опыт может быть самый разный, задачки найдутся для каждого. Но нужен энтузиазм и некоторый навык самостоятельности. Тут помогут по конкретным вопросам, но вряд ли будут водить за руку и, например, делать подробное описание задачи. Недавно, кстати, в канал в слаке зашли два бразильца, чтобы написать о баге. Виталий их позвал поучаствовать в разработке, и они вроде как заинтересовались».
Вадим Сафонов: «Так как люди занимаются проектом в свободное время, качество кода не на высоте. Это осложняет онбординг для новичков, поэтому единственным ограничением является способность разобраться в технологиях и умение читать чужой код».
Ознакомьтесь с разделами репозитория о технологиях и правилах участия в проекте. После этого присоединяйтесь к каналу #codebattle в сообществе Хекслета. Обсудите с другими членами команды задачу и приступайте к работе.
И участвуйте в поединках — эти виртуальные сражения прокачивают умения решать задачи и думать быстро.