Tracer Bullets vs Prototypes

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

Спасибо

Ответ 1

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

Код Tracer не является одноразовым: вы пишете его для сохранения. Он содержит всю проверку ошибок, которую имеет любой фрагмент производственного кода. Это просто не полностью функционально.

Если прототип может быть выброшен, я не буду читать о том, что они защищают в этом конкретном эссе.

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

Ответ 2

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

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

Большая часть этого - это мое собственное понимание концепций, поэтому, пожалуйста, прочитайте критически.

Как они похожи

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

Как они отличаются

Две методологии различаются по двум общим путям: какие неизвестные они пытаются исследовать, а какие принципы ими руководствуются.

Разница одна: что они исследуют

Прототипы исследуют детали реализации. Будете ли вы использовать бэкэнд SQL или NoSQL? Быстро издевайтесь над ними, чтобы сделать сравнение. Можете ли вы даже ежедневно доставлять 10 000 боевиков на главный сервер? Поднимите немного script и сделайте снимок.

Tracer bullets исследуют возможность решения. Как только вы узнаете подробности реализации, выберите один автономный компонент и дайте ему вращение. Создание приложения для управления проектами? Выделите одну часть, например, списки дел, и стреляйте в нее.

В разработке продукта вы хотите выполнить итерацию как можно быстрее, так что вы должны быстро начать стрелять, чтобы увидеть, что вы что-то делаете. "Трассирующие пули" - это обратная связь с акционерами!

Разница два: принципы

Основным принципом, определяющим прототипы, является "git" er done ". Это быстро, он грязный, он дает результат (обычно информацию) и отбрасывается. Не добавляйте ничего, что мешает: получить информацию и выйти.

Основные принципы, определяющие трассирующие пули, - это полнота и простота. Причина простоты проста: вы хотите быстро увидеть результаты. Полнота немного сложнее. Это признание реальности: если у вас есть продукт, который "работает", вы должны немедленно приложить свои усилия в другом месте. Если продукт дряблый или отсутствует документация, или он использует ярлыки, вы долгое время будете жить с этими недостатками. Сделайте это в первый раз!

Вы можете заметить, что существует много синергии между идеей полной маркерной пули и другой идеей прагматического программиста "Без проблем с Windows".

Преимущества

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

Ответ 3

Начнем с самого простого: Прототипы. Прототипы - это, по сути, способ проверить границы того, что вы можете и чего не можете сделать для своих рассказов пользователей. По сути, это просто фиктивное приложение, которое используется только для проверки того, возможно ли решение для данной проблемы. Например, вы должны написать прототип, если хотите посмотреть, может ли ваш сервер обрабатывать более 1000 запросов одновременно. Таким образом, вы пишете script, который отправляет запрос на ваш сервер 1000 раз. Функциональность не важна, она гарантирует, что задача возможна, и что у вас есть четкое представление о том, как это сделать.

Tracer Bullets: Tracer bullets используются для "Skeleton Applications", которые являются оболочками приложений, которые не содержат много (если есть) функциональных возможностей, но проходят через продолжительность жизни программы. т.е. подключается к клиенту, подключается к базе данных, запрашивает базу данных (но вы не очень заботитесь о данных). Скелетное приложение в основном является основой для вашего приложения. После разработки скелетного приложения вы используете маркерные маркеры для определения основных компонентов вашего приложения. Для меня это немного зависит от того, какую функциональность вы хотите реализовать. Как хорошая практика, и на самом деле то, что я делаю на работе в качестве инженера-программиста, я думаю, что трассирующие патроны больше основаны на ваших модульных тестах (которые вы должны иметь для любого приложения, которое вы разрабатываете). Если вы точно определяете модульные тесты, которые захватывают ВСЕ функциональные возможности данной истории пользователя, это работает как очень важная трассирующая пуля по двум причинам: 1) Когда вы начинаете изменять скелет своего кода, если у вас есть точные модульные тесты, настроенные для каждой из функциональных возможностей данной истории пользователей, когда вы возвращаетесь, чтобы изменить код (для чего действительно нужна ваша трассирующая марка), чем вы ЗНАЕТЕ, что вы не нарушаете никаких текущих функций или каких-либо других функциональных возможностей, которые уже созданы (потому что ваши тесты будут ломаться, если вы каким-то образом сломали код). 2) Если вы создаете новую функцию, точно так же, как в метафоре трассировщика пистолета, используемого в в этой статье, ваши тестовые примеры собираются рассказать насколько точны ваши "трассирующие пули" для данной функции. Поэтому, если вы намерены использовать какую-либо функцию для выполнения определенного действия, и вы хорошо моделировали это в своих модульных тестах, если ваш код не дает желаемого результата, вы можете легко вернуться и изменить код, чтобы получить более точный вывод. Таким образом, маркеры трассировки (инкапсулированные в ваши тестовые примеры) расскажут вам, насколько точны ваши программные решения на самом деле.

Итак, в суммировании, Prototypes предназначены для проверки того, является ли решение ВОЗМОЖНО, Tracer Bullets предназначены для проверки того, насколько точным является ваше текущее решение для идеального решения, которое вы хотите создать.

Для получения дополнительной информации об модульном тестировании я бы рекомендовал изучить Test Driven Development (TDD).

Я надеюсь, что все это имеет смысл и полезно. Дайте знать, если у вас появятся вопросы! Джош

Ответ 4

См. this. Я считаю справедливым сказать, что трассирующие пули - всего лишь метафора, которая помогает объяснить ценность прототипов. Я не думаю, что есть разница.

Ответ 5

Трассировщики - это построение сквозной, минимально возможной тонкой, но реальной реализации прецедента, используемой для быстрого цикла обратной связи, то есть независимо от того, строите ли вы правильную вещь (попадете в цель) и на основе обратной связи вы можете настроить свою цель и запустить новую трассирующую пулю.

Прототипы не обязательно являются сквозными, они в основном используются в качестве обучающего инструмента и ориентированы на область, о которой вы не уверены и хотите исследовать, прежде чем внедрять всю поддерживающую логику, их можно использовать, чтобы делать такие вещи, как оценивать новую библиотеку, создать быстрый интерфейс/проводной кадр, оценить, как будет выполняться запрос, если вы введете 1 миллион записей и т.д. Так как они не разработаны как полностью функциональные, от конца до конца и в основном взломаны, просто чтобы получить быстрые ответы, поэтому вы не можете легко поставить их в производство.