Начало любого проекта – это идея заказчика или владельца продукта, сформулированная в виде бизнес-требований, ТЗ или записок на салфетке. Как был бы прекрасен процесс разработки, если бы важные детали прорабатывались уже на этом этапе!

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

Обо мне

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

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

Причина проблем, или Лирики vs Физики

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

По сути каждая сторона в чем-то права. Но как же тогда сформировать понятные требования, если у всех разное видение проекта?

Решение

Говорите на одном языке с заказчиком

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

Создайте шаблон бизнес-требований

  1. Соберите пожелания к формату и структуре требований от всех, кто участвует в процессе разработки: системных аналитиков, разработчиков, QA, сопровождения, РП.

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

  3. Совместно с заказчиком составьте шаблон для бизнес-требований так, чтобы заказчику было удобно его заполнять, а вам – читать и понимать написанное.

Определите цели проекта

Убедитесь что вы правильно поняли «боль», которую надо решить, а заказчик – что именно он получит на выходе. Объяснять можно хоть на кошечках и собачках, главное, чтобы вы нашли взаимопонимание. А дальше поможет глоссарий (я надеюсь, вы его уже используете?).

Только, пожалуйста, не следуйте советам из брошюры Simple Sabotage и не создавайте встречи ради встреч и комиссии по решению вопросов, которые можно было бы решить за пару минут.

Скажите «Нет!» технической реализации в бизнес-требованиях

Да, заказчики бывают с разным техническим бэкграундом, но если в руках молоток, то все начинает казаться гвоздями. А если человек долгое время работал в Битриксе – ничего кроме Битрикса зачастую он предложить не сможет, накладывая ограничения сторонней системы на тот продукт, который вы в итоге планируете сделать. Реальный пример из опыта – могут попросить «Выгрузить весь интернет в Excel».

Зафиксируйте ключевые показатели эффективности проекта

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

Внесите обязательность показателей в шаблон бизнес-требований, грабьте, воруйте, но критерии эффективности проекта должны быть зафиксированы.            

Вовлекайте заказчика в весь цикл разработки ПО

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

Лучшая битва – это та, которая не начиналась, поэтому можно заранее подстелить соломки и уточнить все на берегу.

Секреты шеф-повара, или что должно быть в бизнес-требованиях

Попробуем сформулировать основные разделы бизнес-требований:

  1. Информация о заказчике (ФИО и функция)

  2. Дорабатываемая система (если есть)

  3. Приоритет проекта или доработки

  4. Желаемая дата релиза проекта

  5. Краткое описание цели проекта

  6. Как работает сейчас?

    1. Описание текущего бизнес-процесса

    2. Какие системы задействованы в бизнес-процессе?

    3. Какая информация используется в бизнес-процессе?

    4. Какая информация передается в рамках бизнес-процесса?

    5. Какая информация получается в рамках бизнес-процесса?

    6. Какие текущие проблемы бизнес-процесса?

  7. Как должно работать? (описание желаемых доработок без технических деталей)

  8. Сценарии использования, включая негативные (Use Cases)

  9. Текущие показатели эффективности (метрики)

  10. Ожидаемые показатели эффективности (метрики)

  11. Дополнительные заинтересованные стороны

    1. На кого могут повлиять доработки?

    2. Кому необходимо сообщить о планируемых доработках?

    3. Какие дополнительные функции необходимо привлечь к анализу и разработке?

  12. Ограничения и риски

    1. Противоречие интересам других функций и систем компании

    2. Законодательные риски

    3. Etc, риск-менеджмент отдельная тема, но чем больше мы узнаем на этапе бизнес-требований, тем меньше возможных проблем получим потом

Пример плохих бизнес-требований

Сделайте, чтобы заработало. Вчера.

Еще пример

Happy end*

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

*При написании статьи ни один заказчик, менеджер и разработчик не пострадал)

