Написание подробного технического задания для 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. Не вдохновляет исполнителя
Заказчику не стоит надеяться, что ему удастся через текст ТЗ вдохновить разработчика или передать ему свое стремление получить новую ценность для бизнеса.
Не все так плохо
Риски, которые влекут описанные проблемы, можно снизить. Например, предусмотреть в контракте, что ТЗ можно менять, упростить процедуры пересогласования или разрешить реализовать ТЗ не в полном объеме, но подчеркнуть важность достижения бизнес-цели.
Работа над каждой проблемой так или иначе связана с выстраиванием партнерских отношений между заказчиком и исполнителем, а это тяжелая работа.
Увы, не переболело. Автор только подтверждает это. И в промышленных разработках есть часть исполнителей, которые под модной вывеской гибкой разработки блуждают в вечном поиске решения. С этим трендом очень тяжело бороться.
Собственно бороться не нужно, само пройдёт. А про переболело - так в телевизоре руководитель одного банка с "зелёным логотипом" регулярно с подобными идеями выступает. Правда действительности они даже в этом банке соответствуют весьма условно. Но он об этом не знает, а слишком многие "обманываться рады".
Впрочем, есть вполне успешные примеры реализации подходов, о которых говорит автор.
Да, конечно! "Не держись устава, яко слепой стены..."
Интересный сайт! Только я не очень понял, почему эта методика обследования процессов противоречит желанию писать ТЗ, как результат? ТЗ не обязательно должно быть сформировано по ЕСПД. Если оно в виде чернильных описаний, то всё равно будет ТЗ. Как его реализовывать, вопрос третий. Каскадная модель жёстче, гибкие методики допускают более частую коррекцию.
Вообще-то, ТЗ имеет не только технический аспект, но и юридический.
(оказалось повторил то, что уже написано в сообщении Андрея Панахова от 13 февраля 2018, 15:47)
На эту тему лучше бы говорить с системной точки зрения:
ВХОД ==> ЧЕРНЫЙ ЯЩИК ==> ВЫХОД
Но, п.1-п.3 – это для прямых задач, которые чаще встречаются в книжках. А в жизни, как правило, доминируют обратные задачи, для которых:
- о. ВХОД – это показатели назначения изделия.
- о. ВЫХОД – это показатели потребления изделия.
- о. ЧЕРНЫЙ ЯЩИК – это способ преобразования показателей потребления в показатели назначения.
Заказчик, как правило, знает только то, что ему нужно -- показатели назначения. Их-то он и предъявляет в качестве исходных данных (п.1.о.).Как известно, обратная задача (п.1.о -- п.3.о) решается путём её замены на прямую (п.1-п.3). У исполнителя – как специалиста – есть значительный архив решенных прямых задач. В этом своём архиве он и ищет-подбирает подходящую прямую задачу, для которой: п.2 = п.1.о.
Но, дело в том, что обратная задача имеет НЕединственное решение. То есть, для п.2 = п.1.о. могут быть разные варианты, как для п.1 так и для п.3. Вот исполнитель и подбирает такой вариант прямой задачи, для которой содержание п.1 и п.3 приемлемо пожеланиям-возможностям заказчика. Подобранный вариант описывается в виде ТЗ и утверждается Заказчиком.
И не надо бы спекулировать на якобы твердокаменности ТЗ. Если при осуществлении ТЗ выявляется необходимость его корректировки, то эта необходимость должна быть представлена Заказчику в виде вариантов, изложенных в форме "выигрыш-затраты".
Это модель деятельности (преобразования ресурсов в продукт). В которой не учтены управляющие воздействия и преобразующие ресурсы. Нет также целей преобразования (внешних для этой модели).
А, ну-да. В оной, также не учтены преобразующие воздействия и управляющие ресурсы. А о ресурсном воздействии и преобразующем управлении вообще речи нет. И вообще, дальнейшее продолжение перечисления замеченных Вами недостатков системного подхода считаю излишним.