No estoy seguro de que pensar en un problema antes de tiempo versus un enfoque iterativo sea contradictorio entre sí. Al igual que muchas otras cosas, creo que debe esforzarse por lograr el equilibrio entre los dos. ¿Cómo encuentras el equilibrio? Eso es algo que aprende con la experiencia y, a menudo, las mejores lecciones de tiempo (es decir, cosas que le dan experiencia) es cuando no lo hace bien (o incluso una mejor lección: simplemente hágalo mal). Como ya señaló, hay un dicho "liberar rápido, liberar a menudo". Hay otra similar, "falla temprano, falla rápido, falla a menudo"
Pensar en el futuro es genial y absolutamente debes hacerlo. Pero con experiencia, aprenda cuándo dejar de pensar y simplemente construir algo, incluso si no tiene todos los datos. Al construirlo, podrá obtener más información sobre el dominio del problema y, potencialmente, encontrar una solución mucho mejor. Por lo tanto, recomiendo no excluir una de la otra, pero hacer que la "mente pensante" sea parte de sus iteraciones y, con el tiempo, creo que encontrará la respuesta correcta a esta pregunta usted mismo.
Solo un pequeño ejemplo. El otro día estaba luchando con una decisión de diseño de software. En retrospectiva, era relativamente trivial, pero tenía dos alternativas y parecía que ambas funcionarían. Seguí dando vueltas a los pros / contras de cada uno y luego dando vueltas y reconsiderando mis decisiones. Mirando hacia atrás, es un poco vergonzoso cuánto tiempo pasé pensando. Entonces me dije a mí mismo, f # @ k! Y en lugar de usar cualquiera de los diseños, simplemente seguí adelante y pirateé un código juntos, ignorando completamente todas las cosas buenas que aprendiste sobre un buen diseño. Obtuve la función trabajando en unos 45 minutos. Luego volví, miré mi código y lo refactoricé en algo sólido y algo que no me avergonzaría de comprobar en el control de la fuente. La parte divertida es que después de que el truco funcionó, surgió "
Otra cosa que recomendaría específicamente para los problemas que enfrenta ahora (es decir, una tarea grande y compleja que se avecina). En lugar de hacer las cosas en serie, hazlas en paralelo. Divide tu día en pedazos donde investigas y luego detente, cambia de marcha y codifica por un tiempo, al menos en partes del proyecto que no son incógnitas completas. De esta manera, permanecer cerca del código le dará una mejor perspectiva y no se agotará al intentar absorber demasiada información demasiado rápido. Al menos para mí, después de algunas horas de investigación, es bueno dejar que el cerebro digiera cosas, cambie de tareas y haga algo más por un tiempo. Luego regrese a más investigación.