Написание подробного технического задания для IT-проекта воспринимается как стандарт. Все пишут ТЗ, стараясь снизить риски и упростить разработку. Но с работой по ТЗ связан ряд проблем, которые стоит учитывать.
1. Исполнитель строго следует ТЗ
Порядочный исполнитель работает для достижения бизнес-цели, которую поставил заказчик. А реализация согласованного ТЗ гарантирует получение денег за сделанную работу. Но представьте ситуацию, когда в очередном пункте задания находится противоречие с бизнес-целью. Что если в середине проекта выяснилось: какие-то задачи можно решить лучше, быстрее, но не по ТЗ? Исполнитель скорее всего закроет глаза на эффективность и просто выполнит задачу так, как она описана и согласована.
Исполнитель мог предложить заказчику исправить неудачные пункты ТЗ и согласовать изменение бюджета. Но ему проще всего этого не делать, проще смириться с ухудшением качества результата и реализовать точно то, что написано. И, кстати, задайте себе вопрос о бюджете. Много ли найдется разработчиков, которое пойдут на уменьшение бюджета, если увидят более оптимальное решение проблемы? Вопрос риторический.
В идеальном мире они должны стремиться к достижению бизнес-цели. Но после появления ТЗ они стремятся выполнить его в полном объеме. К первоначальному движению в сторону бизнес-ценности добавляется желание поставить галочку напротив каждого пункта. Обратите внимание на мотивацию каждой из сторон – и вы увидите, что ТЗ занимает в проекте центральное место и со временем подменяет цель проекта.
2. Заказчик строго следует ТЗ
Парадоксально, но заказчику тоже проще закрыть глаза на эффективность решения бизнес-задачи и работать строго по ТЗ. Это происходит, когда с разработчиком взаимодействует менеджер, который не рискует личными деньгами, например, руководитель подразделения или другой сотрудник, которому поручили вести проект. Такие люди нарвутся на неприятности, превысив бюджет или сроки, согласованные в плане проекта. Но если они реализуют ТЗ, согласованное начальством, им ничего не грозит.
3. ТЗ создает иллюзию определенности и контроля
Подписанное ТЗ гарантирует, что исполнитель пообещал определенный результат, но жизнь не гарантирует, что все произойдет по плану. Согласованное ТЗ воспринимается как стопроцентно определенное будущее, все планы строятся под него. Но статистика подсказывает, что в большинстве случаев сроки и бюджет проекта будут превышены, а разработанное ПО получится недостаточно высокого качества. По данным CHAOS Report, в 2015 году только 29% проектов завершились в срок без превышения бюджета и с полным набором функций.
ТЗ действительно фиксирует вершины проектного треугольника, но эта фиксация создает лишь иллюзию предсказуемости и контроля. История знает случай внедрения системы SAP у одного российского ритейла. У «саперов» ушел год на составление ТЗ. Еще год – на настройку и программирование SAP. В итоге заказчик остался недоволен, потому что система работала медленно и частично ошибочно, «саперы» недостаточно разобрались в бизнесе. И еще три года ушло на борьбу, дописывание, исправление.
4. ТЗ не дает ответа на все вопросы
Вопросы быстрее и качественнее решаются во время живого общения. Планирование, стендапы, демо, работа в парах, вовлечение клиентов в тестирование, сбор обратной связи на ранних этапах и постоянная корректировка планов, – это все необходимо для достижения качества. Но когда написано подробное ТЗ, появляется соблазн отправлять читать ТЗ, а не отвечать на дополнительные вопросы. В итоге ТЗ заменяет здоровую коммуникацию на проекте.
Проблема в том, что ТЗ никогда не будет всеобъемлющим. Аналитик мог что-то упустить, архитектор подразумевал, но не нарисовал. А вопросы по ТЗ уже не задашь, и пойдешь додумывать ответ сам.
5. Авторы ТЗ недоступны
Аналитики и архитекторы – обычно штучные люди. В компаниях их делят на много параллельных проектов. Если они собрали требования, описали задачу и отдали ее в работу, то скорее всего сразу же пошли делать другие проекты. Если у разработчиков возникнут вопросы, то скорее всего ответ придется им искать в тексте ТЗ: спросить будет не у кого.
6. ТЗ можно составить только под простые задачи
Бывает так, что наиболее рискованные и неопределенные задачи нельзя изучить и описать заранее. Они больше похоже на R&D, чем на реализацию функций. Здесь прямая аналогия с клиническими исследованиями, весь процесс и результат которых невозможно описать заранее, а можно только построить гипотезы и придумать методику.
Получается, что подробное ТЗ можно написать только для очень конкретных и относительно простых задач, которые находятся в правом секторе Cynefin Framework. Но бизнес редко ставит такие простые и конкретные задачи. Если работать над функциями, которые двигают бизнес вперед, то это верхний левый квадрат Complex, а для него ТЗ уже не напишешь.
7. ТЗ можно совершенствовать бесконечно
Написание ТЗ стоит денег, которые хочется сэкономить. При этом мы балансируем между двумя крайностями: переплатить временем и деньгами за чрезмерно подробное описание задач или описать задание недостаточно подробно, что приведет к серьезным рискам и ошибкам. Только эксперт сможет найти золотую середину, а таких экспертов мало. Среднестатистический IT-аналитик имеет все шансы ошибиться.
8. ТЗ не фиксирует качество
Я, как разработчик и IT-архитектор, прекрасно понимаю, что любую задачу, как бы подробно она ни была описана, можно выполнить сотней разных способов. Одни способы будут качественными и дорогими, другие быстрыми и «костыльными». Другими словами, при написании кода ужасного качества, можно формально выполнить требования ТЗ. Есть способы достигнуть высокого качества IT-продукта, но точно не с помощью ТЗ.
9. ТЗ работает по принципу «все или ничего»
К сожалению, нельзя согласовать ТЗ наполовину или договориться сделать самые важные пункты из согласованных. Если ТЗ подписано и выделен бюджет, то вам придется сделать все, что в нем указано. Его «монолитность» не поддается дроблению по принципу Парето 20/80, что приводит к неэффективной работе.
10. Невозможно доказать непротиворечивость
Если в вашем ТЗ больше сотни страниц, то в этом задании, наверняка, есть противоречия. И обратного никто не докажет. Фактически вы всегда подписываете ТЗ с противоречиями.
11. Невозможно доказать полноту
Как в предыдущем пункте, невозможно доказать, что в ТЗ описаны все сценарии, взаимосвязи, точки интеграции и т. п. Достигнуть 100-процентного покрытия задач можно, если имеешь бесконечный бюджет. В других случаях ваше ТЗ не будет полным.
12. Не вдохновляет исполнителя
Заказчику не стоит надеяться, что ему удастся через текст ТЗ вдохновить разработчика или передать ему свое стремление получить новую ценность для бизнеса.
Не все так плохо
Риски, которые влекут описанные проблемы, можно снизить. Например, предусмотреть в контракте, что ТЗ можно менять, упростить процедуры пересогласования или разрешить реализовать ТЗ не в полном объеме, но подчеркнуть важность достижения бизнес-цели.
Работа над каждой проблемой так или иначе связана с выстраиванием партнерских отношений между заказчиком и исполнителем, а это тяжелая работа.
Так Agile же! Либо "издержки плюс" либо "оплата по факту" - без ТЗ и с оплатой за каждую реализованную функцию!
Нет, если объем работы (scope) не фиксированный. Бюджет и время можно залить в бетоне. Вот здесь описана суть https://bureau.ru/about/fff/
1. Давайте разделим. Факт возникновения риска уже означает потери. Поэтому "управлять без потерь" - не бывает. То есть "уклонение" возникает весьма редко. А вот минимизация, передача или разделение - это пожалуйста.
Поэтому ответ на ваш вопрос. Управляемы все 12 выделенных вами рисков. Результат управления различен. Вероятность выхода без потерь - весьма низкая.
2. Александр Бындю пишет:
Я могу поверить в управляемость для небольших проектов длиной до месяца.
Вот не могу вам ничего говорить про малые проекты. Не специалист. У меня проекты ОТ года. Если меньше, то они очень хорошо проработаны и являются дополнениями к основным.
По крупным проектам риски управляются. Постоянно и все. Конечно "передача" в России весьма нелюбимый инструмент. Ну не любят у нас Заказчики брать в интересах проекта риски на себя. Но и это бывает.
Вопрос в результате. Вот типичный пример:
Заказчик и Исполнитель подписывают контракт, по которому поставка оборудования для системы через 2 недели. Иначе штраф 150 млн. Дальше тонны совещаний, переписки, ДС, разъяснительная работа. Итог - поставка через 6 месяцев, штраф 1,5 млн. Управление? Да.
3. Александр Бындю пишет:
Если вы создаете продукты для расширения своего рынка
У нас разная специфика. Я понимаю о чём вы. Но в вашем случае вы, как раз, работаете в сфере ПО и по Agile. Это, фактически, единственный случай где нормально работает подобная форма реализации и достижимы успешные результаты.
У меня аппаратно-программные комплексы в сфере госконтракта. Там отсутствие ТЗ похоронит исполнителя эээ за время близкое к мгновению.
4. Утрировать? Я писал ТЗ на системы сравнимого масштаба. Некоторые успешно работают. Скажу больше, это вполне обычное дело.
Есть только один момент. Фейсбук образовался как сайт Гарварда в 2006 году. Это даже не система была. "Ловя вас на слове" - не вопрос )))
Дальше он начал развиваться и превратился в ИС. По подобным системам ТЗ нужно писать на этапы работ.
Как поставка оборудования связана с разработкой ПО? В материальном мире свои законы.
Скажите для примера как управлять п.9 ТЗ работает по принципу «все или ничего»?
На самом не так. В таких продуктах есть набор гипотез, которые нужно валидировать "в поле" и через эксперименты. Боюсь представить как бы выглядело ТЗ на это.
Тогда жертвуем результатами - "делаем, сколько успеем". Это почти то же самое. ТЗ нужно именно для того, чтобы ограничить соотношение сумма/результаты. Если бы клиенты готовы были платить по факту, мы бы тоже без него работали (внедряем 1С).
Интересная статья! Я бы сказал, душевная.
Ключевое, на мой взгляд, это:
Без этого не будет никакого контролируемого результата: бюджет растёт, сроки сдвигаются. Но это далеко не всё зависит от ТЗ. Планирование большой разработки требует тщательного подхода и планирования. Согласен с коллегами: где-то поступают по-этотапно, кто-то вводит ограничения для разработки.
Понимаю, что автор всего лишь описал риски, связанные с ТЗ, но эти риски довольно прозрачны, они известны.
Единственное, в чём я уверен: без ТЗ серьёзную разработку не сделаешь.
Вы ссылку посмотрели? Не сколько успеем, а достаточно для достижения результата. Scope всегда можно порезать.
Клиенты готовы платить по факту, вопрос в переговорах. Хотя, возможно, на вашем рынке это еще не является обычной практикой. Тогда трудно представить сколько сил уйдет на изменение культуры :)
Анатолий, а какую разработку вы считаете серьезной? Мы все проекты делаем без ТЗ и делаем успешно. Вот часть описана https://byndyusoft.com/casestudies