Среди многих бизнес-пользователей и клиентов существует общее представление о том, что когда оно выглядит завершенным, оно почти завершено. Как вы, вероятно, знаете, это далеко от истины. Можно сделать так, чтобы он выглядел красиво, но без серверной части, и некоторые пользователи считают, что сделать его красиво - это 80% работы, а не 20% ( или другие 80% ).
Бесчисленные разработчики могут рассказать ужасные истории об этом - макет страниц, сделанных в Microsoft Word, используя снимки экрана какого-либо другого инструмента, и клиент, говорящий: «Итак, вы почти сделали это?»
Вы должны сделать шаг так, чтобы все части были сделаны, когда это будет сделано. Попытка сначала выполнить весь бэкэнд, а затем весь внешний интерфейс приведет к тому, что конечный пользователь подумает, что вы ничего не делаете, и спросит, почему вам платят, когда за это нечего показать. С другой стороны, сначала пользовательский интерфейс, и вы увидите, что конечный пользователь вносит изменения и тратит все свое время.
Наихудший случай с «первым и вторым» - когда вы переходите к другой части, вы обнаруживаете, что она совсем не соответствует дизайну.
Таким образом, построить оба. Покажите прогресс в передней части, сделайте так, чтобы бэкэнд работал с тем, что вы строите. Во многих случаях хорошей идеей является создание инкрементных сборок и проверка того, что вы делаете то, что хочет клиент (это входит в Agile). Если слишком долго обходиться без «видимых достижений», это может повредить отношениям с клиентом (это касается обоих случаев: «все выглядит рано» и «ничего не сделано до самого конца» - клиенту сложно увидеть, как пишется структура или модульные тесты или очистка данных как прогресс).
Джоэл написал об этом в «Секрете айсберга» :
Важное следствие два. Если вы покажете непрограммисту экран с пользовательским интерфейсом, который на 100% красив, они подумают, что программа почти готова.
Люди, которые не являются программистами, просто смотрят на экран и видят пиксели. И если пиксели выглядят так, как будто они составляют программу, которая что-то делает, они думают: «О, черт возьми, насколько сложнее было бы заставить ее работать на самом деле?»
Большой риск здесь заключается в том, что если вы сначала смоделируете пользовательский интерфейс, предположительно, чтобы вы могли пообщаться с клиентом, то все будут думать, что вы почти закончили. А потом, когда вы проведете следующий год, работая, так сказать, «под одеялом», никто на самом деле не увидит, что вы делаете, и они подумают, что это ничего.
Это снова повторяется в посте блога. Не заставляйте демо-версию выглядеть готовой, на которой есть этот полезный график:
Обратите внимание, что эти два варианта, как правило, отражают «сделать пользовательский интерфейс готовым» (и тогда ожидается, что вы скоро это сделаете) и «выполнить бэкэнд» (а затем клиент беспокоится о том, что вы пропустили крайний срок).
То, как «сделано» что-то выглядит, должно совпадать с тем, как «сделано» что-то.
Каждый разработчик программного обеспечения испытал это много раз в своей карьере. Но инструменты для настольных издательских систем приводят к той же головной боли для технических писателей - если вы покажете кому-то черновой набросок, который отлично отформатирован и отформатирован, он увидит в этом больше работы, чем вы хотели бы. Нам нужно соответствие между тем, где мы находимся и где другие нас воспринимают.
В этой статье также поднимается важный вопрос о типе обратной связи, которую вы получаете с различными уровнями восприимчивости пользовательского интерфейса. Если у вас есть что-то, что выглядит завершенным, вы с большей вероятностью получите отзыв о «могли бы вы изменить шрифт», чем «этот макет не работает - слишком много вкладок».
Для тех, кто борется с этим в мире Java Swing, есть внешний вид под названием Napkin, который делает его таким, чтобы пользовательский интерфейс не выглядел полным (даже если это так).
Ключевым моментом здесь является сделать так, чтобы он не выглядел готовым. Внешний вид пользовательского интерфейса является сигналом для многих бизнес-пользователей о том, что приложение завершено (даже если это всего лишь несколько статических страниц без какой-либо логики или что-то встроенное в конструктор интерфейса).
Дальнейшее чтение (и ссылки из статьи):