Given a task, there are essentially two ways we can approach it. Either, we can work as hard as we can until it is “done” or we can fix the amount of time we have available and do the “best” we can. The latter approach is known as “Time boxing“.
Time boxing is a very simple technique we often use in software development. It is an effective technique for tracking progress and simply getting things done. From a planning perspective, time boxing is useful, especially when things appear complex or daunting initially and we are unsure of how to begin.
From a personal management perspective, I’ve found that time boxing can greatly improve our productivity and effectiveness. Because it’s simple, anyone can do it – including you. I use it when working on open ended tasks, like writing, where neither the scope or the quality is well defined.
This article briefly discusses how we can apply time boxing to our daily lives and get things done.
What is time boxing?
Time boxing is about fixing the time we have available to work on a given task and then doing the best we can within that time frame. So instead working on something until it is “done” in one sitting, we only work on it for say 30 mins. It is either marked as done at the end of this period or we commit to another 30 mins at a later time or another day.
In software development, an agile team releases new versions of a product to the customer for testing in fixed length iterations, say weekly. The customer and the development team work together to identify the features to be included in each release based on the relative priority and complexity of each task.
What’s special about Time boxing?
There are always several things competing for our time. At any moment, each of us could have hundreds of outstanding things to do. This question immediately become important – How can we ensure we get as much done as possible?
I believe time boxing is special for four reasons. Firstly, by consciously being aware of time, it allows us to focus on doing the things that matter most. Secondly, it serves as a reality check on how much time we spend working on open ended tasks. Thirdly, because of the fixed time constraints, it can be an effective tool against procrastination. Finally, it allows us to work on things during the free gaps we have between our commitments and appointments.
Focus on doing the things that matter most
If the time available we have is limited, a rational person should immediately think about prioritising their outstanding tasks based on what’s important and urgent.
By using time boxing and ranking our outstanding tasks, we make ourselves consciously aware of how much time we have available. This allows us to focus our energies towards things that matter most. In this way, we get things that matter most done first.
There are many techniques for ranking tasks and I won’t go into them in this post. However, it’s worth mentioning “Quality Function Deployment” – which is a technique we use in software development and engineering to translate customer requirements into engineering specifications. In the simplest sense, for each feature, we multiply a number representing a customer’s perception of its importance by another number representing an engineer’s estimation of the complexity. The final result is ranked and the relative ordering gives us an indication of what we should implement given a certain time constraint.
Limiting the time spent on open ended tasks
Do you know people who are perfectionists? Those who are constantly tweaking things to make them incrementally better or just different? To a certain extend, I suffer from a perfectionist personality which is why I find working on open ended tasks difficult. I’ll use some examples relating to my writing to illustrate: Should this sentence be structured in a passive voice? Does this paragraph look ok here? Are there enough anecdotes in this article?
Because by their nature there is no distinction between done and not done, an arbitrary open ended task can take anywhere between 1 min and 3 weeks. Time boxing is particularly useful as a reality check when working on open ended tasks. By limiting the time we spend on a given task, as long as it is complete though not perfect, we can objectively decide when something is done. This frees us up to work on the next task.
Effective tool against procrastination
In my experience, people procrastinate for two reasons – firstly, when faced with a complex task they are unsure of how to start and secondly, the prospect of having to do something they’re not particularly interested in doing.
- As a tool against complex tasks: Time boxing is useful here because it allows us to work on complex tasks over several iterations or in bite sized chunks. For example, writing a good article is a complex task for me and it is rare to be able to find one block of time in which I can write an article from start to finish. For me, it is more effective to write as best as I can within a fixed period, constantly refining and repeating this process until I finish.
- As a tool against uninteresting things: Time boxing is useful here because it allows us to commit to an undesirable task for only a limited amount of time. It’s a lot easier to start working on something we don’t like if we knew we only need to work on it for the next 30 mins. For example, if you have to clean a messy house, instead of trying to get through the entire house in one go, try only doing as much as you can for 30 mins. When you have another 30 mins to spare another day and feel so inclined, you can continue.
Using free gaps between commitments
The composition of a day from person to person and day to day is different. For some of us, our calendars are completely filled with appointments and meetings. For others, our days are relatively unstructured. Irrespective of our calendars, we often have what I call “null” time. That is, gaps between commitments in which we are either waiting for something or have free brain cycles.
Examples of “null” times are: At the station minutes before the train comes. In the car on a winter morning whilst waiting for the engine to warm up. At the desk, after you have kicked off a full compile on a complex codebase.
Time boxing can be immensely useful during these “null” times. If you knew the train will come soon, the car will warm up in moments or the code will compile in a few mins, you can choose to use that time effectively and work on a relatively simple task you know can be done within that short “null” time.
In conclusion
Time boxing is an effective way for getting things done. By fixing the amount of time we spend on a given set of tasks, we can focus on doing the things that matter, give us motivation to start, prevent overruns and use our “null” times effectively. In contrast, if we worked on things until completion in one sitting, we’re less likely to start on complex tasks, more likely to overrun on open ended tasks and leaves us with less time and motivation to work on the next set of tasks.
If you are interested in finding out more about time boxing, you may find these links useful:
- Wikipedia’s entry on Time boxing
- Time boxing for top team performance
- Steve Pavlina’s perspective on Time boxing
- Four things that reduce software quality
- Managing product development
- Quality Function Deployment
Related Posts
If you’re anything like me, you’d find doing grocery shopping to be a big waste of time. Yeah, I know it’s pretty essential, but even so, I don’t have to like doing it. I find every time I go grocery shopping, I spend hours upon hours looking for things. I’d pace back and forth, going from aisle 4 to aisle 10, only to be back at aisle 4 half an hour later. It’s simply frustrating.
Last week, I thought there must be some way to optimise grocery shopping. For most people, grocery shopping is a weekly routine. If an average family spends 2-3 hours each week shopping, in a month that’s 8-12 hours. I can write two articles in that time! Or watch half a dozen episodes of StarGate. There must be a way to make things more efficient (and hopefully in the process, less tiresome).
So, let me introduce to you the “Grocery Shopping Helper“. I spent 30 mins last Saturday afternoon writing this simple one page application. It’s not fancy by any means. It doesn’t have the bells and whistles. But it does the job. My wife and I tried it out yesterday, and it saved about 40% of the time it usually takes us to get our weekly supplies.
Here’s the deal. The thing about doing grocery shopping is most people do not know where things are kept in the store. Yeah, there are those signs above very aisle, but they have two problems – either they’re not descriptive enough or you have to physically walk all the way there to read them. The other thing about doing grocery shopping for me at least, is returning home after my wife sends me on an errand only to find I had forgotten something. When you’re time starved like I am, driving all the way back to the mall isn’t exactly my idea of spending time wisely.
So how do we solve this? The simplest and most elegant solution I could think of was having a map of the store. Imagine having a map identifying where each item was. You’d only have to walk from one end to the other end of the store in one fell swoop and pick each item as you go pass!
This is exactly what the “Grocery Shopping Helper” is designed to do. Given a list of grocery items and their corresponding aisle at the supermarket, this simple tool will generate a formatted page of all the grocery items you’re ever interested in, either sorted alphabetically or by aisle.

