- PVSM.RU - https://www.pvsm.ru -

В этой статье хочу поделиться опытом, как мы решили проблему “зависания” задач в нашей компании.
Я работаю в стартапе, который, как и все стартапы, переживает этап роста от 10 человек год назад до 35 человек сегодня, причем количество программистов за это время выросло с 5 до 25 человек и большинство из них пришли за последние шесть месяцев.
Структуру компании, несмотря на ее молодость, я бы назвал старомодной, так как никто и никогда не занимался выстраиванием процессов. При росте мы разделились на команду разработки, команду тестирования и команду девопсов, и все более или менее работало.
Процесс разработки, если его можно назвать “процессом”, был таким:
Работа разработчика заканчивалась, как только код прошел код-ревью и он смерджил его в develop.
Работа тестировщика заканчивалась, когда он протестировал и смерджил в master ветку.
Девопсы иногда нажимали на кнопку «Деплой на прод», после того как на дэйли проджект менеджер скажет: «чет не деплоили давно, может, задеплоим сегодня?».
Что хорошего:
Проблемы:
Опишу два случая, которые дали нам понять, что так дальше работать нельзя.
Так, например, в одну из пятниц у нас было 15 бранчей в статусе code_review, а в понедельник они все сменили статус на ready_for_test. Тестировщики рассказали на дейли, как сильно они нас любят. А еще мы три месяца не могли задеплоить на прод, в силу разных причин, и пары довольно больших фич.
В первую очередь мы разобрались с большим количеством code_review. Оказалось, решить эту проблему можно довольно просто благодаря следующим правилам:
Главная идея — не давать коду “зависать”, когда он уже написан, и обеспечить тестировщиков равномерным потоком работы в течение недели.
Это мы внедрили за один час: собрались, обсудили и пошли делать ревью и заниматься парным программированием.
Если случается так, что кто-то забывает (а иногда кто-нибудь обязательно забывает) про первое правило, то в чатик сразу же прилетает фраза «We have more than 3 PR in code_review. Let's review!!!». При этом нет специального человека, который следил бы за тем, чтобы не было больше трех пулл реквестов, это делают сами разработчики.
Несмотря на то, что эти изменения позволили не давать задачам зависать, у нас все еще оставались проблемы с деплоями и просачиванием багов в develop. Так как после код-ревью мы всегда мерджили в develop ветку, и она автоматически деплоилась на тестовое окружение для тестирования.
Это решение было своеобразным хотфиксом, а дальше нужно было внести основные изменения в процессы.
Главное, что мы решили сделать — это переместить зоны ответственности. Теперь в компании нет отдельно команды разработки, команды тестирования и команды девопсов, передающих задачи друг другу и отвечающих только за свою часть.
Мы организовали разработчиков в несколько команд: по одной на каждого клиента, так как у нас есть основной продукт, но он кастомизируется под каждого клиента довольно длительный срок (мы — гибрид продуктовой и сервисной компании). Теперь доставка фичи на прод — ответственность команды. Привычных команд тестирования и девопсов нет, зато есть QA as a service, и DevOps as a service.
QA as a service — это команда, которая не занимается тестированием, а обеспечивает качество продуктов. QA инженеры помогают разработчикам писать тест-планы и участвуют в сессиях тестирования. Так мы освободили их от ручного тестирования, и у них появилось время писать end-to-end тесты и разрабатывать тулы для помощи в тестировании. Также мы внедрили систему мониторинга.
DevOps as a service — это команда, которая занимается разработкой скриптов деплоймента, поддерживает работу тестовых окружений, занимается автоматизацией различных задач.
Новый процесс разработки такой:
Что интересно, эта трансформация запустила некоторые дополнительные изменения уже не в процессе разработки, а в планировании и изменило темы, о которых мы говорим на дейли.
Теперь, т.к. разработчик ответственный за доставку user story на прод, на планировании мы стали писать user story таким образом, что каждая является независимой от других, и могла бы быть задеплоена тоже независимо, такой deployable unit. User story стало больше, но они стали меньше.
Также на планировании, мы не оцениваем время на разработку, а говорим о том когда мы планируем задеплоить фичу.
На дейли, мы не говорим, что «я закончил разработку», а говорим «сегодня я собираюсь задеплоить фичу X», или “сегодня я забираю тестовое окружение, у кого есть время помочь мне на Test Session?”.
В итоге, у нас появились независимые команды разработки, которые владеют своими собственными тестовыми окружениями и сами планируют, что и когда деплоить.
Автор: sentyaev
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/agile/343676
Ссылки в тексте:
[1] Источник: https://habr.com/ru/post/484392/?utm_campaign=484392&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.