Earlier quoted context omitted.
This leads to analysis paralysis. Building things helps you think clearer.
I’ve learned at Amazon that writing about what you want to build, and why, and why not do something else - in a way that others can clearly comprehend, and before ever touching a line of code - helps you think even more clearly.
There is a time for reflection and planning/thinking about a given software problem, but you're mostly wasting time doing so in-depth before you've done/looked through a rudimentary implementation.
Your planned architecture will be worse then the one from the person that interated several times while introspecting the resulting code, discovering misconceptions on the way.
Do note that this initial implementation is only there to learn the domain of the software, basically.
The phase can be skipped if you're not really changing anything and mostly just reimplement something you've done before. At that point, you're not doing something new however.