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

В последние годы я настаивал на том, чтобы команды, с которыми я работаю, делились знаниями между их участниками. Я делал это с помощью сеансов обмена знаниями, практических занятий и совсем недавно с помощью Coding Dojos. Все это имело большие преимущества для команд, но я заметил, что Coding Dojo имеют не только большое техническое и социальное влияние, но и вносят большой вклад в счастье членов команды.

Давайте рассмотрим две основные части Coding Dojos и мои любимые инструменты, которые помогут с ними.

"Coding Dojo – это собрание, на котором группа программистов собирается вместе, чтобы решить задачу по программированию". — codingdojo.org

Проблемы

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

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

Вот несколько тем, которые обычно требуют решения проблем:

  • ТВЕРДЫЕ принципы
  • Парное программирование
  • Рефакторинг
  • Разработка через тестирование (TDD)

И вот несколько веб-сайтов, которые помогут вам их подобрать:
LeetCode
Dojo Puzzles
Kata-Log

Ограничения

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

Вот несколько ограничений, которые я обычно выбираю для Додзе:

  • 1 пилот (кодирование) + 1 второй пилот (помощь) + отдых в тишине.
  • Нет передачи примитивов между методами в качестве параметров или возвращаемых типов.
  • Не используйте «другое».
  • Не более 2 параметров на метод.

Добавляя ограничения к задаче, мы можем:

  • Принуждайте участников выбирать конкретные технические темы для решения задачи.
  • Обеспечить сотрудничество и общение между участниками.

Инструменты

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

VS Code был моим выбором номер 1 для этого. Это позволяет нескольким людям работать над кодом одновременно, используя расширение Live Share с очень приличной производительностью! Кроме того, разные разработчики используют разные IDE и редакторы кода, а VS Code можно запустить в веб-браузере, просто перейдя на vscode.dev. Я имею в виду, что любой может начать работу с Coding Dojo менее чем за 5 минут, имея почти все необходимое.

Я использую Coding Dojos в основном по трем причинам:

  • совершенствование технических навыков
  • привлечение команды к общению и веселью вместе
  • привнести тенденции сообщества и передовой опыт в

Мы принимаем вызов, который касается того, что мы хотим решить с технической стороны. Задача, которую мы выбираем, обычно связана с темами, которые мы хотим, чтобы команда улучшила или изучила, на основе таких тем, как TDD, принципы SOLID, методы рефакторинга и многие другие!

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

Так что теперь иди и попробуй сам! Если получится, сообщите мне о результате. 👋