Зависит от проекта. Если вы работаете в одиночку над небольшим проектом, может иметь смысл провести ваши технические исследования и исследования в рамках разработки. И хотя это не является частью Agile, конечно, Agile методология может быть использована для добавления некоторого контроля к этому. Однако это делает процесс очень трудно предсказать / или временной интервал. Может быть, все будет хорошо, даже быстрее, если вы работаете в одиночку над небольшим проектом, полностью принадлежащим вам, позвольте вашим требованиям раскрыться по мере их изучения. В процессе используйте хорошие принципы и будьте последовательны, и вам не нужно будет слишком много пересматривать.
На работе мы используем Kanban, Scrum и более традиционные подходы к водопаду. В зависимости от проекта, я считаю, что сложные разработки с четко определенными предварительными требованиями не лучше всего подходят для гибкой разработки, однако многие с этим не согласятся.
Прежде чем мы начнем работать даже над гибким проектом (все, кроме самого простого), мы создадим некоторую документацию. У нас есть макет (если пользовательский интерфейс сфокусирован), набор требований и функциональная спецификация.
Разработчику будет предложено создать техническую спецификацию из функциональной спецификации, и в ходе этого процесса мы определим технологию и проведем любые предварительные исследования, которые нам необходимы. Этот процесс кажется мне настолько важным, поскольку он дает возможность увидеть пробелы в требованиях / функциональных спецификациях и дает большие технологические решения людям, имеющим опыт и системные знания, для принятия таких решений.
Важным моментом является то, что функциональная спецификация может быть списком пунктов маркировки, а техническая спецификация, как правило, будет моделью, с некоторыми точками маркировки и технологическими ориентирами, может быть, всего 3 или 4 страницы в некоторых случаях.
Даже при запуске гибкого проекта мы создаем документацию:
- Вся документация имеет стоимость.
- Разработка против движущихся и плохо определенных требований высокого уровня имеет свою стоимость.
- Правильный баланс с вышесказанным зависит от вашего проекта, культуры и людей.
- Мы документируем Как раз вовремя, документы устаревают.
- Мы документируем едва достаточно / достаточно.
- Мы не храним и не обновляем эти документы, мы не прикладываем к ним особых усилий. Они маленькие. Мы ожидаем выбросить их.
- Мы заранее сглаживаем такие большие неизвестности, как технологические решения, туманные требования и архитектура.
- Мы знаем, что мы развиваем, прежде чем мы начнем.
- Мы доверяем разработчикам принимать обоснованные решения по документации и обсуждать любые вопросы.
- Мы ценим общение, а не документацию, поэтому мы ожидаем, что все участники будут часто общаться
- Мы документируем системы (обзор) после разработки, а не во время, не до.
Вы видите, что в нашем гибком процессе есть небольшой водопад.
Если вы работаете в одиночку, создайте предварительную модель (диаграмму!), Поиграйте с ней и выберите технологию, а затем, когда у вас будет эта концепция требований высокого уровня, бегите вперед и развивайте гибким итеративным способом, но примите во внимание хорошие принципы и последовательность, как вы идете, и вам нужно будет рефакторинг меньше, больше рефакторинг, как вы идете.
Но в целом, если это сопряжено с реальными затратами (не хобби), знайте, что вы разрабатываете, прежде чем писать код, но не тратьте слишком много времени на написание документации, которая станет избыточной быстро, так как вы передумаете, и должны измените свое мнение во время разработки, как вы стали лучше информированы. И ваш проект может сильно изменить курс, но начать с хорошего, четко определенного фундамента.