While rubber ducking usually is a great idea, I recently had a pretty odd experience with the concept. The company in question was a really tiny one, with a high rotation of developers - at one time the flock of developers were reduced to just one waiting for more to be hired to replace the old worn-out programmers
Now, it was mandated from above that the development team must use scrum, since apparently that solved everything. Even though this scrum team only had one guy on it. The lone developer protested loudly saying, I can’t stand in front of the whiteboard talking to myself.
So they got him a rubber duck. A really big rubber duck. An actual rubber duck which was introduced to him by the manager saying
"Now you can hold your daily meetings, meet Dennis, your new scrum partner".
In the process of asking a question on ServerFault or other online communities, I have often come upon the answer to my question. That’s a large part of the reason why I started blogging. As I would troubleshoot issues in the real world, I found that writing out my experience would cause me to see the issue in a simpler way and I’d almost always find the solution. By that point, I would have 90% of a blog post written anyway, so I might as well publish it to the benefit of others.
If my post or forum question didn’t net an answer, well, it usually refined my thought process and made it a valid contribution to the nets at large. Someone, somewhere will then have a much easier time answering it or perhaps learning from what troubleshooting steps I’ve already taken.
The only catch is that when you figure out the answer for your question while writing it, you throw the question away. So the community becomes bereft of your self-found answer which might be helpful to people who cannot come up with that obvious answer themselves.
Interesting that at the end of the article you linked to your “Who’s Your Coding Buddy?” article from 2009; the last comment (by Jim Howard) on that post mentions something akin to the Rubber Duck principle.
Reminds me of some sage advice I got… the first and most important step in problem solving is to understand the problem you are trying to solve. The rest just kind of slides into place more often than not.
I’ve had many instances of this starting from a memorable ‘water cooler’ moment something like 30 years ago. I’ve thought about it a little bit and I put it down to something with left-brain/right-brain. The act of verbalising moves the problem from one to the other and puts the necessary different perspective on it.
This seems to kind of mirror my own internal problem-solving technique. I too have only actually asked a couple of questions because almost every problem I’ve run into, I’ve solved myself well before I did enough research and searching to write a quality question that hasn’t already been asked a dozen times.
I might even say that Stack Overflow’s gotten big enough that it’s tough to participate - you almost have to get into kind of obscure stuff to have a question that’s meaningful and hasn’t already been asked and answered, and you usually have to be a pretty top-level programmer to answer the questions that do pop up quickly enough. Not that I’m really compaining - it’s more valuable as a well-indexed and searchable store of knowledge than as question-and-answer resource.
We used to use this technique at my last job a lot. Only we called it the dumb rock routine. Usually we’d walk another developer through the problem we’re having and end up finding the answer ourselves half the time. In this case the other developer is the “dumb rock”. But we could have just as easily substituted a rubber duck.
Or… nowadays I tend to talk to myself a lot. That works too.
Yeah, that’s happened to me before, although Do think that the fact that I’m actually typing the question into StackOverflow with the intent to actually ask the question, helps motivate me to go through that exercise.
One of my old bosses used to do this to me. He would come into my office, get half way through his question, snap his fingers, turn on his heel and go back to his office. He did this a couple times in close succession, and came back to me and said, “You know. I should just get a rock. Before I come to you with a question, I should just ask the rock first.”
When I left that job, I got him a rock as a present.
Does StackOverflow track the statistics of abandoned questions? I would love to see how many questions are abandoned after a valiant effort (e.g. >10 minutes before of writing, >100 words written). I’ve definitely had this happen to me.
I worked one place where they had yellow plastic “men” which were put out when the floor had been mopped. We used to say to people - go ask the yellow man. I didn’t realise that technique had a proper name. (If it’s on wikipedia it must be proper, right?)
It doesn’t always work, sometimes it just manages to waste a lot of time of everyone involved rather than the other way around. I had this very same problem with StackOverflow. I had a very complicated problem and yet the question could be stated in 2 sentences + an example method signature. As it turns out, what I wanted was not possible, but instead of getting that answer I -and of course the 3 or 4 people trying to help me- were dragged into discussing the very complicated part because of this rubber ducky philosophy.
Any interaction on SO is so painful for me these days that it has become an absolute last resort, which in turn means I spend as little time there as humanly possible which in turn means I stopped answering anybody else’s questions. Clearly, the site is doing fine and doesn’t need me in the slightest, but it cannot be denied that my own experience has shifted dramatically from “this is the greatest programmer forum ever!” to “don’t subject yourself to SO unless you have no other option.”
I use a similar method to make sure I truly understand something. I create a 5 minute presentation on the subject intended for a public audience. If you can’t explain it in 5 minutes you don’t really understand it. Similar to the business concept elevator pitch