Блог

Методологии разработки ПО: Kanban

GeekBrains продолжает серию статей о методологиях разработки программного обеспечения. Сегодня поговорим о системе Kanban.
11 минут3089

Kanban вряд ли можно назвать полноценной методологией — это просто удобный инструмент, который можно использовать практически с любым подходом к разработке. Kanban делает нагляднее работу над проектом, позволяет отслеживать выполнение отдельных задач и создание функциональных возможностей программного продукта. Кроме того, с этой системой легче контролировать нагрузку специалистов.

Откуда пошел Kanban

Слово «канбан» в японском языке означает «вывеска» или «знак». Впервые эту систему начала использовать компания «Тойота» в середине XX века. Мастера разных участков производства записывали на листках бумаги текущие операции и работы и вывешивали их рядом с другими такими же. Любой специалист мог легко выяснить, чем в данный момент занят каждый участок.

Это было удобно руководству: не надо отвлекать сотрудников или мастеров. Чтобы узнать, чем они заняты, достаточно прочесть записки. Вскоре эта система закрепилась как официальная практика.

Впоследствии Kanban совершенствовался, пока не пришел к современному виду. Но сохранил в основе простейший принцип доски с записками, на которых фиксируются производственные задачи.

Kanban был с самого начала тесно связан с гибкими методологиями производства, которые впервые внедрили в компании «Тойота». С Agile-методологиями в IT-сферу пришел и адаптированный Kanban. Но сегодня его успешно «скрещивают» с другими методологиями.

Пристальный взгляд на систему

В основе Kanban’а лежит простая мысль: объем незавершенной работы надо ограничивать. Любую новую задачу можно начинать не ранее, чем выполнена одна из начатых. Это не значит, что в работе должна быть только одна задача, — их может быть несколько. Принципиально, чтобы это количество было ограничено.

Чтобы контролировать выполнение задач было проще, процесс визуализируют на доске, разделенной на несколько колонок. В самом простом варианте это «В ожидании», «В работе» и «Выполнено», но можно добавлять дополнительные, если хотите детально отслеживать путь каждой задачи от постановки до реализации. На первых этапах лучше ограничиться необходимым минимумом.

Все задачи, которые поступают от заказчика, записываются на стикеры и размещаются в графе «В ожидании». Им можно назначить приоритет: более важные размещают выше и принимают в работу в первую очередь, а второстепенные — только когда будут выполнены приоритетные. Как только разработчик приступает к работе над очередной задачей, соответствующий листок переносится в графу «В работе». Когда она выполнена, стикер отправляется в последнюю графу.

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

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

Это стимулирует не бросать начатое, столкнувшись со сложностями. Если объем незавершенной работы не ограничен, позволяешь себе переключиться на более простые задачи, оставив сложную «на потом» — а это риск оставить ее навсегда в статусе отложенной.

Проблема разработчика — это проблема команды. Kanban стимулирует программистов активнее сотрудничать, обсуждать производственные вопросы и искать способы их решить.

Kanban не только делает прозрачнее создание ценности продукта, но и показывает узкие места, очереди, отклонения и потери — все, что отрицательно влияет на продуктивность команды.

Доска и бумажки — вот и весь Kanban?

Конечно нет. Любая методология нацелена на оптимизацию процессов производства. Kanban как инструмент можно совместить почти с любой методологией, чтобы ускорить разработку программного обеспечения и сделать ее эффективнее.

Поскольку количество задач в колонках Kanban-доски ограничено, время выполнения каждой меньше зависит от внеплановых работ и завалов. Для всех задач можно измерить среднее время выполнения и сделать разработку более предсказуемой и удобной в планировании. Кроме того, это позволяет выявить проблемы и сложности, замедляющие работу, и избавиться от них.

Важнейшее преимущество Kanban’а — наглядность. Видно не только то, какие задачи выполнены, находятся в разработке или ждут своего часа, но и насколько загружены разработчики. На доске можно выделить для каждого программиста или рабочей группы свою строку. Тогда Kanban-карточки размещают в соответствующей колонке и строке, назначая задачу конкретным сотрудникам.

Еще один прием — разбивать доску на технологические этапы. Разработка программы часто проходит через несколько стадий:

  • постановка задачи (разработка технического задания),
  • создание кода,
  • тестирование,
  • сборка рабочей программы,
  • передача пользователю.

