TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #2436 2.37K
День 2013. #УрокиРазработки
Уроки 50 Лет Разработки ПО

Урок 17. Проектирование — итеративный процесс. Начало
В классической книге «Мифический человеко-месяц» Брукс советует: «Планируйте выбросить первую версию — вам всё равно придётся это сделать». Он имеет в виду, что в крупных проектах желательно создавать пилотную систему, чтобы выяснить, как лучше построить основную. Это недешёвое удовольствие, особенно если в систему входят аппаратные компоненты. Но пилотная система может пригодиться, если есть сомнения в технической осуществимости или подходящая стратегия проектирования изначально неясна. Пилотная система также может помочь выявить неизвестные факторы, о существовании которых вы не догадывались.

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

Любая задача имеет несколько решений, и редко лучшим оказывается первое из них. Работу по проектированию можно считать выполненной, только если вы придумали хотя бы три решения, отбросили их все, а затем объединили лучшие их части в превосходное четвёртое решение. Иногда только рассмотрев три варианта, начинаешь осознавать, насколько плохо понимаешь проблему.

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

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

Во-первых, определите, что вы собираетесь делать: отказаться от прототипа и разработать реальное решение или превратить его в окончательный продукт. Если второе, вы должны с самого начала создания прототипа придавать ему промышленное качество. Это потребует больше усилий, чем создание чего-то временного, от чего вы откажетесь.

Прежде чем приступить к конкретному решению, Agile-команды иногда создают истории, называемые спайками (spike), предназначенные для исследования технических подходов, устранения неопределённости и снижения риска. В отличие от других пользовательских историй, основной результат спайка — не рабочий код, а знания. В спайки может входить создание технических прототипов, прототипов UI или того и другого в зависимости от искомой информации. Спайк должен иметь чёткую цель, как научный эксперимент. У разработчика есть гипотеза, и для получения доказательств её верности или неверности, подтверждения обоснованности какого-либо подхода или быстрого принятия технического решения реализуется спайк.

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

Окончание следует…

Источник: Карл Вигерс “Жемчужины Разработки”. СПб.: Питер, 2024. Глава 3.
  • 👍 19
More from @netdeveloperdiary
  1. Oct 7, 2026День 2807. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Окончание Нач…
  2. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  3. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
  4. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  5. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  6. Oct 3, 2026Post #3360
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →