I'm not completely sure I understand what Agile Software Development really is. I was told by a worker at Google that they use it, and that the "Waterfall" model isn't used at all.

From what I think agile software development is:
1 A customer wants a product
2 Team makes one working part of the product
3 Team gets feedback from customer
4 Team revises and improves product, and likely adds in a few more features that the customer wants/wanted.
5 Go back to to 3

Is this correct?

Also, what are the pros and cons of agile software development?


Also, what development cycle should a programming follow if he is the only one working on a project, and is also considered the "customer"?