The Theo Spears Blog

Blogging Considered Harmful (Considered Harmful)?

Creep

First posted 2006-09-01 00:00:00.000004+00:00

Whilst not at university I spend some of my time working for a small bespoke software development company. On the whole it's great - I can live at home in a beautiful part of the country, the people I work with are cool, and what I do is reasonably interesting. However there is one thing that makes life much less pleasant for us all - customers.

The thing about customers is that they always want more than what you have agreed to give them. This is commonly known as feature creep, little change after little change is added until the tiny time tracking application they paid for has turned into a fully blown payrole and management application.

However, as it is a software company, it is understood that changes cost money. If the customer wants to add too many features, we start charging them more. Nothing cools someone's enthusiasm for adding new stuff than being told it will cost them thousands of pounds.

One of the problems I believe hobby projects run into is they don't have this tempering mechanism. As it is something you are making yourself there is no financial cost to new features. Of course there is a cost in time, but as hobby projects often don't involve detailed time estimating even this cost may not be made obvious.

It certainly can't compare to having an invoice for £2000 appear in the post.

As a result feature creep goes wild, even before the start of the project. People keep thinking of great new features to add, and don't fully weigh them against the time cost. Each little feature is small, but the overall result is that your little weekend project has become a massive undertaking that will take all of you several weeks full time to implement.

And of course you don't really want to undertake such a big project - that's why you initially started out thinking about something small for the weekend. As it is so big the project becomes daunting; you are unsure where to start, and ultimately nothing comes of it.

The essential irony is that by planning to do more, you end up doing less.

So how can this problem be overcome? To an extent I don't think it should be - part of what makes a hobby project fun is that it doesn't have all the economic considerations of coding as done for a job. However, a project that produces a result is far more fun and rewarding than one that doesn't, so perhaps learning something from the business world is beneficial.

The solution I will be trying is to decide on the scope of the project at the start, and then use this to limit features. First decide how big the project should be - do you want it to take you a weekend, or a few hours a night for a month, or all your free time for the next 3 years? Make this decision, and express it as a number of hours. Tell people; blog it; write it down.

Now for each feature estimate how long in hours you expect it to take. Be honest with yourself here; don't underestimate time to get more features in, it won't work. If the total time for all your features is more than the time you have allocated then some features have to be removed. Be brutal, decide which features you don't need and remove them. Don't be tempted to increase the time allocated to the project, if you start doing this soon you'll be looking at an unmanageably big project again. Remember, you can always add more features once the ones you have decided on are finished, if you still feel you want them.

What if you have reduced down to only features you feel you must have and it is still taking too long? Well maybe you shouldn't start the project, or maybe you should get someone else to help. Or you could go back and revise how much time you are willing to spend, but keep in mind how this will impact other plans and projects, and your social life.