Капитан очевиден для спасения!
Я буду Капитаном Очевидным здесь и скажу, что есть некая золотая середина.
Вы действительно хотите строить на будущее и избегать привязки к технологическому выбору или плохому дизайну. Но вы не хотите тратить 3 месяца на разработку чего-то, что должно быть простым, или на добавление точек расширения для быстрого и грязного приложения, которое будет иметь двухлетний срок службы и вряд ли будет иметь последующие проекты.
Трудно найти различие, потому что вы не всегда можете предсказать успех вашего продукта и если вам нужно будет расширить его позже.
Построить сейчас, если ...
- проект будет свернут
- проект имеет короткий срок службы
- проект не должен иметь расширений
- проект не имеет значения влияния риска (в основном с точки зрения имиджа)
В общем, собственные проекты или что-то построенное для клиента должны быть разработаны на данный момент. Убедитесь, что у вас есть прямые требования, и при необходимости обращайтесь к ним, чтобы знать, что нужно, а что нет. Не хочу тратить слишком много времени на то, что "приятно иметь". Но не кодируйте как свинью.
Оставьте общую проблему на потом, если это может понадобиться и стоить усилий:
Строить для будущего, если ...
- проект будет публичным
- проект является компонентом для повторного использования
- проект является ступенькой для других проектов
- у проекта будут последующие проекты или сервисные релизы с улучшениями
Если вы создаете что-то публичное или собираетесь использовать его в других проектах, то вероятность того, что плохой дизайн будет преследовать вас, будет гораздо выше, поэтому вам следует уделять этому больше внимания. Но это не всегда гарантировано.
Методические рекомендации
Я бы сказал, что придерживайтесь следующих принципов как можно лучше, и вы должны поставить себя в положение разработки эффективных, адаптируемых продуктов:
- знаю, что ЯГНИ ,
- Поцелуй ,
- всякий раз, когда вам захочется почесать зуд и подумать о добавлении, запишите его. Посмотрите на требования вашего проекта и спросите себя, являются ли дополнения приоритетами или нет. Спросите, добавляют ли они основную ценность для бизнеса или нет.
Я знаю, что лично я склонен переосмысливать и переусердствовать. Это действительно помогает записывать идеи и очень часто переосмысливать, если мне нужны дополнительные функции. Часто ответ отрицательный или «это будет круто позже». Эти последние идеи опасны, потому что они остаются в моей голове, и мне нужно заставить себя не планировать их.
Лучший способ написания кода без чрезмерных усилий и без блокировки на потом - это сосредоточиться на хорошем минимальном дизайне. Разберите вещи как компоненты, которые вы можете позже расширить, но уже не задумываясь о том, как они могут быть расширены позже. Вы не можете предсказать будущее.
Просто строить простые вещи.
Dilemmata
переустройства
Является ли это тенденцией, которой обычно придерживаются программисты при разработке такого проекта?
Черт возьми да Это известная дилемма, и она только показывает, что вы заботитесь о продукте. Если вы этого не сделаете, это больше беспокоит. Существуют разногласия по поводу того, действительно ли меньше всегда действительно больше, а если хуже, то всегда действительно лучше . Вы можете быть парнем из МТИ или Нью-Джерси . Здесь нет простого ответа.
Прототипирование / Quick-n-Dirty / Less is More
Является ли это типичной тенденцией к тому, чтобы как можно быстрее вылепить работающий пример?
Это распространенная практика, но к большинству проектов это не относится. Тем не менее, на мой взгляд , прототипирование - хорошая тенденция, но со средним недостатком. Может быть заманчиво продвигать быстрые и грязные прототипы для реальных продуктов или использовать их в качестве основы для реальных продуктов в условиях давления со стороны руководства или временных ограничений. Вот когда прототипы могут вернуться, чтобы преследовать вас.
Есть очевидные преимущества для прототипирования , но также есть большой потенциал для неправильного использования и злоупотребления (многие из них полностью противоположны ранее перечисленным преимуществам в качестве результата).
Когда использовать прототип?
Есть подсказки относительно лучших типов проектов для использования прототипов :
[...] прототипирование наиболее полезно в системах, которые будут иметь много взаимодействий с пользователями.
[...] создание прототипов очень эффективно при анализе и проектировании онлайновых систем, особенно для обработки транзакций, где использование экранных диалогов гораздо более убедительно. Чем больше взаимодействие между компьютером и пользователем, тем больше выгода [...]
«Одним из наиболее продуктивных применений быстрого прототипирования на сегодняшний день является инструмент для итеративного проектирования требований пользователя и проектирования интерфейса человек-компьютер».
С другой стороны:
Системы с небольшим взаимодействием с пользователем, такие как пакетная обработка или системы, которые в основном выполняют вычисления, мало выигрывают от прототипирования. Иногда кодирование, необходимое для выполнения системных функций, может быть слишком интенсивным, а потенциальные выгоды, которые может обеспечить прототипирование, слишком малы.
И если у вас есть зеленый монстр, просто постарайтесь сохранить прототип в рамках бюджета ...