As developers, we often pride ourselves on our work.
I know I do.
Specifically, I value completing my work in good form and on time.
When I first began learning how to build software, I hit plenty of road blocks. I did not know how to plug in to the OpenSource or broader programming community. Frequently I found myself banging my head against problems I did not understand.
I succeeded by brute-forcing my way through them, and I took this habit with me into the workplace.
However, I slowly noticed that I was working the same or more hours than many people around me with no noticeable productivity gains.
How could this be?
I began to see a pattern.
When I encountered a new problem towards the end of the day, I attempted to brute-force my way through it. I worked late and attacked it from every possible angle. I could go home feeling “good” about myself for having resolved it.
One day I realized that there was a significant difference between how I solved problems at the beginning versus the end of my day.
In the morning I was fresh and could effectively think through solutions to new problems. Quickly pinpointing the issue and pushing out a fix was a breeze.
In the evening, my brain was exhausted, and I spent the majority of my time spinning my wheels.
I stopped debugging after 4:30PM, and my rate of productivity has increased dramatically (solved problems/hours worked).
Now instead of banging my head against a problem for an hour or more in the evening, I simply wait until the next morning when it will take me just 10-20 minutes to find a solution.
If I am under time pressure for a solution and do not have the luxury of waiting until the morning, I simply stop doing difficult creative work at 4:30PM and, around 7PM or 8PM after my brain has had a break, I give it another try.
Although not as good as waiting for the morning, I find that this strategy works well in a pinch.
So, unless you absolutely have to, stop debugging after 4:30! “Work smarter, not harder” is a cliche for a reason.