Like my past posts in this series, we’re going to talk about failures and I’ve had this problem at a number of places that I’ve been employed or contracted. I just can’t maintain flow. Developers all know what flow is, whether this is what you call it or not. You know that feeling when you’re “in the zone” or “on fire”. That’s flow. It’s a period of focused hyper-productivity. We enjoy it. I long to experience the adrenaline like rush that it provides to me. The things is, achieving flow is the exception, not the rule, for our daily lives. Here are some examples from my experiences.
At one place I worked I shared an office with another programmer. It was located part way down a quiet dead end hallway. Just a little farther down that hallway was an office belonging to a manager in the company. She had a fairly regular stream of people coming and going through the day. The office that I was in was a little bit weird in it’s layout. While there was a hallway right outside of it, the office also had doors connecting it to those on either side of it. For some reason my co-workers got in the habit of not using the hallway to walk to this manager’s office. Instead they would travel through my office and use the joining door. When the manager was busy people would linger in my office waiting for her to free up. Essentially my office became a waiting room for this manager’s visitors. As you can imagine it was quite disruptive. No amount of loud music in headphones could completely block the distractions of movement that occurred in my peripheral vision all day long.
In another working situation, I was managing a fairly large development team. As a result, I was required to be constantly moving about helping to solve problems, clear roadblocks and to communicate (read: meetings) with management above me. All of those tasks were part of the job. Over time my managers began to request my attention on shorter and shorter notice. This resulted in my day constantly being broken up by spur-of-the-moment meeting requests and drop in discussions. Regularly these would interrupt work that I had to get done. Instead of being able to focus on that work for any appreciable amount of time, I found my self constantly having to re-integrate the work task into the front of my conscious mind. As most of us know, this kind of context switching takes an enormous amount of effort and an appreciable amount of time. Tasks that would normally have required 30 contiguous minutes of effort were now taking two hours (when the smaller pieces were added together).
In both of those cases I was far less productive than I could have been. I responded differently in both situations as well. In the highly trafficked office I expended an enormous amount of effort trying to block out the distractions. When that wasn’t providing any results I attempted to break my co-worker’s habits by locking the connecting doors between the offices. The, of course, revolted against my attempts to change their habits and freedom of movement was quickly restored for them. In the end the only times I was able to regularly achieve a state of flow in that job was when I was working in the office after 7pm.
When I was fighting with the cost of context switching in the second example, I did for a short time attempt to counter act the problem by block booking “meetings” in my calendar. For a short while people respected those meeting blocks which gave me the desired results. Again the old habits and practices came back once people clued into what I was doing. Once that happened seeing a “meeting” entry in my calendar simply invoked the person to walk by my cubicle to see if I was there or not. If I was….well…you get the picture. Like the other example, the only times that I could make any progress were in non-traditional working hours. For the duration of that work engagement I never once successfully achieved flow.
So how is this a failure (since this is a series on failures)? I failed to be able to produce at the levels that my employers should have received from me. Yes, a significant portion of the blame can rest with my co-workers and bosses for not allowing or providing an environment where flow was possible. On the flip side, as a professional I should have requested that I be allowed to create those conditions. I’m not saying that I should have marched into management’s office and stated “I want to be left alone to work”. That just won’t fly. Any development role requires interaction with others. You can’t just squirrel away and expect to have full day after full day of flow capable time. It’s unrealistic. There are a couple of things I should have done though.
First I should have requested to have an office that minimized any unnecessary distractions. I should have made it clear that having my office be a hallway and/or waiting room was unacceptable considering the alternative (the hallway) that was available.
I should have made it clear to people that I had ‘office hours’ where I would be available and ‘productive hours’ where I would not. As long as the ratio of the two is well balanced (this will vary depending on your role and the requirements that the job places on you), I don’t see this as being a difficult request to fulfill.
Finally, I should have made it clear to all of my bosses that the environment was not allowing me to achieve what I was being asked to do. I should have explained to them, and quantified if requested, how much it was costing them by keeping me from achieving flow.
In any event both of those experiences are from a number of years ago. It wasn’t until last spring that I was lucky enough to hear Neal Ford mention the book Flow by Mihaly Csikszentmihalyi in one of his talks. I spent a week reading and really absorbing the information in the book and now understand that the state of flow doesn’t just happen. You can construct it and make it repeatable. Not allowing myself to do that at future jobs will be a failure completely born by me now.