The idea of timeboxed development was something I first came across when I was working in the computer industry. Essentially, it works like this. As a developer, you are essentially working with just three variables: time, quality and scope. A timebox is a chunk of time that you allocate to the development project or an iteration of the project. You agree that upfront and then you work to include all the things that are defined in the scope to normal quality standards.
But here’s the key thing. When you are getting close to the end of the project or the iteration of the project, you do not allow it to extend beyond the time boundary; instead, you reduce the scope of what is included. That way, you ensure that your project or each iteration of it, is always delivered on time. Essentially, in reducing the scope, you remove tasks and put them back on the wish list for the next project or iteration. Of course, the entire approach needs to be agreed upfront with your customer, but it can work well for both parties.
Often, at the start of a project, you are not entirely sure how much of what the customer wants can be included in the finished product given the available resources of time and budget which people often want to fix. Using the timeboxed approach, you effectively scope the project as normal and agree that you will work a fixed time on it and in that time, you will endeavour to include everything in the scope. However, you also agree upfront what can and cannot be omitted if time becomes an issue.
Well, recently, I came across the timeboxed idea as a way of managing time in a broader sense, not specifically related to software development and I thought it was an interesting idea as a method of getting yourself organised. Supposing you have a lot of things to do and you want to make good use of your time. Essentially you can use the same approach.
1. Create a List of Actions to Complete
2. Assign a Time to Each Task on Your List
3. Select a Task and Work on it for the Agreed Period
You simply decide that you are going to work on a particular project for, let’s say two hours and, for that period of time, you give it your all. When the time has elapsed, you move on to the next timebox and the next task. The object is to produce a specific deliverable within the timeframe you set for yourself. If time becomes an issue, you reduce the scope, but still work on producing something within the timeframe. You can watch a video on the subject here.
As a little example, yesterday I was suffering from a bit of writer’s block but I had decided that I was going to produce an article and had allotted exactly one hour for the purpose. After a bit of thinking I decided upon my subject. It was going to be an article about feeding your mind. Unusually for me, after about four of five quite short paragraphs, I had said what I wanted to say on the subject.
The problem was that the piece was too short for an article or a blog post. I like my blog posts to be between 800 and 1000 words ideally (like this one). Sometimes they are longer and indeed occasionally shorter, but I think, for me, that is an ideal word length. It allows me a sufficient number of words to create a good quality article, but it also disciplines me to keep it short enough to be read fairly quickly – an important consideration for my readers. They don’t want me rambling on for pages; they want the meat of the subject in a concise article.
So, my time had elapsed for the purpose of creating my article and that meant, because I was using the timeboxed approach, that the scope needed to be reduced because I had a few hundred words rather than a 1000 word piece. It was a indeed deliverable if not actually usable as a blog article. So what did I do? I accepted the reduced scope and simply published it as a forum post rather than a blog post – you can read it here if you wish.
So there you go. That’s the essence of timeboxing. I hope you will think about giving it a shot. You may find it improves your productivity significantly.