Agile Methodology
Agile Methodology is a widely accepted process of managing a project by breaking it up into different development cycles called sprints. A project can have multiple sprint cycles and each cycle contains 6 different phases: Plan, Design, Develop, Test, Deploy, and Review.
The Benefits of Agile
Agile development allows teams to continuously evaluate the results of each sprint cycle to instantly identify problems and receive feedback to implement in the next sprint. These small increments allows us to respond to changes quickly and improve our solutions throughout the project to produce faster and better working results.
This contrast with the traditional waterfall approach which is to plan, design, and develop the whole project for a single deployment date. The waterfall approach doesn't give developers room to revaluate their solutions until after deployment which makes it more difficult to identify problems.
Agile vs Waterfall
Whereas agile development is considered to be a cyclic process, the waterfall approach is more linear. Although the linear process has its advantages of having a much clearer structure and an easy transfer of information from one step to the next, its cons fall short in many important areas.
Testing and Making Changes
With the waterfall approach you need to define user goals early on in development. The problem with this is that you are unable to test how well your solutions work until development is done. If you missed the mark, it makes this very hard to quickly identify problems and make the appropriate changes.
The agile approach uses sprints to solve this problem by constantly testing, deploying, and evaluating incremental updates. This gives developers and the software the flexibility to evolve and change as needed.
Client Feedback
Client Feedback is the driving force for the cyclic nature of agile development. It's how we develop a deep understanding of market needs and use that data to continually improve the software. The waterfall approach is more focused on making the process more efficient for the developers without consideration for client needs. Waterfall can work fine if the project has clear goals that aren't expected to change, but in reality the scope and requirements of projects do often change.
The Four Principles of Agile Development
Individuals and interactions over processes and tools
In short agile methodology puts more value into the people building the software over the tools and methods used to build it. It encourages communication and collaboration to produce better software.
Working software over comprehensive documentation
The idea is to deploy something that works and refine it later, as opposed to documenting the whole process which can inhibit the ability to start.
Customer collaboration over contract negotiation
Customer collaboration allows the client to work with developers during the development process to offer their suggestions. This opens communication between parties to ensure a better final product.
Responding to change over following a plan
Agile development takes into account that plans change overtime, and that's not necessarily a bad thing. By encouraging adaptability it creates a great environment to open discussions and solve ever changing problems.