Most programmers try to maximize their productivity to meet deadlines and unrealistic expectations, at least in their own mind. But often they will end nerves, tired and really anxious instead of productive and better programmers. They'll invest more time and energy to get less results and finally they will lose control over the project, the workflow and themselves.
It's really important to follow rules when you work with computer and jobs which requires thinking. Losing yourself is step in wrong directions which has to prevented rather than cure.
This article is motivate from this interview with Dibakar Saha: Programmers Hall of Same Dibakar Saha and his words about how programming affect his life:
The biggest negative impact it made was that it turned into an addiction. I code for like 9-10 hrs straight without even thinking about food or even bathroom. This affects my sleep.
How to know if we overwork
It's not an easy task to understand if you work to much and where to put the limit. We can spend hours doing something without any results just to find that we spent weeks and months for nothing.
So how to understand if we work too much:
- look yourself to the mirror - if you have unnatural, tired or sleepy look
- red eyes
- swelling around eyes
- being anxious and nervous
- doing stupid mistakes
- working on autopilot instead of consciousness
- losing time - when you don't know is it a day or night, is it a Monday or Friday
- when you forgot who you are and why do you work
- when you don't like sun light
- you do something for days which usually takes 1 hour
What to do if we overwork
The first think is to stop and leave the office, the computer and all thoughts relate to work. Go outside and enjoy the sun. Sleep enough and do some social contacts - real one with real humans in the real world.
Tips to prevent endless work hours:
- do a work schedule - follow it really strictly and don't change it because of someone
- do breaks on every hour work - 5 to 15 minutes. You can continue to work with your head during this time. The good programmer is important because of his brain and not because his fingers!
- if you can work off computer - you don't need to spent all your life in front of a monitor. Many problems can be solved on a paper or a white board
- have ergonomic desk, chair and monitor
- have a place for relax and stretching
- small walk during the workday will improve your efficiency
- don't work late in the night - you will be less productive, you could do many silly mistakes and you will lose the next day
- breath fresh air and watch sun light
- practice a sport - really important point. Sport is part of your work if the work is related to your brain!
- Use compilation time, render time, loading and downloading wait for a break. Don't go to youtube, facebook and other time eating sites.
- do small exercises for your eyes - watch to distant object, close them for several minutes, wash them with water.
- avoid noisy working rooms
Optimal working day
For example I'm trying to follow the Circadian rhythm :
- 10:00 - highest alertness
- 14:30 - Best coordination
So my optimal working day is usually:
- 8 to 9 prepare for work
- check my TO DO list from previous day, prepare environment, drink a cup of coffee or tea, staring through the window
- 9 - 11 real focused work
- only pure thinking work, no distractions, no mails
- one break at 10 o'clock for apple or a cup of water
- 11 - 12 low priority work
- quick check of mails
- break for stretching and exercises
- 12 - 13 lunch time - word work is forbidden. I really don't like people who speak about work during any break..
- 13 - 14 prepare for work
- 14 - 15:30 real highly concentrated work
- 15:30 - 16 prepare next day TO DO list and my lab diary
- 16 - 17 - time for sport - bicycle, swimming, running, fitness
I count stretching and sport as part of my working time. They improve and boost my creativity and solving abilities.
Hope that this will help you to stop overwork as a programmer. Please do share your thoughts and experience on this topic.
Thanks in advance.
Note: sample stretching program for programmers: