The Rubber Duck Experience
I mentioned in my post about the Ypsilanti Software Development Meetup Group that my friend Fritz had suggested that we have a rubber ducky for a logo. My first thought was that it was a Ypsi tie in with the Heritage Festival that has a rubber duck race every year, but when I talked to Fritz over beers this weekend, he asked if I knew what the reference was. I mentioned the Ypsi thing, but he said that it was from a story about a programmer who would carry around a rubber duck and explain his code to the duck which helped in the debugging process.
The previous week we had been discussing asynchronous programming in JavaScript and C#, and I had mentioned how I was struggling with figuring out how to use async and await with an MVC controller that calls a service class and then a database repository. The following day he asked me for clarification on what my issue was, and as I was documenting it to respond to him, I was able to figure out how to use the await in the service class. Fritz and I work in different environments with some overlap, but just the process of talking through issues can really help in gaining understanding.
I really like the rubber duck analogy, and it reminds me of the Feynman approach where to really master a subject, you learn by teaching it. When you try to teach something to a novice, you have to understand the topic on a much deeper level than if you are just trying to understand it for yourself. One of the reasons I write blog posts and Wiki articles is so I can reinforce the things I have learned. They are also great references for things that I forget since they are written in my own words. I guess now I am going to have to get a rubber duck for my desk.
Here is the wiki article on Rubber Duck Debugging. https://en.wikipedia.org/wiki/Rubber_duck_debugging
Do you have any tricks that help you learn new things or retain information better? Let me know in the comments.
Comments
Post a Comment