I believe humans learn by thinking through the problem, making implementations, and iterate on them. Maybe some smart guys can implement once and get a perfect result —- for example Dave Cutler famously said that he always ran the code in his head a few times before he actually ran the code on the machine.
However, for the majority of us, the common people, thinking through a problem usually doesn’t work like that. I wrote a shadow casting algorithm a few years ago and that took me half of a night to get it right. I did think through before every implementation, but each “thinking through” actually left some gaps which were only discovered by actually writing and running the code.
Now that I admit that I’m not smart enough and do not have a very big short term memory pool as some of the top guys. I have to write, run and debug the code even after thinking through the problem, and I believe that’s true for most of us out there.
And that’s why I think what OP said makes sense —- especially for juniors —- you can’t expect juniors just sit there, think through the problem, write down some pseudo code and call it a day.