Some groping precedes each breakthrough. Programmers who pair together support each other when the way forward is anything but obvious.
One admits, I have no idea why that's happening.
Another confirms, Me neither.
A sense of relief washes over the team as they find new energy to continue problem solving.
Programming involves long sequences of small discoveries.
Aside: A quirk of the Smalltalk-80 system was that it could lose a morning's work. Damn. How frustrating. But I was always surprised how quickly the work could be redone with the discoveries still fresh in my mind. This confirmed to me that most time programming is spent in the uncomfortable state of not knowing what is going on.
Unknowing isn't fun.
Prolonged unknowing fills one with doubt.
The computer responds to input so quickly, but it says, no, that doesn't work either.
We were once advised, don't start programming until all these questions have been worked out. That didn't work.
Aside: Smalltalk-80 was the first truly excellent visually interactive work environments. Two people could program together because they could both clearly see what was happening. Within Smalltalk we developed the practice of pair-programming.
We now suggest developers jump into programming just to learn what they do and don't know. But do so together and support each other through the struggle before each breakthrough moment.