Я собираюсь начать новый проект (игра, но это неважно). Основная идея в моей голове, но не все детали.
Я не хочу начинать программировать без планирования, но я серьезно борюсь с желанием просто сделать это. Я хочу, чтобы какое-то планирование было заранее, чтобы предотвратить рефакторинг всего приложения только потому, что новая функция, о которой я мог подумать, требует этого. С другой стороны, я не хочу планировать несколько месяцев (свободное время) и начинать это, потому что у меня есть некоторый страх, что я потеряю свою мотивацию в это время.
То, что я ищу, - это способ объединения обоих без доминирования одного над другим. Должен ли я реализовать проект в стиле Scrum? Должен ли я создавать пользовательские истории, а затем реализовывать их? Должен ли я работать на основе функций? (У меня есть некоторый опыт в scrum и классическом подходе «спецификация к коду».)
Обновление : как насчет того, чтобы начать с «пустышки» и реализовать эту функцию позже?
источник
Запланируйте минимальный жизнеспособный продукт и осуществите это. Затем выслушайте своих пользователей, спланируйте следующее логическое усовершенствование и осуществите это. Повторение.
источник
Независимо от того, сколько времени вы тратите на планирование и разработку вашей программы, вы все равно всегда переписываете ее части. Это как гравитация, а не умные, отрицающие свое существование.
Нужно понимать, что рефакторинг - это нормальная часть разработки, и это просто вопрос принятия решения, когда вы это сделаете. Подождите долго, и вы получите огромное количество спагетти, прося полное переписать. Не смешно.
Я предлагаю немного спланировать, но приступить к написанию кода как можно скорее и рефакторинга, рефакторинга, рефакторинга, чтобы сохранить код в форме. СУХОЙ принцип (не повторяйся) - отличный индикатор для этого.
источник
Когда я нахожусь в этом положении, я иногда использую TDD (разработку через тестирование) и начинаю планировать некоторые тесты для наиболее сложной части системы, которую я разрабатываю. В качестве альтернативы я могу собрать псевдокод высокого уровня, опять же для самых сложных областей. Я считаю, что этот процесс дает мне свободный план действий и помогает мне определить, какие области, вероятно, будут наиболее трудоемкими.
Для меня этот подход работает, потому что он живет где-то между кодированием и планированием. Как только у вас появятся тестовые идеи и / или псевдокод, вы сможете проработать каждый логический раздел и реализовать код. Я часто вначале решаю самую сложную часть предлагаемого решения, потому что обычно самая сложная часть - это основная функция приложения, и вы всегда можете задержать любые помехи.
Поскольку вы комментируете, что большая часть кода находится в вашей голове, и вы готовы к погружению и программированию, использование этого подхода может помочь вам сосредоточиться на каждом разделе, не отвлекая ваш разум от системы в целом.
Подводя итог более кратко, можно сказать, «сначала займись самым сложным, разделяй и властвуй с помощью псевдокода и / или планов TDD»!
источник
Просто попробуйте сделать код модульным. Все, что вы планируете, может быть выброшено во время следующей итерации.
источник
Я бы порекомендовал записать ваши идеи по крайней мере. В зависимости от размера проекта много формального планирования может не потребоваться. Однако если он очень велик, вы можете избавить себя от головной боли и потратить пару дней на более глубокое планирование.
источник