Комментарии (9)


  1. jvsg6
    22.03.2024 06:47
    +1

    А еще лучше создайте общий глоссарий с правильными названиями объектов

    Всеми руками за такое, но сразу возникает вопрос: как заказчика уговорить/убедить/заставить говорить на языке глоссария?


    1. Evgeny_Bondarchuk Автор
      22.03.2024 06:47
      +1

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

      Важно помнить, что эта дорога идет в два направления, поэтому разработке тоже стоит использовать правильную терминологию)


  1. nika_martianova
    22.03.2024 06:47

    Статья очень в тему, спасибо автору!

    Будем использовать этот чек-лист при работе с заказчиками, т.к. с БТ постоянно возникают трудности (


    1. Evgeny_Bondarchuk Автор
      22.03.2024 06:47

      Спасибо! Буду рад узнать, если где-то ситуация выправится, и мир станет чуточку лучше)


  1. Batalmv
    22.03.2024 06:47
    +1

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

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

    Создайте шаблон бизнес-требований

    Мама, мама, я смогла съесть кашу вилкою, почти всю :) Какая я молодец :)

    Внесите обязательность показателей в шаблон бизнес-требований, грабьте, воруйте, но критерии эффективности проекта должны быть зафиксированы.            

    Таки стоит говорить о терминах, так как у нас не рабочее совещание. Критерии эффективности проекта не меняются уже много веков. Бюджет, скоуп, сроки. Вписали во все три? Красавчик, это удается немногим. Вписались в два. Тож неплохо. Если нет - ищите другую работу.

    Ну и идея в БТ фиксировать критерии эффективности проекта - это уже за гранью. Ну либо у вас ПМ/БА - одно лицо и ему проще все писать в одном месте.

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

    Можно нанять аналитика + архитектора, которые это решат :) Ну или найти людей, которые называются по другому, но делают именно это :)

    1. Соберите пожелания к формату и структуре требований от всех, кто участвует в процессе разработки: системных аналитиков, разработчиков, QA, сопровождения, РП.

    И потом выкиньте это в урну :) Не, я не против, если у меня, к примеру, кто-то попросит чего-то добавить в architecture vision / solution документ. Но ходить и собирать пожелания ... разве что если задаться целью показать всем, что на этот проект выделили архитектора дегенерата, который не знает, в чем заключается его работа

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

    Скажите «Нет!» технической реализации в бизнес-требованиях

    Вот это наверное единственное светлое пятно в этой статье


    1. QALiberum
      22.03.2024 06:47
      +1

      Но ходить и собирать пожелания ... р

      А всегда ли БА эффективно и в удобной для остальных участников процесса разработки виде формализует требования? Я понимаю, что это навык и важнейшая функция БА. Но если команда приняла решение работать по BDD паттерна или QA недавно внедрили AI, которые определенный формат требований превращает в тест-кейсы, к примеру?


      1. Batalmv
        22.03.2024 06:47
        +1

        По BDD паттерну не скажу, почитать конечно в инете могу, но вы и без меня можете сделать тоже самое. Если вы раскроете эту мысль своей практикой - я наверное смогу что-то прокомментировать

        Про QA - и что, теперь все должны под это подстроиться? Я так себе представляю, приходит QA lead на стенд ап и говорит: мы тут внедрили AI, и теперь вы должны работать по другому :) В реальной жизни лучшим раскладом для QA будет уйти с такой встречи без своих идей, распечатаных на бумаге в каком-то из отверстий своего организма

        Ну а если серьезно ... команда на то и команда, чтобы работать слажено. Задача BA выдавать то, что могут потреблять остальные, а не только собирать требования. БА - это часть маршрута, а не тупик, где оседают артефакты

        А как именно - во всех командах чуть-чуть да по разному


  1. fasvik
    22.03.2024 06:47
    +1

    Отличная статья, большое спасибо за чек-лист! Отдельно хотелось бы спросить про

    Скажите «Нет!» технической реализации в бизнес-требованиях

    Что делать, если всё таки требования есть? По типу "реализуйте на этом инструменте, чтобы я мог разобраться в нём если что/после вас"?


    1. Evgeny_Bondarchuk Автор
      22.03.2024 06:47

      Спасибо за комментарий!

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

      А для того, чтобы помочь, "разобраться после вас" можно использовать руководство пользователя/аналогичную документацию.