Экстремальное программирование (Бек) - страница 111

Исследование

Предварительная подготовка к работе – это неестественное состояние системы, и этот этап должен быть завершен как можно быстрее. Какую фразу я услышал совсем недавно? Если программа начинает эксплуатироваться на производстве, значит, программа завершена. ХР утверждает прямо противоположное. Если программа еще не эксплуатируется на производстве, это значит, что мы тратим деньги и при этом не зарабатываем деньги. Я рассматриваю эту ситуацию так, как будто это мой бумажник. Ситуация, когда деньги тратятся и при этом не зарабатываются, кажется мне очень дискомфортной.

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

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

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

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