Я не уверен, что размышления о проблеме раньше времени и итеративный подход противоречат друг другу. Как и многие другие вещи, я думаю, вы должны стремиться к достижению баланса между ними. Как вы находите баланс? Это то, что вы изучаете на опыте, и часто лучшие уроки времени (то есть то, что дает вам опыт) - это когда вы не совсем понимаете это (или даже лучший урок: просто выкладывайте это неправильно). Как вы уже указали, есть поговорка: «Выпусти быстро, выпускай чаще». Есть еще один похожий: «рано проваливайся, проваливай быстро, часто проваливай»
Думать о будущем - это здорово, и ты должен это сделать. Но с опытом учитесь, когда перестать думать и просто что-то построить, даже если у вас нет всех данных. Построив его, вы сможете лучше понять суть проблемы и потенциально найти гораздо лучшее решение. Поэтому я бы порекомендовал не исключать одно из другого, а сделать «мыслящую голову» частью своих итераций, и со временем я думаю, что вы сами найдете правильный ответ на этот вопрос.
Просто маленький пример. На днях я боролся с решением о разработке программного обеспечения. Оглядываясь назад, это было относительно тривиально, но у меня было две альтернативы, и казалось, что они оба будут работать. Я продолжал возвращаться к плюсам / минусам каждого, а затем возвращался назад и пересматривал свои решения. Оглядываясь назад, я немного смущаюсь, сколько времени я трачу на размышления. Тогда я сказал себе: f # @ k! И вместо того, чтобы использовать какой-либо из проектов, я просто взялся за совместный взлом некоторого кода, полностью игнорируя все хорошее, что вы узнали о хорошем дизайне. Я получил эту функцию за 45 минут. Затем я вернулся, посмотрел на мой код и преобразовал его во что-то солидное и что-то, что мне не было бы стыдно при проверке контроля версий. Самое смешное, что после того, как я взломал работу, придумать
Еще одну вещь, которую я бы порекомендовал специально для проблем, с которыми вы сталкиваетесь сейчас (например, большие, сложные задачи, которые ожидают вас впереди) Вместо того, чтобы делать что-то последовательно, делайте это параллельно. Разбейте свой день на куски, где вы проводите исследования, а затем остановитесь, переключите механизмы и код на некоторое время, по крайней мере, на части проекта, которые не являются полностью неизвестными. Таким образом, оставаясь ближе к коду, вы получите лучшую перспективу, и вы не проголодаетесь, пытаясь слишком быстро усвоить слишком много информации. По крайней мере, для меня, после нескольких часов исследований, хорошо бы позволить мозгу переваривать вещи, переключать задачи и делать что-то еще какое-то время. Тогда вернитесь к дальнейшим исследованиям.