Productivity is a matter of major concern for people in all walks of life but I would like to talk a little about productivity for software developers. Writing code for any software project is not an easy task. Productivity tends to differ by the day, even by the time period inside a single day of work. In this post I would like to gather some things that have proved helpful to me in order to increase productivity in case anyone else might be looking for ways to do so.
For programmers the point of utmost productivity is often described as “The Zone”. The point where you basically just create automatically without much thinking. Different people describe it with different words. I would say that “The Zone” is when the code is perfectly clear in your mind and is just writing itself on the screen. So here we go, my tips on how to achieve that.
I can’t stress this enough. No really I can’t. Many people, myself in the past included, seem to believe that staying up awake, squeezing yourself for these last few lines of code will help, that it will finish the project faster. The reality of it is that depriving yourself of sleep, even if it is one less hour of sleep every day, you are also depriving yourself of clarity of mind. That brings a lot of other trouble work aside, such as loss of energy to go about your daily life. As far as programming is concerned it introduces bugs. No matter how sure you might be of adding that function or of altering that class the fact of the matter is that there is a big chance of introducing bugs due to not being careful enough.
Not to mention that this is a vicious cycle. Mess up you sleeping schedule one night and it will probably haunt you and your code for days if not weeks. I have not managed to go into “the Zone” when I was sleepy and needed to work. There is a reason for that. It is a mode of utter concentration. Who can concentrate when his body is crying for sleep?
When you work, you work. That’s it. Isolation from everything. Chatty co-workers, facebook/twitter, mom/dad, generally anyone that might be around should be ignored totally when working. You can’t concentrate on anything if every 5 minutes someone comes by attempting to start a conversation online or in the real world. Don’t get me wrong, I don’t urge people to be anti-social but there is time for socializing and time for working. Choose your time appropriately but once that has been done stick to it. If people attempt to bother you, politely reject any invitations and keep on working. Put up a sign to deter people from bothering you if need be.
People often overlook the effect that motivation has on productivity. If you are passionate about the project you are working on, and have enough motivation to keep working on it, you will be productive. It’s that simple. So if the project is your idea, a start-up perhaps, then the odds are with you. If on the other hand this is a project in your workplace that you have assigned to a team of programmers then providing them motivation is a key to success. Possible motivation for coding at a workplace would be to actually evolve one’s skills through their work even if they are not that excited about the project in itself.
I know that programmers, computer guys and geeks in general are infamous for their lack of exercise but the fact of the matter is that it is needed. As the ancient Greeks used to say “Healthy mind in a healthy body“. Exercising will keep you fit and healthy and can take your mind off your work. This is needed and it is needed on a daily basis. How many times have you pondered over a really tricky piece of code in vain only to go away from the code, clear your head for a while and then come back and see the mistake clear as day? Stepping back from the computer and the code is a necessary thing that you have to do as a programmer every so often and what better way to do that, than going to exercise? Exercise will keep you healthy, satisfied with yourself and also produce endorphins often associated with general feeling of happiness. Happy programmer often results into good code.
- Comfortable workspace
A programmer’s workspace should be comfortable. Being comfortable will promote productivity and keep all distractions from the task at hand to a minimum. A workspace consists of many objects that can affect comfort. These are the desk, the distance of the keyboard/mouse from you and the chair. Also good ventilation of the space one works can boost performance. In my opinion the most important from the above is the chair. A good chair does a world of difference.
Workspace setup does not only affect comfort and productivity but also your very health. Improper/long-hour usage of the mouse and keyboard can lead to Repetitive Strain Inury (RSI). Also not sitting properly in the chair either consciously or just because it’s a bad chair, can lead to serious back injury in the long run. Here are some nice tips on how to set up a proper computer workspace.
This is a personal favorite. Not everyone would agree but for me listening to music with headphones helps to shut the world off and concentrate. Music soothes and helps to focus. Listening to the right kind of music while working can give a very big boost and often contributes to going into “The Zone”. Actually for me different kind of music suits working on a different time of day. Refer to the (extremely) rough graph below. In it is my personal estimation for productivity during a typical day. 8 does not need to represent 8 in the morning, just the hour you wake up and 24 the hour you fall asleep.
What I want to show with this is that rhythm can help with one’s work. One would normally listen to nice melodic music (depending on one’s tastes) to provide good rhythm for the work during the day and to help shut off any disturbing noises. On the other hand when the hour to sleep is approaching and fatigue starts to get to you that’s when energetic music should come in to provide that so much needed boost. I myself tend to be more productive during the last hours before sleep as can be seen in the graph, since this is when I have the least amount of disturbances but that would differ per person I suppose.
So that was it. These are the factors that I believe mostly affect productivity for a programmer. If anyone has some additional suggestions please mention them in the comments below. I would be really interested to hear the opinions of fellow coders.