Ежедневные задачи разработчика
Разработчики ежедневно сталкиваются с необходимостью чтения и понимания уже написанного кода, написания нового кода, принятия решений и общения с командой. Важно уметь балансировать между скоростью, качеством и стоимостью разработки, что отражено в треугольнике Хопкинса.
Проблемы и решения
Основные трудности, с которыми сталкивается каждый из блока разработки, включают в себя нехватку времени, постоянные созвоны и взаимодействие с различными отделами (сетевики, DevOps, ибэшники). Для решения этих проблем необходимо оптимизировать процессы и ответственно делегировать задачи.
Единая ментальная модель (ЕММ)
ЕММ позволяет команде мыслить единообразно, что упрощает непосредственную разработку и рефакторинг кода. Для создания ЕММ важно использовать единый язык программирования и абстрактно-логическое мышление. Основные критерии которые мы использовали для построения ЕММ:
Фундаментальные принципы — ясные и интуитивно понятные правила игры
Карта приключений — понимание проекта и потенциального влияния изменений
Фокус на человеке — использование псевдокода для фиксации цели и контекста задачи
ЕММ: Фундаментальные принципы
Фундаментальные принципы — это набор ясных и интуитивно понятных правил, которые служат основой для всех технических решений в проекте. Они позволяют команде самостоятельно принимать решения, опираясь на следующие ключевые моменты:
Готовое больше набивания шишек: прежде чем разрабатывать собственные решения, команда ищет готовые решения внутри проекта, в используемых фреймворках и библиотеках
Прозрачность больше скорости: важные изменения, затрагивающие внешние системы, обсуждаются на архитектурном комитете для согласования изменений с другими командами
Похожее больше идеального: в условиях ограниченных сроков команда выбирает между «быстро и дешево» и «быстро и качественно», при этом учитывая исторически сложившиеся решения
Собирание шишек больше иллюзий: при использовании новых инструментов в задачу закладывается время на создание прототипа для исследования новых подходов и инструментов на кончиках пальцев
ЕММ: Карта приключений
Карта приключений — это понимание проекта на уровне кода. Она позволяет команде быть уверенной в оценке задач и анализировать потенциальное влияние изменений на систему через такие пункты как:
Построение абстрактной модели проекта и его архитектуры сверху вниз
Построение абстрактной модели от точки планируемых изменений вверх
Визуализацию планируемых изменений с помощью схем и диаграмм (вот это открытие, да?)
ЕММ: Фокус на человеке
Фокус на человеке — это подход к способу документирования и передаче знаний в команде который включает в себя такие приемы как:
Использование псевдокода для фиксации цели внесения изменений и контекста задачи
Предпочтение нисходящего подхода к описанию таких изменений в виде псевдокода
Интеграцию существующих сервисов и компонентов с псевдокодом для лучшего понимания контекста изменений
Общение и тренировка ЕММ
Общение в команде — ключевой элемент для сближения личных ментальных моделей участников. Это происходит через:
Совместную работу с аналитиками при штурме задач
Участие в архитектурном комитете для представления и обсуждения технических решений
Проведение ревью изменений для проверки и улучшения кода
Практические аспекты внедрения Единой ментальной модели (ЕММ)
Общение и совместная работа
Для эффективной тренировки ЕММ необходимо уделять внимание общению внутри команды. Важно проводить совместные встречи на разных этапах выполнения задачи:
Штурм задач с аналитиками — для первичного понимания граничных условий и обсуждения особенностей реализации задач
Архитектурный комитет — для представления и обсуждения планируемых технических решений со смежными командами
Ревью изменений — для проверки и улучшения кода
Использование псевдокода
Псевдокод является ключевым инструментом для фиксации цели планируемых изменений и контекста задачи. Он может быть как общим, так и детализированным, и часто используется для описания специфических моментиков из аналитики. Псевдокод может быть написан в восходящем или нисходящем подходе — предпочтительно во втором для описания всех изменений сверху вниз по стеку, начиная с абстракций и уходя в детали реализации.
Визуализация изменений
Визуализация изменений через схемы и диаграммы помогает лучше понять структуру проекта и потенциальное влияние изменений на другие части системы. Это также способствует более глубокому пониманию задачи и облегчает передачу знаний между членами команды.
Внедрение ЕММ в практику
Для новых сотрудников важно сразу внедрять ЕММ, обучая их принятым в команде поведенческим паттернам при разработке. Это поможет новым членам команды быстро влиться в процесс и начать работать эффективно.
Заключительные замечания
Практические аспекты внедрения ЕММ требуют постоянного внимания и корректировки. Важно следить за тем, чтобы правила и процедуры были понятны всем членам команды, и регулярно обсуждать их на собраниях и в ходе повседневной работы.
Стоит отметить, что именно эти аспекты являются ключевыми для успешного внедрения единой ментальной модели в работу команды. Они помогают не только улучшить качество и скорость разработки, но и создать более гармоничную и продуктивную рабочую среду.
Заключение
Единая ментальная модель — это не только технический навык, но и поведенческий паттерн, который позволяет создать эффективную, управляемую и предсказуемую команду.
Внедрение ЕММ в практику работы команды способствует повышению качества и скорости разработки, а также облегчает интеграцию новых сотрудников.
Эта статья представляет собой обобщение опыта Максима, архитектора ЭТП ГПБ, и может быть полезна как для начинающих разработчиков, так и для опытных специалистов, стремящихся улучшить процессы в своей команде.