Explaining Flow to non-geeks
So I ended up having a little tiff with my wonder wife Rosemarie this evening. I love her but I was a bit grumpy because I was trying to get some coding done. I don’t like working late, but sometimes needs must. I realised the main problem was that she just didn’t understand why the little distractions matter. To her I was being a princess, and a drama queen. I can understand how my slight peevishness came of really badly when you don’t have an understanding of Flow. Without understanding what Flow is it would be easy to think I was snapping at her.
So, honey, I love you and this is to try and explain.
Imagine reading a book. It should be a real page turner, something you are completely glued too. You know the characters, you feel their pain. Then right at the crux of the story, something interrupts you. It’s a little annoying, but it’s ok. You fluff your cushion, stretch your legs and start to read again.
But no! Something interrupts you again. That’s ok. I’m just going to ignore it. But it’s won’t be ignored. You read the same sentence you just read for the third time. Now frustration moves to annoyance.
This is flow, the concept is that you need a certain amount of time to be able to do an activity well. Sure you can read at the drop of a hat but it takes a minute or so to start understanding what you are reading. If you want that total immersion of a good book it takes a bit longer, but boy the feeling is better.
Programming is hard. It’s harder than reading. In fact programming is hard than most things I know because it’s basically continuous problem solving. So programming takes longer to get into than reading, even deep reading. Some studies have shown it can take 30 minutes to achieve Flow in programming. So for a programmer the experience of small distractions can be that much worse than a reader.
To put it visually imagine an easy task (such as reading) is like a pebble and a hard task (such as programming) is like a boulder. It’s easy to push the pebble down a hill it keeps rolling until something stops it. But it’s pretty easy to get started again, because hey it’s only a pebble. Programming is like a boulder you sit and lever the boulder with a stick for 20 minutes to get it moving much at all. The last thing you want is something that stops it part way down. Sure it’s a little easier to get it going again half way down the hill, but it sure would have been nice if it hadn’t stopped at all.
So while I shouldn’t have been a jerk, I hope this explains a little bit why I was and maybe next time I’m working a little late I’ll find some space where my crotchety programmer angst isn’t going to make you feel bad.