We as programmers are optimists–most of us, most of the time think we can code faster and better than we probably can in reality. Therefore, as we sit around the table indulging our inner Rock Star programmer, we think of grand structures and clever schemes that, because we haven’t yet put code to execution, we believe we can tackle in shorter timelines with greater quality than ever before.
I am pretty certain I drive the other programmer at my job batshit crazy when we’re trying to design software. We will talk through about maybe half of a design and then I will suggest we stop and start trying to code it. I think (but don’t know for sure) that he wants to think through every scenario and mentally execute and verify the design before he sits down in front of Eclipse and makes it happen. Whereas I want to start vetting the design with the computer once I’ve got a good clue as to how it might work out. I think this is my way of resisting the urge to think I’m the most clever person on earth by getting real.
Adam Keys, Unwritten code is the easiest to maintain (dead link)