It really started with xkcd.
Mike and I were on a (really) large project together, which was always on fire. Being that it was on fire all the time, there were daily calls with the customer that a significant portion of the project had to be on. Mike and I were on those calls, often contributing, but often just listening to whatever today’s chaos was, trying to figure out how it impacted our day.
During those calls, Mike and I both, independently, found ourselves browsing xkcd. We both stumbled upon an unexpected truth — if you click the xkcd random button enough, fairly soon you will find a comic that is somehow relevant to whatever fire is going on now. This became the Law of xkcd: There is always a relevant xkcd.
For example, there was the time we had data integrity issues:
This one also came up when we had input validation issues.
This comic came up multiple times — because it wasn’t xkcd being somehow magically related to the current situation, it was our brains were interpreting the comics in light of the current situation. In doing so, we found lessons that were instantly powerful, intrinsically easy to share, and (of course) instantly easy to relate.
Importantly, despite looking at web comics while on a conference call, our brains were working the problem. To find relations across disparate media is to practice integrative thinking, which can lead to some really good solutions. Typically, fires are caused by traditional solutions failing. Finding solutions different ways was critical to addressing those fires and moving the product forward.
I like to think that xkcd helped in some of the solutions we discovered along the way — and we did discover solutions. By the time Mike and I left the project, the fires had died down significantly, and quality of the delivered product had gone up in every measurable aspect.
So what’s this got to do with ducks?
Some of the developers at my current project heard about Rubber Duck Debugging. Jokingly, one Friday, they told the project manager that they needed some ducks. The PM (being the awesome PM he is) replied “They’ll be here on Monday.”
When I got home that evening I discussed the whole “Duck Thing” with my wife, since it was honestly the high point of the day. Her reply was perfectly rational- “Does the duck talk back?”
Of course the duck can’t talk back — but what if it could? What has duckie learned over all these years of debugging?
Can relevant development advice / practices be boiled down into a one-line responses from a rubber duckie?
Can rubber duck debugging find a larger audience by introducing a virtual duck?
What if the discoveries I made with my rubber duckie were easy to share with others?
Most importantly: Can this application be live before the ducks show up to work on Monday?
So I called Mike.
At 9pm on a Friday night.
Within 30 minutes we had the initial design done. By leveraging a framework we had been working on to help us spin up applications quickly, we had a web service and database up and running by Saturday afternoon.
Initial data was 42 useful-to-us quotes Mike and I had come across during our tenures on earth, sourced or derived from places like xkcd, Akin’s laws of spacecraft design, Walt Disney, Colin Chapman, our own writings and musings, and even something my dad said. Since then a couple more have been added, and feel free to suggest your own via comments below.
Sunday morning we tweaked the UI some, and deployed it.
Duckie was up and working ahead of schedule. I made a couple simple posts to get the word out — one on LinkedIn, one on reddit — and went about enjoying the holiday with my family.
72 hours since deployment, and duckie has been shared all over the world. Interestingly, pages per session has been pretty consistent at about seven pages. Seven clicks of the duck before finding a relevant quote and leaving the page exactly on par with the xkcd experience Mike and I had during those conference calls.
There’s already great ideas for extending duckie in the near future with some simple features. The highest on the list at the moment is adding an “explain” wiki, which would give more context to something duckie says if the reader wants to know more.
It’s a tiny, simple app. There’s really nothing special about it at all. But maybe, just maybe, duckie will help some problem solvers think about things differently, and find a better way to to solve an issue.
What else should duckie say? Let me know.