Привет! Меня зовут Настя, я системный аналитик в X5 Tech. В этой статье хочу поделиться своим опытом создания чек-листа для технического задания (далее – ТЗ), какие ошибки совершала на начальных этапах работы над продуктом, и как сформированный чек-лист помогает мне уже на протяжении трёх лет. Такой чек-лист может пригодиться не только для самостоятельной работы над ТЗ, но и как инструмент проверки уже готового документа.
Статья будет полезна, как мне кажется, системным и бизнес-аналитикам, владельцам продуктов и тем, кто работает с разработкой требований.
Предыстория
Несколько интернет-источников говорят нам, что впервые чек-лист придумали в авиации (описание можно почитать тут или тут). Если кратко, то в 1934 году во время испытания новой модели Boeing произошло крушение: достаточно опытный пилот совершил ошибку. Именно этот случай показал, что человеку, пусть и подготовленному, сложно держать в голове много информации. Так был придуман некий список, включающий самый важный перечень процессов управления и подготовки к полёту. Такой список помогал техническим специалистам в авиации, а со временем модернизировался, да и вовсе перешёл в повседневную жизнь многих людей.
Чек-листы в современном мире
Каждый день мы выполняем разные задачи: некоторые из них “на автомате”, другие требуют чуть больше времени и сосредоточенности. Но все они так или иначе состоят из списка действий, который мы и называем чек-листом. Возьмём, например, различные марафоны уборки (генеральная уборка за три дня) или элементарный список покупок – чем не чек-лист? Или список того, что нужно взять в путешествие. Ни одна моя поездка уже не обходится без такого чек-листа. Плюс ко всему, современному миру – современные решения: есть даже книги по написанию чек-листов и чек-лист для диджитал уборки.
Так зачем же мы их используем? Чтобы упрощать и структурировать. Сейчас вокруг нас много информационного шума, дел и задач, и с легкостью можно упустить что-то важное. Чаще всего наши списки не такие сложные, и забывчивость не приводит к крушениям самолётов. Тем не менее, пользу чек-листов сложно отрицать, ведь они:
сокращают ошибки в наших действиях;
экономят время на выполнение задач;
помогают не думать о рутине (речь про частный случай, например, поход в магазин).
Ошибки: провал или опыт?
“Извлекай пользу из каждой ошибки.”
Людвиг Витгенштейн
Мне, как аналитику, свойственно упрощать не только работу программистов или заказчиков, но и свою собственную. В первые месяцы работы в Х5 Tech я столкнулась с большим объёмом информации:
многообразие бизнес-процессов в магазинах “Пятёрочка”;
состав и конфигурация внутренней системы магазинов;
несколько смежных подразделений и команд разработки.
Мне стало интересно разбираться в процессах, коммуницировать с разными людьми, собирать и выявлять требования. Но держать все данные в голове – сложно, память стала подводить, а разработчики и тестировщики стали чаще замечать недочёты в ТЗ.
В итоге, спустя три месяца, для повышения качества постановок на разработку (и, в основном, для сокращения поступающих вопросов от коллег :)) я сформировала свой чек-лист того, что необходимо учитывать в ТЗ.
Первая версия выглядела так:
Как же я к этому пришла? Как ни банально, но большинство из нас учатся на ошибках, причём, на собственных. О них и расскажу.
Ошибка № 1: Забывать описывать то, что часто используется
Информационная система, над которой мы с командой работаем, устроена таким образом, что пользователь видит свои рабочие документы с разными статусами на разных экранных формах: форма с активными документами (с которыми ещё можно работать) и форма с архивными документами (не доступными для изменений). Так вот, изменения чаще всего касались формы активных документов – добавить подсказку к полю, новую колонку в таблице, новое поле. А т. к. архивная форма чаще повторяла активную, то изменения в ней должны быть аналогичные.
Для примера рассмотрим процесс составления претензии к поставщику относительно качества товара. Директору магазина необходимо в этом случае совершить такие действия:
составить электронный акт разногласий;
распечатать акт;
подписать акт;
отправить на рассмотрение в претензионный отдел.
Согласование акта зависит от того, был ли он оформлен в первые минуты приёмки товара при водителе или в течение суток уже без водителя. Таким образом, специалисту по претензиям нужно было видеть способ оформления акта. Но даже при наличии всей информации в электронном виде (тут у нас идёт интеграция между системами), специалист и директор между собой могут обмениваться уточняющей информацией. И если директору нужно посмотреть, каким способом выставлен акт (в электронном архиве документов), то, очевидно, мы должны были добавить отображение этого способа и в архивном акте. Что я и “успешно” забыла указать в ТЗ и чего не было прописано в бизнес-требованиях…
Получалось так, что путь пользователя заканчивался на этапе работы с активным документом и не описывал его действия с архивным. Проблема обнаружилась разработчиком в одной из задач, когда он увидел в коде связь активной и архивной формы. Посовещавшись на троих – я, разработчик и тестировщик, – мы решили доработать этот момент в текущем релизе и не переносить на следующий. Так изменения для пользователя выглядели более логичными и не вызывали вопросов относительно разных интерфейсов одной и той же формы.
Ошибка № 2: Забывать описывать то, что редко используется
Не все задачи включают изменения одной и той же функциональности. Например, могут быть изменения только экранных форм и не затрагивать изменения в печатных формах, или наоборот. То же касается и изменений конфигурации системы. Не так часто это используется в повседневной разработке, но может быть частью новой фичи. А без этой части картина для пользователя, опять же, будет неполной.
Иногда тестировщики при проверке задачи проходятся не только непосредственно по доработкам и альтернативным сценариям, но и тестируют “около”. Это значит, что может быть проверена функциональность, связанная с путём пользователя, который мы улучшаем, но не входящая в начальный скоуп разработки. Так мы обнаружили, что в одной из задач нам не хватило доработки печатной формы. И т. к. изменения были небольшими, то внесли это в уже написанное ТЗ.
Вот пример экранной формы с данными по выкладке товара на полке:
А вот так выглядит печатная форма:
Видно, что поля “Фейс шир./ Фейс выс./Стиль выкладки” присутствуют и в документе для печати, и на экранной форме, но изначально в ТЗ я не прописывала добавление этих данных на печатную форму.
Ошибка № 3: Забывать описывать изменения на всех устройствах
Если система имеет десктопную и мобильные версии, то изменения должны быть и там, и там. Команды, занимающиеся мобильной разработкой и разработкой десктопа, разные. Аналитики, тестировщики, разработчики между собой пересекаются не во всех доработках, а бизнес-требования чаще формулируются для системы в общем.
Заказчик ожидает, что функциональность будет внедрена на всех устройствах, а по факту оказалось, что в релизе поддержали изменения только в десктопной версии. Разработка на мобильных устройствах “переехала” на следующий релиз ввиду ограничения по срокам и ресурсам, которые изначально не запланировали. Доработки велись в последующие месяцы, и по факту, для пользователя мобильная версия на это время стала урезанной версией десктопной. Это отставание длилось на протяжении нескольких релизных циклов, но в конце концов всё выровнялось.
Были ещё несколько кейсов, в которых так или иначе всплывали доработки в уже согласованных требованиях.
Как мы это решали?
некоторые ошибки исправлялись в момент согласования ТЗ и разработки;
некоторые через CR (Change Request – запрос на изменение) уже после разработки, на пилоте новой версии системы;
некоторые переходили на следующий релиз.
Мой чек-лист – моя прелесть
Все предыдущие ошибки и решения помогли мне сформировать свой чек-лист, который я использую для валидации ТЗ. По нему я сверяю документ перед тем, как отдать его в разработку: а всё ли я учла в описании? Все ли альтернативные сценарии указаны? Все ли устройства описаны и т. п.
И, конечно, я была очень рада, когда он перестал наполняться. Ведь это означало, что большинство шишек уже набиты, а, значит, можно составлять более полные и точные ТЗ.
Формально мой чек-лист содержит следующие пункты:
№ |
Описание |
Пример |
1 |
Чаще всего дорабатывается в каждой задаче |
Изменения в базе данных (формат и размерность полей); доработка экранных форм. |
2 |
Редко дорабатывается |
Отчёты; печатные формы; экранные фильтры. |
3 |
Является специфичным для бизнес-процесса |
Разные пути пользователя для достижения одной и той же цели: доработки должны быть описаны для всех таких возможных ситуаций. |
4 |
Наличие разных форматов или устройств |
Десктоп, мобильная версия. Мобильная версия с разным интерфейсом на разных физических устройствах (устройство под Android или Windows). |
5 |
Конфигурация системы |
Дополнительные параметры развёртывания, настройки системы. |
6 |
Интеграция с другими системами |
Формат и размерность параметров интеграции между системами; все ли системы учтены. |
7 |
Проверка описания форматов данных или сообщений на соответствие принятым стандартам/гайдлайнам разработки |
Если есть корпоративные стандарты, то необходимо их соблюдать. |
Скачать обобщённый чек-лист можно здесь.
Мой список содержит проверку узконаправленных бизнес-процессов, за доработку которых отвечает наша команда. И если задача достаточно объёмная (бизнес-требования подразумевают доработку не на один спринт или релиз), то обязательно сверяю ТЗ с этим чек-листом.
Спустя год работы и по сей день он выглядит так:
Ещё хочу добавить, что если проект или сфера автоматизируемой деятельности сложная (включает много деталей или просто много информации), то лучше заранее создать свой чек-лист. Попробуйте сформировать его целенаправленно, а не на ошибках. Надеюсь, это будет менее болезненно для команды, и мой чек-лист поможет вам в этом.
Применение чек-листа для ТЗ
Если говорить о пользе своего чек-листа, то для себя я определила три ситуации, в которых его использую:
при согласовании бизнес-требований: проверить, всё ли учёл бизнес-аналитик и заказчик;
при написании ТЗ: легче разбивать на задачи для разработки. Например, можно оформить отдельные задачи на изменение БД, изменение экранных форм, интеграцию;
-
в процессе разработки: ответы на вопросы разработчиков и тестировщиков – почему так, а не иначе написано в ТЗ. А потому что, следуя чек-листу:
согласовывала изменения с архитекторами;
использовала корпоративные гайдлайны;
общалась и согласовывала требования с бизнес-экспертами/заказчиком по различным бизнес-процессам.
Зачем ещё может понадобиться чек-лист для ТЗ?
Чтобы не забыть что-то сделать:
проходясь по такому чек-листу, я понимала, что иногда в готовом ТЗ забывала указывать какие-то требования на разработку. И, тем самым, чек-лист помогал мне заранее исправить ситуацию, когда изменения пришлось бы вносить уже в момент разработки.
Чтобы не делать лишнего:
порой функциональность могла присутствовать на одной форме и отсутствовать на другой намеренно, но благодаря чек-листу я знала, что заказчику нужна такая разница в требованиях, а не то, что он или я просто забыли указать это в документах для разработки.
Комментарии (3)
tempart
29.06.2023 16:13Сначала пытался понять, чек-лист ТЗ - валидация на что тут? На соответствие БТ, на "качество" (по критериям) самого дока? Не понял.
Потом увидел, что
для повышения качества постановок на разработку (и, в основном, для сокращения поступающих вопросов от коллег :)) я сформировала свой чек-лист того, что необходимо учитывать в ТЗ
Тут уже попытался понять, что такое "ТЗ" в статье. Судя по всему, здесь это синоним постановки на разработку.
На мой взгляд, так не надо делать. ТЗ в мире разработки ИС - вполне конкретный вид документа, формализован в различных методиках, стандартах.Ну и, честно говоря, вижу изобретение велосипеда, причём неотшлифованного.
Есть модели документирования разработки ИС, от бизнес-целей до каких-нибудь эксплуатационных на готовый продукт. Соответственно, есть методики валидации этих доков.
В данном случае, странно видеть в чек-листе то, что должно быть описано (формализовано) до постановки на разработку. Чек-лист постановки - это, фактически, трассировка задач в постановке требованиям на функциональностьAShevchenk0 Автор
29.06.2023 16:13Спасибо за интересный коммент, есть над чем задуматься и порассуждать)
ТЗ в мире разработки ИС - вполне конкретный вид документа, формализован в различных методиках, стандартах.
Согласна с этим утверждением. Есть и стандарты ГОСТ по разработке, и внутренние корпоративные стандарты компаний, которые говорят нам о том, что должно быть описано в таком документе. И в данном случае ТЗ – это действительно синоним описания постановки на разработку.
В моей статье речь про исследование до написания ТЗ/постановки и про проверку некоторых пунктов, которые мы потом формализуем в документе ТЗ или в описании постановки на разработку.
Например, тот же самый пункт про требования на доработку на разных устройствах – было немало задач, когда функциональность нужна была только на одном устройстве, или наоборот, когда заказчик озвучивал требование только для одного устройства, бизнес-аналитик фиксировал это в БТ, а потом (уже после разработки) выяснилось, что надо было сделать на всех устройствах. Конечно, можно было сказать «этого не было в БТ», «что заказали, то и сделали», но если можно предусмотреть и исключить такие ситуации до разработки, то почему бы это не сделать?
Таким образом, я говорю о том, что чек-лист помогает сократить кол-во ошибок в постановках, помогает валидировать как БТ и требования заказчика, так и ТЗ/постановки коллег. Валидировать на предмет таких ситуаций, как:
действительно ли заказчик озвучил то, что ожидает от разработки
действительно ли бизнес-аналитик правильно зафиксировал это в БТ
действительно ли в постановке на разработку учтено всё, что покроет ожидания заказчика
странно видеть в чек-листе то, что должно быть описано (формализовано) до постановки на разработку.
В этом как раз нет ничего странного) Чек-лист и есть тот самый формализованный список того, что мы должны учитывать до разработки. Именно он помогает не забывать указывать в ТЗ/постановках то, что ожидает заказчик. И именно он помогает избежать багов и наличия CR, когда в разработке участвует несколько команд или даже подразделений (в случае с интеграционными задачами).
Различные стандарты и методологии документирования – тоже хорошо, но в данной ситуации, когда я только устраивалась в X5 Tech, они не покрывали всех моих потребностей для написания таких постановок, которые бы учитывали все нюансы нашей корпоративной системы и особенностей разработки. Поэтому и был сформирован такой чек-лист, которым я решила поделиться.
Резюмируя:
ТЗ в данном случае – синоним постановки на разработку;
чек-лист – формальное описание того, что должно быть учтено до разработки;
и такое формальное описание позволяет валидировать документы (БТ/ТЗ/описания постановок на разработку) и/или бизнес-требования на предмет того, чтобы результат разработки закрывал потребности и ожидания заказчика.
gleb_l
На мой взгляд, бОльшая проблема - кристаллизация БТ из бизнес-бульона, чем само преобразование БТ в ТЗ. И здесь в принципе чеклисты могут помочь (Шарапов, слушай - правило первое - найди тему, которая ему интересна..), но харизма самого следователя даст много больше. В любом мире то, чем мы пользуемся часто, оказывается настолько привычным, что обходится вниманием. Вспомните Агату Кристи или Холмса - слугу, почтальона, клерка никто не считает за субъекта, способного совершить бизнес-действие (в случае детектива - преступное)
Отсюда вывод - сыщик с воображением и способностью имперсонироваться в преступника - хороший кандидат на сбор БТ и помощник в преобразовании БТ в ТТ