Flow zone(aka Zone) is that state of mind in which a programmer is highly focused on solving a particular problem. His brain is fully concentrated on solving the problem and he is disconnected from the rest of the world. When he gets out of the zone, he gets the feeling of getting things done. He also gets an immense feeling of being hyper-productive and wants to get into the flow zone more often.
Being concentrated to solve a problem is the most important thing that programmers should do. But what is wrong with it? According to Uncle Bob, the flow zone is a trap. It is a trap that can diminish the big picture of the problem you are trying to solve. Let me make that simple for you.
Do you remember the last hobby project you started and you stopped working on it after a few days, weeks, or months? Your hobby project was a cool idea to build a trading website but you spent hours choosing a good font for your website instead of writing an algorithm. You checked one font, the recommendation system suggested similar other, you kept on trying one and another. You entered the zone and got lost there. After an hour you realized no real work is done. Maybe at the end, you chose one descent font but the zone made you lost and you did not realize the actual problem you had to solve.
Another example of getting into the zone is that. You were asked to write a module of software and in the middle, you did not know how to handle one strange exception. You started surfing the internet and did not find anything, you started checking Github issues and didn’t find anything there either. You decided to create a new issue asking for help. You already entered into the zone and you didn’t even realize. You did not ask yourself if handling that exception was important for your use case.
Does that mean getting into the zone is no good at all? In fact, it depends, sometimes if you are in the zone for short period it can be good but for long period it is bad. It might give you a sense of being more productive but in most cases, the code written when you are in the zone will be needed to be re-evaluated and refactored later.
So how can we avoid the zone? To avoid it you must know you are in it. After reading this article, it will be easier for you to know you are getting into the flow zone. Try to avoid it after that.
You can read some tweets or surf Reddit or check my articles in dev.to once you start feeling you are getting into the zone. You can also try pair programming which does not let you enter the flow zone since two people communicating cannot get into the flow zone at the same time.
Let me know what you think about the flow zone.
The idea and reference of the above content are taken from Uncle Bob’s Clean Coder book.
Top comments (16)
I have to admit, I totally disagree with the premise here. Uncle Bob is not always right, and this is a prime example.
Flow zone (or flow state) is a highly desirable state of focus on a problem, and you can accomplish quite a bit in just a couple hours of uninterrupted flow.
Anyone of any level of experience can be guilty of "bikeshedding" or "ratholing" (deep diving into a problem that is largely unimportant). But that doesn't really have anything to do with flow state, in my experience.
If you've had negative outcomes getting into the zone and want to avoid it, I won't second guess your own personal experiences - but don't take Bob's word for it!
I agree with you.
cool. thanks, Elliot for sharing your opinion about the zone.
I disagree too. Admittedly the above can sometimes happen, but that doesn't mean you can't produce something great in these states... I certainly have, and often do some of my best work like this. Hours fly past and seem like nothing - totally focused on the task
I guess you should really try to get into flow zone, so that you won't end up with "flaw posts".
What Uncle Bob is trying to say is do not sink in details while solving your problem, kind of things.
Actually he was denouncing people who mis-use the flow-zone, and I think you also did it in your article.
A flow zone is a place where you are hyper-conscious about your problems, and can extend this consciousness as much as you can. The expected outcome is a condensed clean piece of work.
thanks for sharing your thoughts Medunes
I actually hate the zone. I can get into it, but I cannot choose what or when. And I know fully well that many people don't get one.
It's like I cannot fully control myself to do the most important thing, but rather, the seemingly most troublesome thing that might not even really matter...
There seems to be a focus on whether the flow state is beneficial or not. It would've been interesting to dive deeper into what your title is addressing: How to avoid it.
There are a lot of ways to stay on track with the project as a whole. Just to give one example, a lot of people advise using the Pomodoro technique to enter the flow state. However, what few people mention is that the Pomodoro technique is a bit of a double-edged sword, and that's a good thing!
You can use it to force yourself to take a break. Once you get back to work (or while you're still taking my break but can't stop thinking 😅), you look at the big picture of things again and see if you should continue whatever you were doing.
I don't exactly consider this "avoiding" the flow state, but rather managing it properly to avoid the pitfalls you mentioned. Definitely something worth exploring.
I think it's a pretty bad idea to forcibly distract yourself with social media just because you don't want to get into the flow state, especially if you're prone to getting a little too distracted. Simply getting up from your desk and giving yourself a breather might already be enough.
thanks for your idea Naseki
For me I find that I can allow myself to take small breaks for the course of the day and I have noticed how being distracted for 20 mins or so has helped me become more proactive, some people don't but to someone like me I'd rather have knowledge that this project will not become a burden and will not rule my energy. Also the time that I find myself going "off-topic" it also allows me to think about my problem from another perspective it allows me to sit back and, while im doing what im doing (outside of that problem) if something like a new solution that I hadn't thought about, will eventually come and that will give me an edge on how to solve it, differently.
Have to agree with some people in the comments. Being in the "zone" or whatever is not something of a 1, 2, 3 step towards it, it's something natural, it's just your brain effectively thinking straight without distractions for a period of time. You think about 80,000 different things per day, and out of those things you don't spend more than 2 minutes thinking straight about it, so whatever it is that you consider "flow state" I think the human being doesn't actually spend more than 30 seconds sometimes, it's a very minimal timeframe but I am sure it feels like glory because it makes you feel good.
This "Zone" thing is just BS. haha.
I always want to get into the zone, but I always cant,
the more I tried, the more I looking to random youtube, facebook, etc...
Therefore I didnt even think about it,
Just list down the task,
then do what necessary to get the each of the task done,
By this end up get more issue done.
Just do what I like cause I want to do
dont force myself into "something" or become "something"
cause this always create pressure and end up paralysis myself and get nothing done.
Haha.. just my 2 cents
haha thanks for sharing your opinion Ken
Definitely agreed! Proper task organisation goes a very long way. It also directly gives you the "big picture" of your project; a clear overview of everything that needs to be done.
i resonate with this. great piece of article
Thanks Aahnik
thanks Amelia