For the last few years I've been working in two-week long iterations while working on software. We would pick up a set of features, get as many of them done as possible done over that two-week period, reprioritize the remaining features, pick up a new set of features for the next two weeks, and occasionally do a release to production of our software.

Well no more.

Now I'm doing 100% feature-based development. We've made our deploy process so simple and automated, that as soon as we finish a feature it just shows up in production. If we run into a problem, we just roll the feature back (although our automated test suite prevents that most of the time).

So now, we don't have iterations, we just have features, and as soon as one is finished we can immediately go through the process of choosing the next most important one. We no longer have releases; new features and enhancements just show up while people are working in the system.

The mind-shift necessary for a company to go from thinking of software as a monolithic entity (“We need a new website”) to a small collection of features is fairly large one. Once it happens, however, there’s no turning back.

If there's anything that the short history of the internet shows us, it’s that the company that moves the fastest is going to win. I think that doing feature-based development sets up a company to do just that.