Agile Is Iterative And Incremental
The agile process is iterative. You start by building the most valuable functionality required in a piece of software. The initial iteration of the software is then given to users in order to gain feeback on things they like, functionality they would add, functionality they would change, or features that probably don't need to be part of the application.
Once this feedback is provided, you can go back into the development cycle and incrementally add features and fine tune the software until the product owner feels it is ready to launch.
The Agile process creates time boundaries for all key events, including development. This prevents the dreaded "when will we be done" scenario.
Typically, a project manager (known as the Scrum Master) will set key boundaries at the start of a project. This includes development cycles, meeting lengths, and other key interactions. Sprints are normally 2 weeks long. The meeting within a sprint will have defined agendas and lengths to accomplish specific objectives.
Focused On Minimum Marketable Features (MMFs)
MMFs are the most importnant, prioritized features of an application. If they stood alone, without any other features, you would have a completely usable piece of software. At the start of an agile project, the product owner and development team's obejective is to focus on the MMFs.
Open communication is part of the DNA of an Agile team. Collaboration between all the different roles of the development team (including the end users of the product) is required both verbally and documented in a project management system (Like Jira or VersionOne).
Open To Change
Unlike other software processes, Agile is open to change throughout development. Instead of processing a change order to incorporate change, an iterative user story is added to the backlog and that change can occur in the next development cycle (sprint).
Agile is a visual process. Information should radiate and be readably seen and understood. Often times, teams use Post-it notes on large planning walls to develop and prioritize user stories and then input those into a project management tool. Some teams feel more comfortable doing the "wall boarding" process directly in the tool. Either way it is easy to see, interpret, and understand at-a-glance.
Agile development breaks down features into small pieces known as "user stories." Development teams score the complexity of these user stories using relative scores called "story points." Once the team begins development and the project is tracked, data is available to measure the project velocity, therefore enabling more precise forcasting of resource requirements and timelines.
What are your thoughts on the key Agile concepts? Is there anything you would add? Let us know. And download our free Agile 101 Handbook.