This is how software development is done

To all CEOs, CIOs, CTOs and CMOs, this is how great software is developed. It's not about Open Source vs. Proprietary. It's not about .Net vs. PHP. It's not about 3rd party tools, plugins or widgets. It's about a common vision of how to work.

They take something small, simple, and painstakingly well considered. They ruthlessly cut features to derive the absolute minimum core product they can start with. They polish those features to a shiny intensity....Then everyone goes back to Cupertino and rolls. As in, they start with a few tightly packed snowballs and then roll them in more snow to pick up mass until they’ve got a snowman. That’s how Apple builds its platforms. It’s a slow and steady process of continuous iterative improvement—so slow, in fact, that the process is easy to overlook if you’re observing it in real time. Only in hindsight is it obvious just how remarkable Apple’s platform development process is.

Full article (via Daring Fireball)

At it's core, the iterative process is the basis of human learning. When I try to learn a new song on the guitar, I don't try to learn every note from beginning to end. It's too much for my brain. Instead I try to figure out the basic cords and rhythm of the song. Once I've polished that, then I dive down into the more complex sections, one at a time.

Software development is the same. You really don't know what you're building until you start working. Of course, this drives business folks insane. They want to know right up front, how many features its going to have, what it will cost, and dreaded, when is it going to launch. They want to place a bet on a sure thing. They want the reward without the risk.