I am my own worst enemy when it comes to achieving my deadline goals. These are tips and reminders I've found useful through work experience.
Most of the tips are general, but some are specifically suited to programmers/engineers in situations with long compile/simulation phases (compiling is the act of building an executable, simulation is the act of running it to completion).
General Office Productivity Tips:
Procrastination. It comes down to inertia and momentum.
- Understand the problem. It is very easy to avoid working on a problem you do not understand well enough to solve.
- Break it down. Break the larger problem into smaller problems that conceptually you understand and can tackle.
- Review milestones. They are closer than you might think, and it can be a good kick in the pants to think "I have to get this feature done by Thursday" instead of "I have to get this all done in three months".
- Prioritization. Do not starve a high priority feature for lack of understanding to feed a low priority feature you know like the back of your hand.
- Just do it. Attack the problem, no matter how feeble the attempt. Even if you throw out the work, it increases your understanding. It is better try fail than to waste time on something unrelated. Like writing a blog post or checking the InterWeb. LIKE YOU ARE DOING RIGHT NOW.
- Go for a walk. Can't focus? Get away from your desk and stimulate the blood flow to your brain. A change of scenery can unplug a mental block.
Interruptions. What is of concern isn't the time lost servicing the interrupt, it is the time spent context switching back to the original problem. Interrupting someone in flow can take 15 minutes for them to get back to the point they were at before the interruption occurred.
- Net connectivity. Close email, web browser and any messenger programs.
- Answering machine. Forward phone to voice mail.
- Office hours. If you are in a partial support role, set up "office hours" during the day where you will answer questions.
- Meetings. Reduce the number of weekly meetings wherever possible.
- Maximize use of time. Know what time of day you are most effective and schedule the interruptions/meetings to the time when you are not.
Environment. The key is to create a work environment that is free of distractions so that when you've achieved flow you can maintain your focus on the problem at hand.
- Noise. Noise cancellation headsets or headphones with music can cut down on the distracting nature of open concept cube farm hell. Be kind to your co-workers and never use a portable radio or your computer speakers unless you are working late alone. If you're going to have an extended discussion with someone move to a break room or an empty conference room.
- Temperature. Have a portable fan to cool down and a portable heater/sweaters to warm up if your cube doesn't have ideal temperature conditions.
- Snacks. Have food around so that hunger can be satisfied without leaving the building. Don't let your belly be a source of distraction. Nothing that will rot should be left out of sight. Some good low-fat choices: apples, cans of tuna, microwave popcorn, turkey sandwiches (if you have access to a fridge).
- Hydration. Have a bottle/cup of water on your desk that you can sip from throughout the day. The short term gains made from drinking coffee isn't worth the long term loses on memory, dehydration, and the productivity lose from caffeine crashes. Non-caffeinated herbal teas such as peppermint can be useful for weaning yourself from coffee.
- Clutter. I am not hypocritically recommending clean desks, but file away any papers that aren't germane to the problem at hand. When it comes time to search the mountain of looseleaf, at least you will be looking at stuff related to what you are working on.
Manage Expectations. The biggest secret to getting more work done is having less work to do.
- Give feedback. Do not tell management what they want to hear, tell them what you think will happen.
- Accurate Estimations. Develop your estimation skills so that when you say 'task X will take Y to do' they believe you.
- Under commit and over deliver. Realistic schedules give room to do a better job instead of fighting to keep your head above water.
Avoid Burnout. This is the most important tip. Meet the deadline in a sane manner. Ever waste half an hour because you were looking at the wrong results? Ever make a minor two-character typo that drastically changed results and was very insidious to find because it 'looked right''? If you were more alert that would not have happened.
- Relax. Find the balance between enough stress to motivate but not so much stress that you lose the ability to see the simplest solutions and recognize time sinks before you fall into them.
- Minimum overtime. An hour of overtime is less than a regular hour of work because you're reducing your overall ability to produce when you don't get proper rest. Find a balance between working hard and working smart.
- Sleep. Don't let thinking about work impact your sleeping. Sleep debt has to be paid off eventually. You don't want to be useless during the eight hours a day you have to be in front of the keyboard.
- Balance. Find a balance between work, health, activity, friends, family, and hobbies. It will increase your overall work performance. You lose the ability to bounce back with age.
- Don't force alertness. Much like a sleep debt, forcing alertness with caffeine or other stimulates will eventually develop a dependency on them to achieve a baseline state.