Recently I started thinking about some things I could do to improve productivity when developing - most of them are pretty obvious but can be easily forgotten.
1. Eliminate Distractions
Software engineering is a discipline where train of thought and flow are really important and anything that breaks these affect productivity. When you sit down to complete a task try to eliminate as many distractions as possible - close your email client & twitter client, turn off all notifications relating to twitter, facebook, google + etc. and try to get into a flow for a block of time. I find the Pomodoro Technique is a good way to keep focused. The Pomodoro Technique is simply:
- Choose a task to be accomplished
- Set the Pomodoro timer to a certain length of time (for me it is 45 minutes)
- Work on the task until the Pomodoro rings
- Take a short break (5 minutes is OK)
- Every 4 Pomodoros take a longer break
2. No podcasts or talk radio
For a long time I used to listen to podcasts or talk radio shows - I was convinced that they were just playing in the background and not affecting how quickly I got tasks done. Over a period of time I started to become conscious of my behavior when listening to them and found that if when a podcast referred to a subject that interested me I would find myself on some webpage relating to the subject finding more information. Instead I have created playlists on Grooveshark and stations on last.fm and have replaced podcasts with music which helps to keep my mind on task.
3. Document Technical Solutions
As software developers we spend our days figuring out technical problems, when we implement the solution it feels so familiar that it feels unforgettable - this is usually not the case. On numerous occasions I have come across the same technical problem 6 months or a year after I encountered it the first time and while it is usually quicker to figure it out the second time around it still takes time so when you come across a technical problem you should document the steps you took to solve it. It might be a good idea to start a blog to help build your profile. If there are small snippets of code that you think you will reuse on a regular basis you can just use a site like www.snipt.net to keep them easily accessible.
Being productive at a particular task is only one part of overall productivity - ensuring you do the highest priority tasks is probably more important. Ensure you have a list of tasks that are sorted by priority so that when you get one task finished you know the next task you move onto is the next highest priority. There are always certain tasks you enjoy doing and others that you don’t - try to complete the tasks that you don’t enjoy first or at least don’t leave them til last.
5. Environment & Hardware
“A carpenter with a blunt saw” - I have felt this way a number of times over the last few years where I have found myself using hardware that was barely capable of running a web browser and development tools that were more of a hindrance than a help. The price of hardware has dropped significantly over the last few years and many of the best tools for development are now free so figure out what are the best tools to get your job done and try to make sure you have them. If you are more productive with 2 monitors (most people are) buy a second monitor or a third one if you find that better. Ensure your development machie has sufficient RAM and a decent processor. Ensure the development tools you are using are the right tools for the technology you are working with. And finally ensure you have a decent sized desk with a decent office chair.
These are just some tips that have helped me - any other tips?