Прежде всего необходимо наладить канал связи и формат взаимодействия.
В качестве канала связи может выступать любой мессенджер, будь то Skype, Slack, Telegram и прочие. Обычно для взаимодействия используется Slack, однако, чтобы общение не превратилось в поток сообщений, в которых трудно ориентироваться, требуется менеджмент каналов и тредов.
Основные рекомендации при использовании Slack:
Подобную схему можно реализовать практически на любом современном мессенджере, который поддерживает общение в тредах и в каналах.
Вторым шагом необходимо определить нотацию, которая будет использоваться при разработке, чтобы основные принципы разработки были едиными. Использование единых принципов написания кода является очень важным моментом. Разработчики должны общаться на одном языке и следовать единым принципам формирования структуры кода. Только в этом случае возможна совместная работа с последующей модификацией и поддержкой разработки.
На наших проектах мы придерживаемся использования венгерской нотации и принципов написания кода, зафиксированных в специальном документе. Документ с требованиями рассылается участникам проекта для ознакомления.
В качестве единого хранилища разработки необходимо использовать систему контроля версий.
Система контроля версий (СКВ) необходима для фиксации изменений файла или набора файлов в течение большого периода времени так, чтобы была возможность позже вернуться к определенной версии.
Зачем нужна СКВ:
На проектах в основном используется централизованное хранилище на базе технологии GIT.
Основной инструментарий:
На проектах выделяется три типа веток разработки:
MASTER - Мы считаем ветку origin/master главной. Т.е. исходный код в ней должен находиться в состоянии production-ready в любой произвольный момент времени.
DEVELOP - Ветвь origin/develop мы считаем главной ветвью для разработки. Хранящийся в ней код в любой момент времени должен содержать самые последние изменения, необходимые для следующего релиза.
FEATURE/HOTFIX - Вспомогательные ветви, в рамках которых выполняется разработка новой функциональности или исправление дефектов.
Рекомендуемый порядок работы с ветками:
Положительные моменты:
Отрицательные моменты:
Положительные моменты:
Отрицательные моменты:
Вариант 1 подходит для команд с полностью отделяемой разработкой. Вариант 2 – для команд, где разработка часто пересекается.
В случае выявлений проблем после слиянии разработки периодически требуется восстановление порядка изменения кода. Необходимо, чтобы для взаимодействия с разработчиком при восстановлении разработки по веткам можно было однозначно установить кто вносил изменения.
Для решения этой задачи ветка в наименовании должна содержать следующую информацию:
Пример:
feature-aav-directum-CreateNewDatabookConfigurations
hotfix-aav-directum-FixErrorContractList_NullException
По наиболее частым кейсам по разрешению конфликтов прошу подробнее ознакомиться со статьей: Эффективный GitFlow на проектах
Задачи для разработки формируются исходя из требований, подготовленных аналитиками. Перед началом разработки необходимо выполнить ряд работ:
Основная задача декомпозиции – разложить крупную задачу на несколько менее сложных подзадач, объединяемых простой структурой, и настолько независимых, что в дальнейшем можно будет отдельно продолжить работу над каждой из них.
Процесс декомпозиции часто является цикличным, т.к. каждая подзадача может оказаться достаточно сложной и потребует дальнейшего разложения. В идеале получить набор подзадач задач, которые будут выполнять одну конкретную отделяемую бизнес задачу.
Пример: реализовать новый процесс для работы со служебными записками при работе с несколькими адресатами.
Реализация данного процесса будет затрагивать как минимум две сущности:
Для декомпозиции удобно использовать любой инструмент для работы с майнд картами (ассоциативными картами):
По данному примеру, на выходе получили 4 отделяемые задачи, которые казалось бы можно делегировать четырем разработчикам. Однако, необходимо учитывать, что модификации одних и тех же сущностей могут приводить к конфликтам при сливании разработки. Поэтому правильнее разнести задачи по одной сущности для разных разработчиков по времени, либо делегировать такие задачи одному разработчику. .
Опять же при делегировании задач разработчику не следует их «схлапывать» в одну задачу, лучше сделать несколько отдельных задач и реализовать по приоритету. Это поможет ускорить процесс тестирования. Пока разработчик будет реализовывать второе требование, первое будет тестироваться.
Для контроля выполнения задач по разработке может использовать любая наиболее удобная система, принятая в конкретной команде. Некоторые команды фиксируют задачи, их статусы и исполнителей в электронных таблицах. Некоторые команды ведут разработку в специализированных модулях СЭД.
На проектах мы преимущественно используем kanban-доски. Основное преимущество kanban-досок – наглядный процесс управления задачами, которые находятся в работе. При использовании таких досок тратится значительно меньше времени для понимания, на каком этапе находится та или иная задача.
Особенно ценность kanban-досок появляется при работе нескольких команд. У всех участников появляется общее видение текущих процессов разработки, но в таком случае очень важно, чтобы все команды имели опыт при работе с доской, иначе процесс будет трудно управляем, задачи перестанут перемещаться и их статус станет не понятным.
Для работы с kanban-досками преимущественно используем сервис Trello, поскольку:
Рекомендуемый набор колонок:
Наименование столбца |
Назначение |
Backlog |
Все входящие задачи, то что необходимо реализовать, проанализировать, не забыть, проверить. |
Исследование |
Уточнение требований по карточке, подготовка к реализации, оценка трудоемкости. Уточнением карточек занимается ответственный от команды разработки. |
Можно брать в работу |
Уточненные карточки, которые можно брать в работу. Разработчики команд берут в работу задачи только из этой колонки. |
В работе |
Карточки в работе. У каждой карточки должен быть указан как минимум один участник – ответственный разработчик. |
Можно рецензировать |
Карточки, реализованные по требованиям и готовые к проверке. В эту колонку разработчик самостоятельно перемещаем карточку, когда уверен, что разработка по карточке завершена. |
Рецензирование |
Как правило рецензированием занимается ответственный от команды разработки. В эту колонку ответственный перемещает карточки из Можно рецензировать. |
Прорецензировано |
После завершения рецензирования карточка перемещается в колонку Прорецензировано. На этом этапе как правило выполняется публикация разработки на тестовые стенды для дальнейшего тестирования. |
Можно брать в тестирование |
После публикации разработки на тестовый стенд ответственный переносит карточку в Можно брать в тестирование. Это является сигналом для консультантов и тестировщиков, что доработки готовы к тестированию. |
Тестирование |
При начале тестирования консультанты или тестировщики указывают себя в качестве участника и переносят карточки в Тестирование. |
Тестирование завершено |
После завершения тестирования, карточка переносится в Тестирование завершено. Это является сигналом для РП или ответственного консультанта, что в дальнейшем доработки необходимо зафиксировать в документации. |
Актуализация ПР/УТЗ |
Доработки, которые необходимо зафиксировать в документации, переносятся в Актуализация ПР/УТЗ. |
Done |
Когда все работы по карточке завершены, карточка переносится в колонку Done. |
Для определения критичности задачи, группы разработки, группировки по модифицируемым сущностям удобно использовать метки.
По меткам при необходимости можно сделать сортировку и проследить, какие работы и по каким «фичам» в данный момент выполняются, а какие приостановились.
Также рекомендуется периодически проводить мониторинг доски для выявления задач, которые выполняются необоснованно долго, либо часто возвращаются на доработку – такие задачи как правило являются скрытой проблемой, которую необходимо зафиксировать и решить как можно скорее.
Как видим, можно выделить 3 блока механизмов взаимодействия, которыми требуется управлять:
Для обеспечения взаимодействия между различными командами требуется внедрить описанные выше методики, для чего требуется предварительное обучение всех участников процесса.
Каждый механизм необходимо периодически инспектировать, внося корректировки, поскольку поток данных на крупных проектах очень большой. Каждый из механизмов может переполниться информацией и стать больше проблемой, чем решением.
Для управления каждым механизмом лучше выделять отдельного сотрудника, который будет следить за выполнением требований и рекомендаций, а также вносить необходимые изменения в процесс, т.к. правила созданные перед началом проекта могут потребовать изменений в процессе работы. Это нормальный процесс, к которому необходимо быть готовым.
Авторизуйтесь, чтобы написать комментарий