"Контроль сцепления" в разработке ПО

автор: Александр Якима

Есть такая полезная штука в автомобиле - контроль сцепления называется (также известно под названием Антипробуксовочная система, Система контроля тяги). Смысл очень простой: как только скорость вращения колес начинает повышаться непропорционально скорости самого автомобиля (то есть, автомобиль пробуксовывает) - система уменьшает тягу, колеса начинают вращаться медленнее, сцепление с поверхностью возобновляется.

Это просто замечательная метафора для разработки ПО, гораздо очевиднее, чем, например, работа в прогрессе (WIP).

Итак, хорошее сцепление - это когда скорость вращения колес (тэмп написания кода) уравновешена со скоростью самого автомобиля (тэмп доставки готовой функциональности) и, таким образом, нет пробуксовки, когда вовсю кодят, но фактического прогресса (который можно было бы пощупать, запустить, покликать) нет.

Как и в случае с системой контроля сцепления, если команда видит, что крутит вхолостую - скорость создания нового кода нужно сбавить. Точки сцепления с трассой - это те точки, в которых мы интегрируем весь код, убеждаемся, что он функционирует корректно (то есть, удовлетворяет тестам) и то, что он собой представляет - это функциональность, а не модуль/компонента/слой или вобще непонятное "что-то".

Стоит задаться вопросом, а сколько же крутятся колеса нашего "автомобиля", прежде чем мы действительно сможем ощутить какое-то движение вперед? Три месяца? - очень плохо. Месяц? - столько крутить, не двигаясь с места?

Очень желательна ситуация, когда мы чувствуем движение каждый день - интегрируем код ежедневно, по нескольку раз в день и каждая (или каждая вторая-третья) интеграция - хоть и небольшой, но "вертикальный" срез по всей системе, реализовывающий очередной небольшой аспект функциональности.

Отсюда следует огромная ценность следующих хорошо известных практик:
- непрерывная интеграция
- автоматическое приемочное тестирование
- работа с пользовательскими историями, в частности их дробление

Ну и, наконец, чтобы быть уверенным, что наш автомобиль не просто едет, а едет в нужном направлении - необходима постоянная синхронизация с продакт-оунером. Такой себе GPS-навигатор.

No comments:

Post a Comment

 
Powered by Blogger