Rabbit Holes: Getting Unstuck

I spent two hours last night figuring out why a plugin for the treasure hunt app kept timing out. It worked in the emulator, on the web, but not on my phone! I scoured stack overflow, forums, documentation, trying numerous variations. I finally packed away my laptop in frustration and tried to get some sleep.

Today, I had to face the question, should I head down that rabbit hole again and dig even deeper? That’s what I, as a software developer, am destined to do: digging deeper to solve these difficult problems.

Pair programming with imaginary friends

In the past, this is when pair programming has helped me the most. I would be head down deep in a rabbit hole and someone on my team would join me.

P: “Where you at?”
Me: “I have been trying to solve this now for THREE hours. Well you see this variable here, I cannot figure out why it is not getting a new value from our web service. Our codebase is so fragile! We should be doing this, that and the other. But there aren’t enough tests and [blah blah blah]. If only we had [shiny new framework] I would not have this problem!”
P: “What problem are you trying to solve?”
Me:”Ok […heading out the rabbit hole…]. I am developing this [ new feature description ]. When the user clicks on the button, this method is called and then this method will …. hmmm… OH that’s where the problem is! I have not done [stupid mistake here]!”.

Ever had this happen to you? Even though I did not have a pair programming partner join me, I talked it through with my imaginary friend (try a rubber duck, if that feels too weird 🙂 ).

Solving the wrong problem

rabbitwarrenIn my case, it turns out, I was actually solving the WRONG problem and did not need that plugin in the first place. Last night, I was so deep in the rabbit hole and kept on digging deeper and deeper. I am glad I forced myself to take a break (mainly due to lack of sleep!) and backtrack out the rabbit hole again.

So, what problem are you trying to solve today*?

* Hat tip to Kevin Trethewey, who would always ask me: “What problem are we trying to solve?”. I have found that it’s one of the most powerful questions we can ask ourselves.