В крупных компаниях над этими этапами работают отдельные команды специалистов: технические писатели формулируют требования, спецификации и техзадания, разработчики заняты только производством кода, тестировщики — его проверкой на работоспособность и соответствие требованиям.

Создайте на Kanban-доске колонки, соответствующие каждому этапу, и будет легче определить, как движутся задачи в рабочих группах, насколько специалисты загружены и не «провисает» ли работа над проектом.

Сколько вешать в граммах?

Каким количеством Kanban предлагает ограничивать задачи «в работе», чтобы коллектив справлялся с ними в оптимальные сроки? Универсального ответа нет. Единственный совет — экспериментируйте!

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

Если колонке N скопились задачи, а N+1 почти все время пустует, — это признак перегруженности. Ограничение надо ужесточать.

Kanban предлагает разработчикам свободу в выборе решений. Если оказывается, что при установленном ограничении вы не укладываетесь в график — уменьшите значение. Осталось свободное время, команда работает в расслабленном режиме — поднимите планку. Не бойтесь «крутить настройки»: сломать Kanban невозможно! Несколько попыток — и вы найдете комфортный для всех ритм.

Тренируемся на кошках

Предположим, у нас есть задачи и самая простая Kanban-доска из трех колонок: «В ожидании», «В работе», «Завершено». Работать над проектом будет команда из пяти человек. Выставим единицу как ограничение для колонки «В работе»: одновременно в ней может находиться не более одной задачи.

При таком подходе обнаружим, что пока одна часть коллектива создает код, другая изнывает от безделья. Это не так уж страшно, если такие ситуации возникают редко. Но мало смысла впятером трудиться над одной задачей. Время выполнения будет минимальным, но остальные задачи будут слишком долго «в ожидании» и общий темп работы над проектом замедлится.

Если поднять ограничение до десяти, на каждого разработчика придется в среднем по две задачи. Это допустимый максимум. Ограничение не обязывает держать в работе именно столько задач — их может быть меньше.

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

Слишком низкий лимит незавершенных задач — очевидное зло, но и высокий чреват проблемами. Надо подобрать такое ограничение, которое будет создавать равномерную и постоянную нагрузку, не допуская «зависания» незаконченных задач.

А что насчет ограничений в других колонках?

Колонка «Готово» свободна от лимитов — чем больше работы сделано, тем лучше!

Есть ли смысл накладывать ограничения на колонку «В ожидании», где скапливаются задачи, к которым разработчик еще не приступал, и нужна ли она вообще? Ведь Agile-методологии подразумевают постоянное общение с заказчиком — новые задачи можно получать, когда завершена предыдущая.

И все-таки иметь небольшой «буфер» задач полезно. У них может быть разный приоритет и сложность. Сегодня заказчику хочется изменить дизайн элементов управления во всей программе: эта задача явно отнимет приличное время, хотя не является критически важной для работы пользователя. А завтра он вспомнит, что срочно нужен отчет по продажам — небольшой и не очень сложный. Но разработчик уже взялся за дизайн, и на Kanban-доске нет места для новой задачи.

Если бы обе задачи висели на доске в графе «В ожидании», разработчик взялся бы сначала за более важную, а незначительные, но объемные правки отложил на свободное время.

Колонку «В ожидании» тоже можно ограничить удобным для разработчика и заказчика количеством задач. Заказчик может заменять задачи: чтобы разместить срочную в заполненной колонке, надо убрать менее важную.

Вилка или ложка — что лучше?

Обобщим основные правила использования Kanban’а.

1. Сделайте работу наглядной.

  • Разделите на задачи.
  • Каждую запишите на стикер.
  • Распределите стикеры по графам на доске.

2. Ограничьте объем незавершенной работы.

  • Вычислите, какое количество незавершенных задач будет оптимальным на каждом этапе.

3. Измеряйте время

  • Вычислите оперативное время, которое в среднем требуется для выполнения каждой задачи.
  • Оптимизируйте работу, чтобы свести оперативное время к минимуму.
  • Прогнозируйте работу над задачами.

Чтобы Kanban работал и приносил результаты, недостаточно повесить доску на стену. Если вместо анализа рабочих процессов, экспериментов и поисков оптимального ритма работы руководитель заставляет сотрудников банально перевешивать листки из одной колонки в другую, — это не Kanban, а просто доска с бумажками.

