There are times when just one bug that keeps eating away your time like hell ... for example this one. I generally end up wasting hours and realize I've gone terribly behind my schedule and not completed other tasks. With n number of tabs open in the browser, I end up posting the question in stackoverflow as a last resort. What are some time management techniques that lets you stop, rewind and get back in action when faced with a road block?

  • 2
    Try taking up something other than programming as profession or phrase your question so that it would sound like you are not 100% lost. – Job Mar 6 '11 at 20:25
  • By the way, there is nothing wrong with posting on SO after you gave it a good old college try. It is when you are old enough to be a senior developer, but are still as stuck as a junior one, that you would want to reevaluate your life. – Job Mar 6 '11 at 20:37
  • Have you looked at David Allen's Getting Things Done? – TeaDrinkingGeek Mar 6 '11 at 21:48
  • @Job .. pretty deep. Thanks. But "something other than programming as in profession" - not in this life :) – Tathagata Mar 7 '11 at 0:08

Pomodoro is a great way to manage your time in small increments.

The technique uses a timer to break down periods of work into 25-minute intervals called 'Pomodori' (from the Italian word for 'tomatoes') separated by short breaks. Closely related to concepts such as timeboxing and iterative and incremental development used in software design, the method has been adopted in pair programming contexts. The method is based on the idea that frequent breaks can improve mental agility..

| improve this answer | |
  • Wow .. this sounds great! – Tathagata Mar 7 '11 at 0:17
  • 2
    What about breaking the "in the zone" condition that Joel Spolsky wrote about? don't you lose concentration for 15 minutes at a time? – Job Mar 7 '11 at 1:54

My answer is timeboxing - only allocate a maximum amount of time for a bug before asking for help.

For example - one hour to solve issue x. This means that's going to be the maximum time you waste on it.

| improve this answer | |
  • 1
    do you actually do that? What happens if you blow the timebox? Do you ask another dev or what? It's not like you can just say 'ahh, forget it, it, it's not that bad a bug!'. I don't know about anyone else, but in all the software I've ever worked with, the bugs are HIGHLY variable. Since many of them end up being either really esoteric cases, or oddball intersections of 'what the spec says' vs. 'what the other system actually does' vs. 'what the customer wanted to happen', I can't begin to think of time boxing a bug. – Michael Kohne Mar 6 '11 at 20:31
  • 1
    @Michael - I do this on occasion. When I can't even guess how long something will take, I timebox it. If I have blown the timebox I ask - either colleagues or here. In any case - sometimes the act of stopping give my mind enough of a rest from a problem to allow me to solve it faster at a later date. – Oded Mar 6 '11 at 20:34

The way I do it is to prioritize the things that need to be done and work on the most important first. Then if you have time, you can work on less important things. E.g., if you need to create a form that takes input for a patient, make sure you do the essentials first, e.g.:

  • database table/tables for all critical data
  • business logic code for validation/work flow
  • user interface with fields for all critical data

Make those things work first, from start to end, before adding anything "shiny". Don't worry about making the patient lookup use AJAX. Don't worry about making fancy validation graphics for the UI. Don't worry about making sure your javascript has as small a footprint as possible. Just make sure your code does what it is supposed to.

Once it is all working, then you can prioritize the rest. e.g.:

  • Make sure the UI has graphics/css/colors of the rest of the app
  • make sure database table(s) will perform properly with a large dataset (create stored procedures/indexes)
  • add the user-friendly AJAX lookup for existing patients

It takes discipline to force yourself to not get off track, but you will get better with practice.

People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas there are. You have to pick carefully. ~ Steve Jobs

| improve this answer | |

The key is to limit yourself to a fixed amount of time to spend on one problem. "Ok, I've got 2 hours to get this working, or else I'm setting it aside and working on another problem."

Don't come back to the problem until the next day.

| improve this answer | |

Multitasking is bad. You should have a prioritized list of tasks, and if other less important things get delayed while you're working on that critical bug, that's how things go sometimes. If you have two top priority items, then you should probably bring this up to someone who can figure out which one they would rather have fixed in the near future.

That said, if you have downtime or just need to switch tasks to get come back to a problem with a fresh mindset, you can set aside a specified amount of time for a lower priority task.

| improve this answer | |

“If it weren’t for the last minute, nothing would get done,” said a wisecracking piece of stationery I once came across in a store. But if you were to learn proper time management tips, you wouldn’t need that procrastinator’s motivator of a last minute in the first place. Here are some useful time management tips to help keep you and your time in tip-top shape: see tips here

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.