Time management is possibly one of the most important and least recognized skill that programmers need to cultivate. Building complex software systems is probably one of the most challenging careers in our time. It's challenging because there are always way too many things vying for our attention; all at the same time. It's challenging because developers need to keep themselves updated with a huge amount of ever changing information. There are many other factors which also contribute to the difficulty of this profession. But still there are people who excel in it. Now you might say that those who excel have the aptitude or the intelligence. I'm sure they do, but the best software developers have one more skill in their tool chest. They know how to manage their time well. But not just software developers; pick any successful person and you are sure to notice exceptional skills at managing their time.
Most programmers already work very hard and even have the scars or ulcers to prove it. But hard work alone does not result in superior performance. Hard work has to be combined with smart work and smart work is not being lazy as many programming articles would like to tell you. Smart work is many things, and a very important aspect of it is time management.
Good time management does not have to be hard. A few simple habit changes can result in exceptional improvement in performance; not to mention improvement in confidence and in our own efficacy. This blog post is the first part of a three part series on Time management for Programmers. What I have described below are some simple tips that you can get started with as soon as tomorrow and reap their benefits.
Start Your Day Early
Some of the most successful people start their day early and have a strong morning routine. Many programmers on the other hand - yours truly included - are known to keep erratic time schedules. late bed times, late rising time, getting to work by noon, and all other types of blasphemous habits are not unheard of in our tribe. A friend once explained this as different people having different energy rhythms. Maybe there is some truth to it; there are people - the night owls among us - who work better at night, but most developers I know who have late bed times, do so either out of habit and not choice. For many it's just a vicious cycle; they sleep late because they start their day late. It has been shown that majority of people have far higher levels of energy and focus in the morning. So if you are not a night own and if you start work at noon, then you have already lost the most productive part of the day. I cannot recall where I read this, but a few years back I had read an article which showed that more bugs are created in code that is written in the latter part of the workday than in the former. This is because our brain energy and focus are lower at that time.
I once had a colleague who came to work at noon. By the time he finished answering emails, synching code, and gathering his thoughts it was almost time for lunch. His real day would start in the afternoon, post lunch, which is when our body and mind is naturally sluggish. He was pretty smart, but his performance did not refect it. If I were to guess I'd say that coming to work this late in the day played a large role in his (bad) performance.
I can't help but contract this with another colleague who was awarded best employee of the year. No doubt he was exceptionally gifted but he himself gives more credit to his work schedule and habits rather than intelligence or hard work. He was the first person to get to work and mind you the first person to leave as well. He did not work more than the rest of the team. But he got to work at 6:00 AM sharp. Everyday. "I finish the bulk of my days work by 10:00 in the morning, before everyone else comes in and the distraction of emails, instant messages and meetings start" he once told me. After that he spend the rest of his day answering questions, helping other team members, and in meetings.
If you think about this for a moment, he cut his commute by more than half by coming to work early, he got the bulk of his work done before the rest of the team came in and then he spend his time helping everyone else. No wonder he was awarded the best employee of the year. Did I mention that he was a self taught programmer while the rest of his team had all gone to grad school.
Another friend of mine who could not leave home that early because he had to drive his kids to school, started his work day at home. This way he was at least able to start work on the most important tasks early in the morning.
What if you can't reach work at such an early hour. Maybe you have to drive your kids to school or maybe you need to prepare meals in the morning. These are real concerns that many developers have, but for a moment let's put our debugging hats on. If you cannot get to work early, can you still start you days early by working the first couple hours from home? Do you commute by public transport? Then can you make use of that time to catch up on emails? Even though some of us may not be able to reach work early, we may still be able to work out a solution with some creative thinking.
Begin your day with the most difficult tasks:
Starting work early in the day is useful, but we can multiply its benefit manifold by selecting what we give our attention to, first thing in the morning. Like I said earlier, our focus and energy is at its strongest in the morning, making it the best time to tackle difficult tasks.
To be honest, this is not my wisdom. Some of the smartest people work this way and many of them attribute a large part of their success to the habit of tackling their most difficult tasks at the start of the day; they don't even check their mail until a few hours of morning work has been done.
As good as this habit is, it's extremely difficult to practice. Our brains have a natural aversion to doing something we don't like and many people don't like to tackle difficult things in the morning. They prefer their mornings to be peaceful and relaxed. If you are one of them, don't despair, you me and many others are in the same boat. But there's help. Research suggests that the pull we feel in our brains, which seems to tell us "no don't go there, check your email first" to prevent us from starting a hard task has its hold for only a few seconds. All you have to do is persist and say "sorry dude but I am going there and simple tasks like email can wait!" And if you resist the temptation of opening your mailbox and open the IDE instead then that voice will vanish like fixed bugs. Not to mention silencing that voice will actually help you fix difficult bugs in the morning, giving you the gift of peace for the rest of the day.
Another advantage of doing the most difficult tasks early in the morning is it lets you start the day on a note of confidence and reduce the stress that may have come if you left difficult tasks pending for the latter part of the day