Ola Sendecka organized the Warsaw djangocon in 2013 and started the djangogirls organization. She told us a story in which she paraphrased “Alice in Wonderland” as “Alice in Djangoland” :-) Complete with code examples. Fun.
Alice’s sister asked her to have tea with her. “Fine, I’ll be there in 10 minutes”. And she starts adding a small feature. But ran into a small problem. Oh, I’ll fix that with a small change to the object manager. “Are you coming for tea now?”. Yeah, almost done. I just need to fix this small bug in the new code. So she had to make a small modification to override something in the form layer. Oh. Traceback. “The tea is getting cold”. I’ll just override something in a the form field. And some extra customization there.
In the end, the code was horrible. And Alice’s sister was angry. What happened?
Good question! The problem: Alice was in a rabbit hole. She got so caught up in what she was doing that she just kept doing that for hours on end without really getting anywhere. You fall into a rabbit hole with a specific idea and keep trying different things to get the idea to work. You keep getting distracted by new problems and new ideas and new ways to try to get it going.
You’re so confused and frustrated that you don’t see the obvious things anymore.
What’s behind it?
One of the things is the Zeigarnik effect, which means you remember unfinished tasks much better than solved ones.
The second is the “sunk costs fallacy”. The more you invest in something, the harder it is to abandon it. Because, well, you already invested so much time and effort, right? You keep going and the costs you sunk into the project just keep piling up, making the fallacy even more potent.
You keep investing more and more into something you know won’t work. You’re in a rabbit hole.
How did Alice end up in the rabbit hole in this story?
She underestimated the problem.
She only fixed symptoms. Only solving the currently surfacing problem and not looking further.
She continued even after a number of failures. She should have realized that something was wrong much earlier.
She kept being convinced that she was super close to a solution.
She could not give up. And she couldn’t bring herself to ask anyone for help.
How can you fight a rabbit hole? Basically, you need to realize it. Some symptoms she noticed with herself:
Time flies. “Almost done” for 4 straight hours.
You forget to eat and drink.
You cannot think of anything else anymore except the problem.
You haven’t spoken with anyone for some time.
You feel cranky when someone interrupts you.
Here are some tips for getting out of a rabbit hole:
Estimate the time the next effort is going to take and set a timer… Agree to have a break when the timer goes off.
Make a TODO list.
Rubber duck. Just talk to a rubber duck. Literally. A colleague is also fine. See http://en.wikipedia.org/wiki/Rubber_duck_debugging
Still not working? Take a longer break.
Ask for help. As soon as you’re stuck, grab a colleague or a friend or someone on the internet. Sometimes explaining things to someone who’s not a programmer helps, too.
Ola is an experienced programmer. Conference organizer. Djangogirls co-founder. But she still finds herself in a rabbit hole from time to time. Those times in a rabbit hole make her feel bad and doubt her programming ability. So she’s very interested in extra tips to prevent it!
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):