c9895c6e8c7cfbfa6dd77f54658d99b6.ppt
- Количество слайдов: 34
Дом, который построили коты и кошки Кузовлев Евгений
Обо мне. С 2006 года: • • • Тестировщик Руководитель тестировщиков Разработчик Руководитель разработчиков СТО
О нас. Smart. Medicina: • • • Это про медицину Это про ПО уровня enterprise Это ПО, написанное не на том языке Это ПО, написанное не так, как принято Команда ~25 человек
О чем мы тут вообще? • • • Про Про Про методологию процессы грабли команду опыт
Задача: сделать медицинскую информационную систему: • Быстро • В соответствие с требованиями заказчика • Обеспечить высочайшую надежность Условия: • Взаимоисключающие бизнес требования • Множество владельцев процессов
Методология
Методология Agile • Быстро • Примерно в соответствии с требованиями* * - как-нибудь
Методология Водопад • Все согласовано • Все в срок • Медленно • Ооооочень медленно…
Как получилось в итоге
Как получилось в итоге
Процессы
Процессы Git flow Continuous Integration Continuous Delivery Персонифицированная ответственность (коллективная ответственность не работает!) • Контроль качества ПО • •
Git flow
CI • Git. Lab (в том числе smoke тестирование при мерж-реквестах) • Jenkins (ночные сборки) • Redmine • Система миграций • Система автомержа основных веток
CD • Vagrant / docker для разработки и тестирования • Управление конфигурациями – puppet • Доставка и обновление кода – fabric • Мониторинг - zabbix
CD: особенности • Отсутствие технологических окон • Обновление по одной кнопке • Отсутствие миграций, удаляющих или изменяющих данные в БД • Невозможно использовать ORM с жестким описанием структуры в коде приложения
Персонифицированная ответственность: KPI
Персонифицированная ответственность: KPI Проблема № 1: задача «провисает» в промежуточных стадиях (тестирование, код-ревью): • Ответственность разработчика за общий срок закрытия задачи • Ответственность тестировщика за срок невзятия задачи в тестирование Проблема № 2: качество реализованных задач, с т. з. бизнеспроцессов • Ответственность руководителя группы (lead разработчика) за приемку задач и соответствие бизнес-логике
Процессы: когда они нужны Разработка Развитие Git. Flow V V CI V V CD V Перс. ответственность V
Процессы: когда их внедрять Разработка Развитие Git. Flow V V CI V V CD V V Перс. ответственность V
Контроль качества: task flow
Контроль качества: инструменты 0) 1) 2) 3) 4) TDD (не всегда!) Code Review Smoke тесты при MR Ручное тестирование задачи Функциональные ручные тесты при сборке epic задачи 5) Регресс (автотестами) при сборке stable 6) Ночные сборки
Контроль качества: когда и что Разработка Развитие TDD V V CR V V Smoke при MR V V Ручная приемка V V Функциональные ручные тесты при сборке epic задач V Авторегресс сборки stable V Ночные сборки V V
Команда
Команда
Команда: тестирование • 1 автоматизатор (QA) на 5 -6 разработчиков • 1 ручной тестировщик на 2 разработчиков • После внедрения – это еще и поддержка (+1 ставка)
Команда: разработка • • Деление на группы В группе не более 4 человек вместе с лидом Группа работает над epic-задачей (или группой задач) Сроки epic-задач не более 2 -х месяцев на группу Итог: возможность гибкого управления ресурсами даже при водопадной модели разработки.
Команда: как удержать людей Не стройте искусственных преград Устанавливайте рамки Объясняйте решения Следите за рынком (и понимайте, где ваша целевая группа!) • Поощряйте людей • Следите за иерархией подчиненности • •
Команда: как удержать людей после запуска проекта • Все предыдущее не работает на 100%! • Никак • Смириться и открыть вакансии
Грабли и опыт: что должно быть к моменту запуска • Мониторинг • CRM • Работающая в read-only режиме основная система на протяжении Х месяцев (если вы замещаете другое ПО) • Описание функционала системы
Грабли и опыт: техдолг • Не заниматься техдолгом при создании системы • После запуска системы, техдолг – полноправный участник планирования • Если за техдолг вам не платят – закладывайте его в сроки (и цену ) новых доработок.
Что сложнее – сделать проект или развивать его?
Спасибо за внимание! Кузовлев Евгений Mail: Phone: Telegram: Eugene. Kuzovlev@gmail. com +7 905 7986063 @rafik_jan