Programmers often discover solutions while explaining a problem to someone else, even to people with no programming knowledge. Describing the code, and comparing to what it actually does, exposes inconsistencies. Explaining a subject also forces the programmer to look at it from new perspectives and can provide a deeper understanding.



I don’t see the extreme difference you seem to make it out to be. There are plenty of instances in my industry where something should work but needs to be adjusted to work correctly.
I still see it as brainstorming. But if coders need their own thing, cool.