Since starting this project, I’ve found that I need to have 48 hour days, 24 just aren’t enough! If something doesn’t happen soon, I’m going to be delivering my project in about twice the time I first estimated.
When I started on my new project, I started by having a look around to make sure there really was a market, and to double check that my assumption that the niche I was looking at was not already being filled by anyone else. I wanted to be first to market in the niche, primarily because I believe it is a very small niche, and I don’t expect it to be able to sustain more than 1 or 2 players. My idea for my new software was prompted by noticing over time a number of calls for this functionality in a particular piece of software, functionality that would be fairly hard for the vendors to do with their current server based model, but that I believed was totally feasible with a desktop application. The application would be simple at first, no bells and whistles, just enough to get this repeated query satisfied.
After a couple of weeks of surfing the web, and formulating some rough ideas on exactly what the scope of the project would be, I started creating entries in my FogBUGZ bug tracking installation for each of the features I thought would be required, this was end of June (2004). First pass, I only added 2 entries, this covered the basic feeling of the app, enough that I would remember what it was I was hoping to achieve with the product. The next time I had a chance to actually start doing anything on the project (more than a month later, after some more ruminating), I updated the two existing cases with further details and created another 3 to cover some other required functionality. The following day after having started development I added another 5 features to the list, drastically expanding on and tightening up the requirements on one of the first two features. That was about 2 months ago (early August), since then I’ve updated many of the features with more details, and added another 8. None of these features are to the level you’d expect for XP development, but they give enough detail that when I return to them to start development, I know exactly what is required.
When I added those features about 2 months ago, that was when I first started taking this project seriously, at that time I put all the features into a number of “releases”, each release due at the beginning of each subsequent month. I worked out that as long as things ticked along nicely, I could get about 8 hours of serious development and testing done each week, e.g. 1 day per week. This is assuming that I’m only working in my spare time, and only on 2 or 3 evenings per week, if lucky I may snatch a couple of hours at the weekend, but only if the wife is away doing something else, we have an agreement that I try not to use my computers at the weekend, so that we see something of each other occasionally
With estimates logged against all the features, splitting features so that each release consumed 4 to 5 days max with highest priority core features coming first, this set my release schedule as follows:
Release |
Date |
Notes |
0.1 |
12/08/2004 |
Initial building skeleton app. |
0.2 |
01/09/2004 |
Pre-release. |
0.3 |
01/10/2004 |
Pre-release. |
0.4 |
01/11/2004 |
Pre-release. |
0.9 |
01/12/2004 |
Public Beta. |
1.0 |
01/01/2005 |
Full Release. |
1.1 |
01/03/2005 |
Bug Fixes and small user requests. |
1.2 |
01/05/2005 |
Planned large features. |
1.3 |
TBD |
More super features! |
This was well ahead of what I actually expected my release schedule to be, I had planned to have the Beta out in February at the very earliest, but really thought that March would be more likely. But now, I’m not sure I’ll be able to even make March. In the first two months of development, I’ve successfully completed 0.1 and 0.2 on time, they’re happily stored away in version control. However, 0.3 has hardly got off the ground, and I’m half a month behind expected delivery date already. I’ve had few problems with my ISP to sort out during that time, and a friend of mine convinced me to have a better look at RSS and blogging, which hasn’t helped (yes, I’m blaming you Gordon!), but the biggest problem I had was in using new technology.
Although I’m fairly used to VB, as noted before, I’m actually using REALBasic. This is great stuff, I’m thoroughly enjoying developing with this technology, but it’s very different to my day job. As always, when you start with a new technology, there are a lot of quirks that need to be picked up, that’s why current wisdom says that to be truly successful in a new venture, you need to be using tried and tested tools and techniques, otherwise you’ve already added a variable that you can’t accurately predict. But I don’t have that luxury, I want to create a desktop app, and you can’t do that easily (and cheaply) with Informix 4GL.
So, luckily, I already knew my initial estimated plan was going to be wrong, and recently I’ve changed it by slipping all the open features by a month:
Release |
Date |
Notes |
0.1 |
12/08/2004 |
Initial building skeleton app. |
0.2 |
01/09/2004 |
Pre-release. |
0.3 |
01/11/2004 |
Pre-release. |
0.4 |
01/12/2004 |
Pre-release. |
0.9 |
01/01/2005 |
Public Beta. |
1.0 |
01/02/2005 |
Full Release. |
1.1 |
01/04/2005 |
Bug Fixes and small user requests. |
1.2 |
01/06/2005 |
Planned large features. |
1.3 |
TBD |
More super features! |
So, this puts my first Beta as being released on 01/01/2005, which I already know isn’t going to happen because I won’t even be in the country that day, if lucky I’ll be nursing a hang-over down south (England, I live in Scotland), having spent New Years with my family. But more importantly, I don’t’ actually believe I’ll be releasing the Beta until March at the earliest, I’d be happy with that. However, to even meet that, including setting up the new web site and all the other stuff that I need to have in place, I’m going to have to make some serious changes to the way I manage my time. I’m just not achieving that magical 8 hours per week quality development time.
Last year I read David Allen’s Getting Things Done, which is superb, when I first read it and implemented most of the recommendations my home and (especially) business life became far more organised. I think I need to read it again to make sure I’m still doing things right. I also need to ensure that I’ve re-read some of Steve Pavlina’s great articles too. But really, I need to start removing all the extraneous attention sucking items from my life, things like TV and sufin’ the ‘net.
TV’s not such a problem, although I have a TV tuner card in my PC, I’ve just not turned that PC on, I’m using my Mac mostly anyway, and have virtual PC for testing my builds for Windows. Testing in Virtual PC can be a little slow, so occasionally I will have to start up my main Windows PC for a few tests, just to gauge whether things are running OK on a typical business PC (it’s not a perfect test, but better than Virtual PC), but I’m sure I’ll resist the TV during those specific tests.
The real killer is the internet, there’s just so much going on, and no time to read it all! I’m not sure how I’m going to resist, maybe I can restrict myself to only using the internet once I’ve done any paperwork I need to do (I have to do a fair bit each month for my consulting business), and completed at least two hours of development. Maybe just say any time after 10pm is free for play, which if I were sensible would mean about half an hour as currently I’m having to get up at 6am to fight the traffic to work (across the Forth Road bridge). The problem with that, is that usually I only seem to be firing on all cylinders at about 9:30 – 10pm, although I suppose that is partly due to some time wasting on the internet. I’ll give it a go anyway, no internet at home until 10pm; email, paperwork, development and then surfing.
I’m not sure whether this is going to be doable, there may be other elements affecting my productivity. What do you think, what do you do to ensure you have efficient development time? What leeches your time the most?
I think I’ll start a log, a bit like the timesheets I have to fill in on any contract, but for everything in life.