The point of software development, it seems to me, is to connect people who have problems with the solutions to those problems, using software.

There are lots of ways to do this, but let’s look at three basic approaches. If we work “bottom up” the people can’t see any progress [until we work our way to the top]. This makes them sad, and impatient. It defers their happiness.

If we work “top down”, we have a “prototype”. It can satisfy people’s curiosity, and get us some feedback, but it doesn’t solve any problems [until we work our way to the bottom]. The people aren’t really getting benefit, and aren’t really happy.

There’s another way! We can work in thin slices, from people to solution, delivering each one as soon as it’s ready. We get feedback, and the people begin to get value sooner. They get happier and happier. This is a good thing for us and for them.

This approach is iterative and incremental. The bits we give them are called Increments. They are central to our success.

This is Agile Software Development.