Using it can’t be any simpler.
- Start by making a list of the items you are interested in. Not just the items for this week (like a conventional shopping list), but for ALL the items you are, might be or used to be interested in.
- Just for the very first time, go to the store and note down all the aisle numbers against every item you have on your list. Your supermarket customer service might already have a list defined, so ask them first.
- Come back to this site and enter each item into the text area below (separate the description from the aisle with a comma).
- Generate a report alphabetically by clicking the ‘Generate‘ button. Print it in landscape and stick it on your fridge for future reference. This is a convenient lookup index which you can use to find the aisle by the item description. You only need one of this.
- Click the browser’s back button. Select the “Sort by aisle” checkbox. Generate a report by aisle and print it in landscape. Unlike the previous report, you should print as many copies of this as possible. You will need one of this every time you go to the grocery store.
- At the start of each week, get a fresh aisle report and stick it on your fridge.
- Each time you run out of something, say milk, place a mark in your aisle report next to the item indicating the quantity you need. You can use the alphabetical report to look up the aisle number.
- Take each weekly aisle report when you go to the shops. Simply walk from one end to the other end of the store (ie from the first to the last aisle) and pick up the items with marks alongside as you go past them.
That’s it! Simple and elegant! Armed with your weekly aisle report, you never need to walk back and forth searching for items and you never go home forgetting anything. You can look at a sample report or go to the application and try it out for yourself. It’s completely FREE.
Grocery Shopping Helper – grocery shopping for smart people
Feel free to drop me a line or leave a comment if you find this lifehack useful. Also, if you have any suggestions for improvement, I’d love to hear them and am willing to make changes to incorporate your needs if possible.
Related Posts
I’m not sure how many of you have heard of the phrase “Broken window broken house” otherwise known as the “Broken Windows Theory”. As a Software Engineer, this phrase holds special meaning because it describes software entropy – a condition we try to avoid. However, I have also found the meaning of this phrase is applicable to our daily lives, especially regarding how habits and patterns can influence our productivity and effectiveness.
Let me begin by giving you a bit of a background behind this phrase. Its origin can be traced back to an article written by James Wilson and George Kelling which was later turned into a book Kelling wrote with Catherine Coles. The book was titled “Fixing broken windows: Restoring order and reducing crime in our communities”. It addresses the question why some buildings in an inner city are beautiful and clean whilst others are run down, dilapidated and derelict. They write:
“Consider a building with a few broken windows. If the windows are not repaired, the tendency is for vandals to break a few more windows. Eventually, they may even break into the building, and if it’s unoccupied, perhaps become squatters or light fires inside.”
“Or consider a sidewalk. Some litter accumulates. Soon, more litter accumulates. Eventually, people even start leaving bags of trash from take-out restaurants there or breaking into cars.”
These examples describe how a single broken window, if left unrepaired for an extended period of time, can cause the inhabitants to lose respect, pride and care in their surroundings. When one window is broken, another will follow, and another. In time, vandalism takes place, crime levels rise and eventually the effort and cost to fix the condition becomes insurmountable.
For software, the “Broken Windows Theory” describes how rapidly a piece of software can degrade into entropy or “spaghetti code”. When a developer sees poor design or writes bad code and doesn’t fix the problem immediately, it sets a precedence for more poor design and bad code. Given enough poor design and bad code, the effort and cost required to address the problem become too big and it is simply easier to continue perpetuating the problem rather than fixing it.
For example, a developer seeing a software component someone else has written does not have comments might think comments aren’t important, required or necessary for this project. So they don’t write any. After all, if nobody is doing it, why should they? This is a natural reaction. However, soon you’ll have a system with thousands upon thousands lines of code which do not have comments or documentation.
In another example, a developer while attempting to write a software component, searches for other components in the system to use as reference but sees they have been written poorly. Fixing these requires too much work, so instead the developer exacerbates the problem by copy and pasting bad code to complete their task.
The book continues by describing the strategy for avoiding the decay and entropy is to solve the problems when they are small. When a window is broken, fix it immediately. In software, if a developer sees poor design or bad code, they should address it immediately.
I’ve found the “Broken Windows Theory” applies to our personal lives just as well. It isn’t constrained to solving crime and software engineering. Consider the following:
If I left some paper on my desk instead of filing it away at the beginning of the week, I find by the end of the week, I have a messy desk. If I left my clothes on the floor instead of the closet or the dirty laundry basket, soon I have a messy room with clothes everywhere. If I procrastinated on a task today, say paying the electricity bill, I find I don’t ever get to it until the day it is due and all my other bills don’t get paid either. If I left a single plate after dinner unwashed in the sink, soon there’s a sink full of unwashed dishes!
Do you see the pattern here? Instead of filing the paper away, putting clothes in the right place, paying bills the moment they come up or washing the dishes when required, procrastination can cause us, even if only at a sub-conscious level, to lose respect, pride and care in our surroundings. One piece of paper not filed, leads to more. One clothing item on the floor, is followed by another. Heck, there’s already 10 dirty dishes in the sink, what’s one more?
To avoid this slippery spiralling decay and disorder in our personal lives, I find that developing good habits and sticking to positive patterns are essential. Fix the problems and address the issues as they arise. Don’t leave that paper unfiled. Put it away immediately. Instead of dropping the clothes on the floor, put in a little bit of effort now and place them in the laundry basket. If there are dirty dishes, wash them immediately.
This applies to our personal and professional goals in life as well. Whatever your goals are, be committed to it. Do not approach them half-heartedly. I know this takes discipline, but if that’s what it takes, then you’ve got to do it. For example, I have committed to waking up early and consistently and I do so everyday. Not just on weekdays, but weekends too. Sleeping in just once, sets a precedence for future sleep ins. So try to eliminate thoughts like “I’ve already slept in 4 times this week, what’s another time?”.
If leaving a single window broken leads to more broken windows, then not fixing a window sends a message that vandalism is tolerated. In summary, the moral of this story is “Don’t live with broken windows”. If there is something that needs to be done or fixed, do so as soon as possible. Don’t let the problem escalate to a point it becomes too difficult or costly to fix. When that happens, it just doesn’t get done.
For more information about the “Broken Windows Theory”, you may find the following resources helpful:
- Fixing broken windows on Wikipedia
- No broken windows on Pragmatic Programmer
- How a theory shook the foundations of law enforcement and helped heal a city
- Don’t live with broken windows – an interview
- How broken windows can kill a business
Related Posts
