I just ran across this blog post on Agile Software Development called Don't Know What I Want But I Know How to Get It. One of Agile's main tenets is that software development should be iterative and incremental. The author of this article does a great job of educating just precisely what those two words mean.
This is a great introduction to Agile methodology. The author does a good job at bridging the gap between customer expectations and software engineering reality in a light hearted and humorous way.