My interest in this was re-sparked after reading through the comments on https://news.ycombinator.com/item?id=11162927. When you code, do you hear an internal voice, see the program's structure in your mind's eye, translate directly from some internal abstract structure, or a mix? What about when doing other forms of problem solving, technical thinking, or writing?<p>I do a mix and have noticed different strategies work well for different types of work. For example, rubber duck debugging (using an internal voice) seems to allow me to slow down and think through all of the reasons something can be broken, whereas writing boilerplate code seems to be the least painless when I "turn off" the internal monologue.<p>I hope that gathering a variety of experience can not only show the spectrum of differences but allow people to experiment with different strategies.
Some background links:<p>- Talking to an imaginary friend as a way to increase understanding: <a href="http://the-programmers-stone.com/the-original-talks/day-1-thinking-about-thinking/" rel="nofollow">http://the-programmers-stone.com/the-original-talks/day-1-th...</a><p>- Rubber duck debugging: <a href="http://c2.com/cgi/wiki?RubberDucking" rel="nofollow">http://c2.com/cgi/wiki?RubberDucking</a><p>- Characteristics of an effective internal dialogue: <a href="http://journalpsyche.org/articles/0xc091.pdf" rel="nofollow">http://journalpsyche.org/articles/0xc091.pdf</a>
I see the final form, across x levels of inheritance and threads, and just mash c++ with some loud trance music + lots of coffee.<p>Debugging though, that takes very carefully selected quiet music, zen thoughts, and even more coffee.<p>:)