With waterfall, the project moves in one direction after each phase is complete it moves onto the next phase. Agile on the other hand focuses on smaller iterations and has a focus on completing a minimum viable product. The best example that I heard of is if a client needs a car you don’t just start trying to build a car the first iteration is a skateboard which is a form of transportation like the car but extremely basic. The next iteration would be to add more features and build a motorcycle. This is much closer to what the client requested in fact the client might be happy with this product as is.

Because of its nature waterfall methodology produces tons of documentation including diagrams because they have to get it right on paper before moving onto the next phase. Agile requires less up front documentation and has more chances of removing bugs. Written documentation is usually hard for the customer to imagine the result.

Agile rapidly builds something each phase. Something tangible, which the customer gets to try allowing for better feedback and clearer communication. I have seen disadvantages to both methods so I follow a hybrid of the two. I start by documenting meeting minutes and do a quick spec document so I have a clearer picture in my head then I jump to a quick C# mockup, which is just the visual layout of fields and buttons. This is usually good enough to get excellent feedback from the client before sending it off to our developers to build the final version. This ends up producing a much better product for the client and saves my team lots of re-work if something got missed or a change is required.