Это зависит от того, насколько сложна проблема, которую вы пытаетесь решить. Если вы беретесь за большой программный проект, вам нужно иметь определенную степень планирования, прежде чем начать. Если вы этого не сделаете, вы будете ужасно потеряны в деталях вещей, которые не совсем общаются с другими частями в кратчайшие сроки.
По сути, попробуйте взглянуть с высоты птичьего полета на проблемы, которые нужно решить. Посмотрите, достаточно ли малая из этих проблем, чтобы вы могли их решить, и выясните, что может понадобиться для связи с остальным решением. Думайте об этом как о чёрном ящике с API для внешнего мира.
После того, как вы разберетесь со всеми вашими блоками, посмотрите, нужно ли вам разбить проблему на более мелкие подзадачи или у вас есть достаточно подробное представление всего проекта, чтобы вы могли начать с кода.
По моему опыту, планирование помогает вам предотвратить проблемы в будущем, заставит вас больше думать о том, как должен расти код в будущем, если вам нужно что-то добавить и т. Д.
В большинстве случаев вы сэкономите время, потраченное на планирование при отладке или расширении проекта. Кроме того, грубая компоновка проекта означает, что вам будет легче получить помощь в создании необходимых вам «черных ящиков», так что вы сможете работать над этим с большим количеством людей, чем просто с вами.