Kanban-доска, сделавшая ситуацию прозрачной для всех, быстро помогла нам решить вопрос завершения задач, контролировать число задач, находящихся в работе, ускорить их выполнение, а также сократить входную очередь задач.
Кроме того, мы смогли сделать явным управление приоритетами. Оказалось, что, видя полную картину задач, PM’ы вполне способны договориться между собой. В немногих действительно сложных случаях решение принимает начальник их отдела или генеральный директор. Но я теперь полностью исключен из этого процесса. Более того, очередь готовых к запуску задач нередко оказывается пустой, чего никогда раньше не было. Все это видят: я могу временно переключить простаивающих разработчиков на задачи продуктовых групп, а PM-ы, видя простой, сами решают, как создать поток новых задач.
Другое следствие прозрачности заключается в том, что теперь все видят, кто и как работает. И я как руководитель подразделения, и PM’ы, и сами разработчики. Видят, например, что за один и тот же период Вася передал на тестирование пять задач, а Петя — только одну. Это подталкивает самих разработчиков и выявляет проблемы с мотивацией. Если Петю не волнует, что другой человек сделал основную часть работы, то это повод для разговора. Напротив, устойчивые высокие показатели открывают возможности профессионального роста. Например, в «Аванпосте» карта развития сотрудника предусматривает возможность перехода из проектной группы разработчиков в продуктовую, где решаются существенно более сложные и интересные задачи.
Поэкспериментировав на начальном этапе с физической доской, мы перешли к доске виртуальной. Последняя быстро обросла важными функциями. Отмечу автоматическое управление правами доступа к карточкам задач (что исключило ошибки и злоупотребления), автоматическое отслеживание ограничений на количество задач с определенным статусом, а также работу со всей совокупностью задач проектной разработки, взятой непосредственно из системы управления проектами. Причем это касается всех специалистов (разработчиков, инженеров, авторов документации и др.).
В компании «Аванпост» подразделение разработки разделено на команды, развивающие основные продукты, и команду, работающую над задачами интеграции и кастомизации, которые поступают от заказчиков и интеграторов. Команда проектной разработки в силу специфики рабочего процесса использует Kanban. Продуктовые же команды работают по agile-методике, близкой к FDD. Переход к Agile в продуктовой разработке параллельно с внедрением непрерывной интеграции (от сборки версии до развертывания и передачи в эксплуатацию) и автоматизированного тестирования позволил увеличить скорость выпуска релизов и соответственно реагирования на потребности пользователей и изменения рынка.
Приведу пример. Одна из самых сложных и важных задач при разработке нового мажорного релиза Avanpost IDM 6.0 заключалась в изменении архитектуры системы. До начала проекта
архитектура IDM-системы была близка к микросервисам. Система состояла из ядра и целого ряда компонент, отвечавших за обработку заявок, отчетов, кадровую синхронизацию, подготовку кадровых данных и др. Это было удобно в плане управления командой разработчиков и не создавало никаких проблем, пока продукт был строго ограничен функциональностью IDM. Однако согласно долгосрочной стратегии компании главным направлением развития этого продукта становится движение в сторону систем класса IGA. В отличие от классического IDM, эффективная реализация функций IGA требует более глубокого взаимодействия сервисов. Это ведет к укрупнению и усложнению как самих сервисов, так и команд, отвечающих за их разработку. FDD справляется с обеими задачами.
При этом возникает тонкий эффект, меняющий наше отношение к методике SCRUM. Пока продукт развивался в сторону микросервисной архитектуры, на каждый сервис выделялась команда из двух (реже трех) разработчиков высокой квалификации. Переход к новой архитектуре, усложнение сервисов и их взаимодействия потребовал укрупнения этих команд и включения в их состав специалистов средней квалификации (мидлов). Побочным эффектом этого шага стало появление проблем коммуникации, которых раньше не было. Два примерно равных по квалификации разработчика, хотя и работали по схеме «ведущий — ведомый», хорошо понимали друг друга и легко договаривались. И такая работа была им интересна. А теперь они не хотят систематически контролировать мидлов. В результате разработчик средней квалификации за неделю может сделать не совсем то, что считает наиболее важным ведущий специалист. Простоя нет, но меняется траектория или темпы развития продукта. В этой ситуации SCRUM с ее проработанной системой разноплановых коммуникаций, вероятно, была бы весьма полезна.
Мы собираемся внедрить SCRUM еще и потому, что эта методика хорошо подходит для добавления функций в ПО с проработанной и стабильной архитектурой системы и моделью предметной области. Именно это требуется при выпуске промежуточных версий продуктов, и эти версии мы будем готовить, управляя разработкой по методике SCRUM. А к FDD будем возвращаться при создании мажорных релизов Avanpost IDM, PKI и Web SSO. Это, в частности, позволит оптимизировать расходы на разработку: FDD дороже SCRUM (за счет наличия аналитических этапов), и применение SCRUM на длинных отрезках жизненного цикла системы значительно снизит себестоимость ее развития. Таким образом, мы получим оптимальное сочетание трех весьма разных agile-методик: Kanban, FDD и SCRUM.
Я хотел бы обратить внимание еще на один момент — простоту модификации agile-методик. У нас, например, используются модифицированные варианты Kanban и FDD. Вносить такие изменения нетрудно, это позволяет экспериментировать, добиваясь максимального приспособления методик к особенностям организаций-пользователей.