|Talk It Out
||[Aug. 3rd, 2010|12:24 am]
It's weird to me just how much better my brain works when I have engaged the language centers by speaking out loud about a problem -- even to nobody at all -- than it is just thinking silently about it.|
At the end of the work day today, I was stuck on how to write some code, so I started talking it over on the drive home, and sure enough, very quickly I realized that the input and output portions were almost, but not quite parallel in structure, and that a simple transform to reflect that change was all I needed to solve my problem.
What's weird is that my thinking doesn't feel any different whether or not I'm speaking aloud, but I clearly arrive at solutions faster when I do.
I find a lot of times when I think I'm thinking about a problem, my thoughts are mostly going around in circles. Talking it out might give a little bit more solid of a thread to follow.
For me, I actually do need other people to be able to articulate my thoughts clearly
. For some reason, my brain only kicks into gear when working with others. I actually feel like I need to spend some time figuring out how to study by myself - I have a number of things on my plate at work that need an hour or two of individual study, and I keep on putting them off because I don't like working by myself. Hrm.
Dude, this is why therapy works! I mean, we all think about our issues, but to actually speak them out loud engages something that creates new ways of working with them. Sometimes, when I'm stuck in suck mode, I'll ask a friend to just listen to me talk about whatever it is that's bothering me, and in doing this, I can usually have a realization I wouldn't have just by obsessing over it.
Which is what you said. But I just wanted to reinforce the right.
Is coding an experience of tetris for you, fitting blocks into place?
On small scales (dozens of lines of code), I think this metaphor fits my experience. Language helps to delineate, making ill-fit blocks more obvious.
On larger scales, though, my experience is proprioceptive. It's more about sense of balance and momentum, like a giant mobile artwork, with pieces spinning and counterweighting other pieces. The movement inherent to the sensation helps to incorporate the element of time (delays, triggers, schedules). I've wondered if jumping on a trampoline would help improve thinking on this scale, but I've never had one handy during a coding crisis.
Edited at 2010-08-03 02:54 pm (UTC)
For me, when I describe something as to a listener, it takes it to a new level of understanding (why teaching something is the best way to be sure I understand it). Also, it takes me out of the middle of the problem and lets me step back and consider it more objectively. So whether I have a real or imagined audience, talking out the issues forces me to articulate assumptions that might have been more or less unconscious, put the problem in context, and look at the situation through its various components and from a variety of vantage points "well, the author seems to think x and the business reality is y." This is almost always what I'm missing when I'm trying to solve a problem from the middle. It's like how I describe editing: it's a process of making conscious the unconscious rules of language acquisition. Once you can consciously say "i before e except after c," or "serial comma YES!!" you can apply it. Until then, it just persistently looks ... not right.
This is a special case of something I rediscover often, most strikingly when recovering from brain damage: structures matter. Talking out loud isn't the same as thinking, neither is the same as writing, and writing a diary entry isn't the same as writing an LJ post isn't the same as writing a letter isn't the same as writing a poem isn't the same as writing a story. Etc, etc, etc.
Most of the time I do this particular exercise by talking it out with another developer. This usually results in me realizing I was being stupid about the whole matter, mildly embarassing myself and then going to write the correct code.
And I'll suffer the embarassment for the correct code. :-)