Building features iteratively

Many customers find hard to release something that they know to not be completely, 100% done. Yet, that is exactly what iterative, agile development asks you to do.

Won't our users think we suck?

But, if we release something that's only half done, won't our users think we suck and complain about the missing half?

The thing is, none of your users know what the 100% completed state is supposed to look like - only you do. If you play your cards right they will most likely never notice that something is amiss.

And if they do, this is valuable feedback. This means there are features they are missing. Not those fake kind of features that you've thought up, but real, actual features that will help the users in their daily use of your product.

And you know what, often those ideas from your users are completely different from what you imagined them needing. That's where you want to focus your development time.

Won't is cost more money?

But, if we release something, knowing fully well that we'll change it later, won't it cost us more money than doing it right from the get go?

Well, yes, it probably will - on a feature by feature basis. But in the long run, when you factor in all the times where you end up not building the entire feature, you'll come out ahead. And then there are all the times where you end up building what the users actually needed, not what you thought they needed.

And imagine this; as you've been building 4 different features, one iteration at a time, your users have actually been able to draw benefit from all 4.

Will the project ever be finished?

But, if we only build itsy bitsy parts of each feature all the time, how will ever be 100% completely done with any feature?

The harsh reality of software development is you're never done. There is always something that can be tweaked, improved, made more usable, faster, you name it.

This is a core point in incremental development. Since we know that we'll be tweaking and improving a feature forever - we might as well accept it and plan for it.

The definition of "done" is one you have to define for yourself.