Я не впевнений, що роздуми про проблему достроково проти ітеративного підходу суперечать один одному. Як і багато інших речей, я думаю, що вам слід прагнути до досягнення рівноваги між ними. Як ви знаходите баланс? Це те, що ви вивчаєте з досвідом і часто найкращі уроки (тобто речі, які дають вам досвід) - це коли ви не розумієте це правильно (або ще краще урок: просто виправдайте його неправильно). Як ви вже зазначали, є приказка "звільняй швидко, звільняй часто". Є ще одна схожа, "невдача рано, невдача, невдача часто"
Подумати вперед - це чудово, і ви абсолютно повинні це робити. Але маючи досвід, дізнайтеся, коли потрібно перестати думати і просто щось будувати, навіть якщо у вас немає всіх даних. Створивши його, ви зможете отримати більш глибоке розуміння проблемної області та потенційно запропонувати набагато краще рішення. Тож я б рекомендував не виключати одного з іншого, але зробити «голову мислення» частиною своїх ітерацій, і з часом, я думаю, ви самі знайдете правильну відповідь на це питання.
Просто невеликий приклад. Днями я боровся з рішенням про розробку програмного забезпечення. Заднім поглядом це було відносно тривіально, але у мене було дві альтернативи, і здавалося, що вони обоє будуть працювати. Я постійно крутився до плюсів / мінусів кожного, а потім кружляв назад і переглядав свої рішення. Озираючись назад, трохи бентежить, скільки часу я витратив на роздуми. Тоді я сказав собі: f # @ k it! І замість того, щоб використовувати будь-яку з конструкцій, я просто пішов вперед і зламав якийсь код разом, повністю ігноруючи всі хороші речі, які ви дізнаєтесь про хороший дизайн. У мене ця функція працювала приблизно за 45 хвилин. Потім я повернувся назад, подивився на свій код і переробив його на щось солідне, і щось мені не соромно було б перевірити контроль над джерелами. Найцікавіше, що після того, як я зламав роботу, я придумав "
Ще одна річ, яку я б рекомендував спеціально для проблем, з якими ви стикаєтесь зараз (тобто великі, складні завдання, що стоять попереду). Замість того, щоб робити речі послідовно, робіть їх паралельно. Розбийте свій день на шматки, де ви займаєтесь дослідженнями, а потім зупиніться, переключіть передачі та код на деякий час, принаймні на частини проекту, які не є абсолютно невідомими. Таким чином, перебування поруч з кодом дасть вам кращу перспективу, і ви не будете вигоряти, намагаючись засвоїти занадто багато інформації занадто швидко. Принаймні, мені після кількох годин досліджень добре дозволити мозку перетравлювати речі, переключати завдання і робити щось інше на деякий час. Тоді поверніться до додаткових досліджень.