Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

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

Аватар Типичный программист
Отредактировано

6К открытий6К показов
Почему не нужно писать спецификации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6К открытий6К показов