Почему не нужно писать спецификации
Для начала, спецификация — законченное описание поведения программы, которую требуется разработать, но, по сути, мало связанное с самим продуктом, так как добрый заказчик поменяет все сотню раз!
А теперь к самим причинам.
Функциональные спецификации — это фикции
Они никак не относятся к реальности. Приложение не придет в этот мир пока разработчики не напишут код, дизайнеры не нарисуют интерфейс, а люди не начнут его использовать. Спецификации являются лишь пустыми словами на бумаге.
Спецификации созданы для того, чтобы угодить всем
Спецификации призваны осчастливить всех и сразу. Это похвально, но глупо и бесполезно! В спецификациях никогда не приводится советов по нахождению оптимальных решений поставленной задачи, но в разработке без этого не обойтись.
Спецификации лишь иллюзия соглашения
Кучи подписей людей под параграфами текста — не является соглашением. Читая один и тот же текст, каждый представляет что-то своё. Они обязательно приходят с фразами: “Стоп, это не то, что я себе представлял.” — “Что? Вы мне не так описывали.” — “Да, это было, и мы соглашались с этим — вот ваша подпись.” Ну, вы знаете как это работает.
Спецификации принуждают вас принимать важные решения, когда у вас не хватает информации о проекте
Вам доступна малая часть информации, когда вы садитесь писать код. Чем больше вы пишете, чем больше вы используете то, что написали, тем больше у вас представлений о конечной цели. Поэтому, важные решения должны приниматься тогда, и только тогда, когда вы уже достаточно поработали с проектом. Ни в коем случае не в самом начале.
Использование спецификаций приводит к перегруженному количеству фич
Когда вы пишете, не существует никаких ограничений. Вы руководствуетесь своей фантазией. Нет ничего сложного в добавлении еще одного абзаца в тексте, или создания нового пункта в списке. Вы легко можете добавить чужую идею в проект, просто для того, чтобы сделать автору приятно. Но вместо всего этого, вы тупо исполняете то, что написано на жалком листке бумаги. Так и появляются сайты с 30-ю горизонтальными табами.
Спецификации не позволяют вам развиваться, меняться и оценивать пройденный путь
Каждая фича обговорена сотню раз и подписана. Даже если в процессе написания проекта вы осознаете, что это скорее баг, ничего уже не изменить. Спецификации даже не подразумевают возможность внесения изменений.
Итак, а что должно быть вместо спецификаций? Начните с более простой альтернативы, которая немного приблизит вас к конечному результату. Напишите одно страничное описания того, для чего пишется данное приложение. Используйте простой язык и не тратьте много времени. Если такой документ занял больше одной страницы, значит он слишком сложный. На весь процесс может уйти максимум один день
Затем, начните рисовать интерфейс — интерфейс будет являться заменой спецификации. Сделайте небольшой набросок. Затем начните кодить. В отличие от скупых параграфов текста, интерфейс можно увидеть и потрогать.
Путаница исчезает, когда все начинают представлять одну и ту же картинку. Напишите интерфейс, чтобы каждый мог его увидеть, почувствовать, покликать перед тем, как задуматься о разработке back-end. Поставьте себя на место клиента, и попытайтесь понять чего не хватает, а что лишнее.
И наконец, забудьте о строгих спецификациях. Они заставляют вас принимать ключевые решения в самом начале проекта. Постарайтесь обойтись без нее, так вам будет проще оставаться гибкими.