At my first programming job, I had an agreement with the head of IT (and SQL server DBA) that we'd act as the same sort of problem-solving sounding board as the duck in this story. It worked well, even though he understood little of what I was doing, and I only understood the basics of what he talked about. Just verbalising a problem is a very good way of thinking around it in a different way than you had before.<p>These days I'm freelance and am usually working on my own, so I tend to start e-mails explaining the problem to mailing lists, then realise what I'm doing wrong and ditch the e-mail before it's sent.