Когда Kanban пытаются сравнивать с другими методологиями и делать выводы о том, какой подход продуктивнее и выгоднее, это похоже на споры о том, что лучше — вилка или ложка. В отрыве от конкретных ситуаций и специфики IT-компании подобные рассуждения бессмысленны. Не надо сравнивать инструменты — стоит попробовать те, которые кажутся подходящими и с которыми готова работать команда.

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

Виртуальные Kanban-доски

Вы уже определились, в каком углу будет лучше смотреться Kanban-доска? Не торопитесь вбивать в стену гвозди. Ведь давно уже существуют программные решения, которые предлагают пользователям аналоги Kanban-досок. В отличие от стикеров на стене, такая Kanban-доска будет доступна не только в офисе, но и в любой точке мира — идеальное решение, если в команде есть удаленщики.

Trello

Поддерживает любое количество проектов, каждый со своей доской и произвольным составом задач и разработчиков. Можно ставить метки и комментировать задачи, прикреплять файлы объемом до 250 Мб. Есть функция «чек-лист»: можно создать множество подзадач, помечать выполненные и видеть прогресс в процентах.

Благодаря качественному API Trello интегрируется с другими решениями — например, Slack. Есть клиентские программы для основных платформ — Windows, iOS, Android, доступен веб-интерфейс.

Практически весь функционал представлен в бесплатной версии. Приятный плюс — поддержка русского языка. Платная версия добавляет «вкусностей» вроде пользовательских стикеров, фонов и неограниченных по объему вложений.

Kanbanchi

Достойный конкурент Trello. Богатая функциональность даже на бесплатном тарифе: неограниченное количество колонок и задач, комментарии и теги. Задачи можно маркировать цветами по типам, чтобы легче ориентироваться на доске. Есть чек-лист, для каждого элемента которого можно задать «вес» — продолжительность выполнения относительно всей задачи в целом. Этот параметр учитывается при вычислении объема выполненной работы.

Поддерживаются альтернативные представления списка задач: обычный текстовый список и диаграмма Ганта на платных тарифах.

Интерфейс у Kanbanchi англоязычный. Но если вы усвоили принципы Kanban’а, разобраться в деталях не составит труда.

Битрикс24

Битрикс24 — это полноценная CRM со встроенной Kanban-доской. Позволяет вести внутри организации множество проектов и прикреплять к ним специалистов. Создавая задачу, сотрудник автоматически помещает карточку на персональную Kanban-доску исполнителя. Это один из вариантов представления задач — их также можно вывести в виде обычного списка или диаграммы Ганта.

Для любой задачи можно устанавливать сроки исполнения, добавлять подзадачи, комментировать, прикреплять файлы.

Система платная. Бесплатный тариф есть, но в нем нет ряда полезных функций, и работать на нем могут не более 12 сотрудников, а объем облачного хранилища ограничен 5 Гб. Но для небольших стартапов или маленьких коллективов разработчиков этого вполне может хватить. Зато помимо Kanbanа вы получите полноценную CRM-систему.

Kanbanery

Kanbanery позволяет создавать на доске произвольное количество колонок с любыми названиями. Для каждой задачи можно указать сроки исполнения, прикрепить файлы, добавить комментарии, отслеживать изменения в карточках. Чтобы получить общую картину работы над проектом, можно воспользоваться продвинутыми графическими отчетами. Разработчикам ПО будет особенно полезна интеграция с GitHub. Есть мобильные приложения Kanbanery для iOS и Android, а также API для интеграции сервиса с пользовательскими приложениями.

Это платный сервис: он предлагает несколько тарифов, различающихся количеством активных пользователей — от 5 до 50. Бесплатный тариф тоже присутствует, но работать с одной доской смогут не более двух человек.

Taskify

До крайности простой онлайн-сервис, позволяющий создать Kanban-доску из трех колонок: To do («Сделать»), In progress («В работе») и Done («Сделано»). На доске размещается любое количество задач, которые изначально создаются в To do. Для каждой указывается дедлайн и исполнитель. Карточки с задачами при приближении дедлайна меняют цвет от нейтрального серого до красного.

Kanban-доска Taskify доступна в режиме онлайн для любого количества пользователей — достаточно поделиться ссылкой на нее, в том числе через социальные сети.

Плюсы: Taskify доступен бесплатно и без регистрации, его просто осваивать и легко использовать. Минус — набор функций скудный, на грани аскетизма.

На этом список онлайн-сервисов не заканчивается. Среди многообразия решений непременно найдется то, которое подойдет вашей команде и поможет в работе!

программированиеуправлениеменеджментproduct-manager
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup