This week's book giveaway is in the Mac OS forum. We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line! See this thread for details.
If your definition of incremental allows you to build part of a function in one iteration and the rest of it in the next, I'd say we try not to do that. We try to define a deliverable so that it is completed, tested, production ready in an iteration. That may mean we're doing the very same work, except we define smaller features, or it may mean we're pushing our smaller work to a different level of "done" Of course we don't always make it. Some features just don't get done. Then we tell the customer the feature is not there, even though it's half there. We don't demonstrate or ask them to test half of something.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
I guess its divide, consolidate and conquer Divide the work to be done into different iterations (this is not really done upfront), consolidate on an executable at the end of each iteration, and obviously conquer the problem to be solved. The core architecture will be delivered in the early iterations and features will be enhanced during the course of following interations.
The core architecture will be delivered in the early iterations and features will be enhanced during the course of following interations. Bear in mind that it doesn't have to be the "core" first. Many successful iterative and incremental developments deliver externally visible features in each iteration, and develop only enough "core architecture" to support the delivered features. Really: "iterative" means the process repeats the same "micro-process" several times during the development of the solution. "incremental" means that the solution is delivered several times, improving as it goes. They work really well together, but it is possible to have one without the other.