Почему не нужно писать спецификации

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

А теперь к самим причинам.

Функциональные спецификации — это фикции

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

Спецификации созданы для того, чтобы угодить всем

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

Спецификации лишь иллюзия соглашения

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

Спецификации принуждают вас принимать важные решения, когда у вас не хватает информации о проекте

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

Использование спецификаций приводит к перегруженному количеству фич

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

Спецификации не позволяют вам развиваться, меняться и оценивать пройденный путь

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

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

Затем, начните рисовать интерфейс — интерфейс будет являться заменой спецификации. Сделайте небольшой набросок. Затем начните кодить. В отличие от скупых параграфов текста, интерфейс можно увидеть и потрогать.

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

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

Блог компании 37signals