Upload
happydev
View
434
Download
0
Embed Size (px)
DESCRIPTION
Рассказ о развитии проекта объемом 100 человеко-лет с нуля. От BodyShop с четырьмя разработчиками и микроменеджментом к стабильному процессу на 33 человек. Разница между теорией и практикой заключается в том, что, в теории, этой разницы нет. А на практике оказывается, что она есть." (с) Неизвестный автор. Являясь ярым приверженцем процессного подхода, я расскажу, как строил процесс разработки на одном из проектов нашей компании. Объем проекта на данный момент составляет 100 человеко-лет. А выстроенный процесс уже прошел проверку временем и остается практически неизменным на протяжении последних 2х лет. Всё начиналось, как и у многих омских команд, с обычного bodyshop-проекта на 4 разработчика и меня в роли менеджера. Заказчик полностью контролировал работу каждого члена команды. Тотальный микроменеджмент. Но со временем мы доказали заказчику, что можем эффективно организовать работу и отвечать за ее качество. И заказчик передал нам все основные функции по разработке, оставив себе только концептуальную постановку задач. А также, значительно расширил бюджет. На данный момент в проекте участвует 33 человека. Процесс представляет из себя конвеер по поставке новой функциональности для решения различных нужд компании заказчика. От достаточно простых элементов корпоративного портала, до сложных кластерных систем рендеринга графики или своей собственной системы а-ля Dropbox.
Citation preview
100 лет без авралов или зачем проекту креативный менеджерАнтон НепомнящихРуководитель отдела управления проектамиИСС Арт
Очень много дефектов
Заказчик – опытный
системный архитектор
Заказчик дает атомарные задачи
Неясно, что разрабатываем
вцелом
Сложно распределять ответственность
разработчиков по модулям продукта
Все работают над всем
кодом
Много разработчиков
Автоматизированное тестирование
Body-shop
Разработчики часто меняют
неизвестный им код
Нет дефектовВсё ещё много дефектов
Любое внедрение дорого стоит и приводит к побочным эффектам.
Антон Непомнящих
Всё ещё много дефектов
Заказчик – опытный
системный архитектор
Заказчик дает атомарные задачи
Неясно, что разрабатываем
вцелом
Сложно распределять ответственность
разработчиков по модулям продукта
Много разработчиков
Автоматизированное тестирование
Body-shop
Разработчики часто меняют
неизвестный им код
Все работают над всем
кодом
Тесты выполняются долго (1 ч)
Тесты должны всегда проходить!
Очень долго комитить код
Bamboo
Несколько тестовых серверов
Зависимости между
тестами
Весь бэкенд покрыт тестами
Автоматизированное тестирование
Всё ещё долго комитить код
Весь бэкенд покрыт тестами
Тесты должны всегда проходить!
Bamboo
Несколько тестовых серверов
Зависимости между
тестами
Тесты выполняются быстрее (0-30 мин)
SeleniumФронтенд на ExtJS
Фронтенд тормозит?
Автоматизированное тестирование
Весь бэкенд покрыт тестами
Тесты должны всегда проходить!
Bamboo
Несколько тестовых серверов
Зависимости между
тестами
Тесты выполняются быстрее (0-30 мин)
Фронтенд не тестируется
Всё ещё много дефектов Очень долго комитить код
Всё ещё долго комитить код
Автоматизированное тестирование
Количество дефектов после внедрения юнит-тестов бэкенда
Сложность интеграции
фич
Очень много дефектовВсё ещё много дефектовНе очень много дефектов
Заказчик дает атомарные задачи
Неясно, что разрабатываем
вцелом
Сложно распределять ответственность
разработчиков по модулям продукта
Ручное тестирование
отдельных фич
Очень сложно тестировать
фичи целиком
Фичи разрабатываются
параллельно
Релизить можно только целиком
законченные фичи
Много разработчиков
Автоматизированное тестирование
Разработчики часто меняют
неизвестный им код
Долго комитить код
Все работают над всем
кодом
Заказчик дает бизнес-задачи
Ясно, что разрабатываем
вцелом
Все работают почти над
всем кодом
Легче распределять ответственность
разработчиков по модулям продукта
Фичи в отдельных
ветках
Легкость интеграции
фич
Merge-plugin
Сложность интеграции
фич
Очень много дефектовВсё ещё много дефектовНе очень много дефектов
Ручное тестирование
отдельных фич
Фичи разрабатываются
параллельно
Релизить можно только целиком
законченные фичи
Много разработчиков
Автоматизированное тестирование
Разработчики часто меняют
неизвестный им код
Все работают над всем
кодом
Все работают почти над
всем кодом
Фичи в отдельных
ветках
Легкость интеграции
фич
Легче распределять ответственность
разработчиков по модулям продукта
Ясно, что разрабатываем
вцелом
Заказчик дает бизнес-задачи
Merge-plugin
Все работают почти над
всем кодом
Всё ещё много дефектов
Много разработчиков
Автоматизированное тестирование
Разработчики часто меняют
неизвестный им код
Не очень много дефектов
Ручное тестирование
отдельных фич
Простои разработчиков?
Фичи в отдельных
ветках
Полное интеграционное и регрессионное
тестирование
Полное тестирование –
долгая процедура
Легче распределять ответственность
разработчиков по модулям продукта
Ясно, что разрабатываем
вцелом
Заказчик дает бизнес-задачи
Merge-plugin
Все работают почти над
всем кодом
Всё ещё много дефектов
Много разработчиков
Автоматизированное тестирование
Разработчики часто меняют
неизвестный им код
Не очень много дефектов
Ручное тестирование
отдельных фич
Простои разработчиков? Легче распределять
ответственность разработчиков по модулям продукта
Ясно, что разрабатываем
вцелом
Заказчик дает бизнес-задачи
Полное интеграционное и регрессионное
тестирование
Полное тестирование –
долгая процедура
Релизная ветка
Фичи в отдельных
ветках
Merge-plugin
Не очень много дефектовМало дефектов
Все работают почти над
всем кодом
Легче распределять ответственность
разработчиков по модулям продукта
Ясно, что разрабатываем
вцелом
Заказчик дает бизнес-задачи
Автоматизированное тестирование
Полное интеграционное и регрессионное
тестированиеРучное
тестирование отдельных фич
Полное тестирование –
долгая процедура
Релизная ветка
Тестирование параллельно с разработкой
Периодические релизы
Разработчики часто меняют
неизвестный им код
Много разработчиков
Фичи в отдельных
ветках
Merge-plugin
График количества дефектов
Любое внедрение требует времени для того, чтобы его результаты проявились.
Антон Непомнящих
Любое внедрение требует дополнительных усилий от всех участников процесса.
Не очень много дефектовМало дефектов
Все работают почти над
всем кодом
Легче распределять ответственность
разработчиков по модулям продукта
Ясно, что разрабатываем
вцелом
Заказчик дает бизнес-задачи
Автоматизированное тестирование
Полное интеграционное и регрессионное
тестированиеРучное
тестирование отдельных фич
Полное тестирование –
долгая процедура
Релизная ветка
Тестирование параллельно с разработкой
Периодические релизы
Разработчики часто меняют
неизвестный им код
Много разработчиков
Фичи в отдельных
ветках
Daily meetings
Code review
Merge-plugin
График количества дефектов
Легче распределять ответственность
разработчиков по модулям продукта
Разработчики часто меняют
неизвестный им код
Все работают почти над
всем кодом
Все работают над отдельной областью кода
Распределили ответственность
разработчиков по модулям продукта
Ясно, что разрабатываем
вцелом
Заказчик дает бизнес-задачи
Всё ещё много дефектов
Разработчики редко меняют
неизвестный им код
Мало дефектов
Полное интеграционное и регрессионное
тестированиеРучное
тестирование отдельных фич
Полное тестирование –
долгая процедура
Релизная ветка
Тестирование параллельно с разработкой
Периодические релизы
Наставничество и специализация
Daily meetings
Code review
Автоматизированное тестирование
Фичи в отдельных
ветках
Merge-plugin
Много разработчиков
График количества дефектов
Исправляйте корневые причины проблемы, а не ее симптомы.
Антон Непомнящих
Легче распределять ответственность
разработчиков по модулям продукта
Разработчики часто меняют
неизвестный им код
Все работают почти над
всем кодом
Все работают над отдельной областью кода
Распределили ответственность
разработчиков по модулям продукта
Ясно, что разрабатываем
вцелом
Заказчик дает бизнес-задачи
Всё ещё много дефектов
Много разработчиков
Разработчики редко меняют
неизвестный им код
Мало дефектов
Полное интеграционное и регрессионное
тестированиеРучное
тестирование отдельных фич
Полное тестирование –
долгая процедура
Релизная ветка
Тестирование параллельно с разработкой
Периодические релизы
Очень мало дефектов
Daily meetings
Code review
Автоматизированное тестирование
Фичи в отдельных
ветках
Merge-plugin
Наставничество и специализация
График количества дефектов
1. Любое внедрение дорого стоит и приводит к побочным эффектам.
2. Любое внедрение требует времени для того, чтобы его результаты проявились.
3. Любое внедрение требует дополнительных усилий от всех участников процесса.
4. Исправляйте корневые причины проблемы, а не ее симптомы.
Антон Непомнящих
Спасибо за внимание!
Антон НепомнящихРуководитель отдела управления проектамиИСС Арт