Agile Methodology is a people-focused, results-focused approach to software development that respects our rapidly changing world. It’s centered around adaptive planning, self-organization, and short delivery times. It’s flexible, fast, and aims for continuous improvements in quality, using tools like Scrum and eXtreme Programming.
It works by first admitting that the old “waterfall” method of software development leaves a lot to be desired. The process of “plan, design, build, test, deliver,” works okay for making cars or buildings but not as well for creating software systems. In a business environment where hardware, demand, and competition are all swiftly-changing variables, agile works by walking the fine line between too much process and not enough.
It abandons the risk of spending months or years on a process that ultimately fails because of some small mistake in an early phase. It relies instead on trusting employees and teams to work directly with customers to understand the goals and provide solutions in a fast and incremental way.
For training purposes, there’s a comprehensive, downloadable overview here.
Agile is an iterative software development methodology that helps developers create and deliver applications more quickly and efficiently. It is based on the principles of collaboration, customer feedback, and the “three C’s” – card, conversation, and confirmation.
A card in user stories in Agile is a way of breaking down user stories into smaller, more manageable tasks that can be easily monitored and identified. Each card may include additional information such as priority level or estimated completion date for further support of project management. By breaking down the stories into individual cards, developers can focus on one specific aspect at a time, making tracking progress easier and identifying any potential changes or issues before they become problems during development.
The second C of Agile is a conversation, which emphasizes frequent communication between team members to identify any possible changes or issues before they become problems during development. This involves regularly discussing progress updates with stakeholders and providing feedback for any feature requests or bug reports to ensure the final product meets all quality assurance standards required by the customer.
Finally, the third C of Agile is confirmation, which allows customers to review and test features before making them available in production environments. This helps to ensure applications are error-free while also giving developers valuable insights into customer preferences so they can make necessary improvements before release.
The most popular and common examples are Scrum, eXtreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM), Adaptive Software Development (ASD), Crystal, and Lean Software Development (LSD). Teams generally pick one or two methods. The most widely used methodologies are Scrum and XP, which dovetail nicely.
Scrum is a hands-on system consisting of simple interlocking steps and components:
Here’s an example of how Scrum works: Bill meets with a customer to discuss her company’s needs. Those needs are the product backlog. Bill chooses the most important tasks to work on in the next two weeks. His team meets in a daily scrum to target work for the day ahead and address roadblocks. At the end of the sprint, Bill delivers the work, reviews the backlog, and sets the goal for the next sprint. The cycle repeats until the software is complete.
eXtreme Programming. Often used with scrum, XP is an example of how Agile can heighten customer satisfaction. Rather than deliver everything the customer could ever want far in the future, it gives them what they need now, fast. XP is centered on frequent releases and short development cycles. It uses code review, pair programming, unit testing, and frequent communication with the customer.
Here’s an example of how XP works: Bill builds a list of customer requirements by having the customer tell “user stories” that outline the features. From these, he builds a software release plan. The software will be delivered in iterations, with one delivered every couple weeks. The team works in programmer pairs, using daily meetings to smooth roadblocks. The customer delivers feedback in the form of more user stories. The cycle repeats until the software is delivered.
For more examples, see this article.
The benefits of Agile are tied directly to its faster, lighter, more engaged mindset. The process, in a nutshell, delivers what the customer wants, when the customer wants it. There’s much less wasted time spent developing in the wrong direction, and the entire system is quicker to respond to changes. For a more comprehensive list of benefits, see this post.
The list of best practices is long and involved, with dozens of tools to pick and choose. We’ve outlined a short list of the main benefits below. For a more comprehensive best practices guide, see this article.
The list below shows some of the best tools on offer. For a complete list, see this post.
Make use of the non-product style tools and resources for success below, including the original Agile manifesto and a few downloadable templates for implementation.
Agile is a popular development methodology widely used by development teams who need to ship apps efficiently. But Agile development requires Agile support, so dev leaders must arm their teams with the tools and resources they need to succeed. Check out this post for some valuable tips for making Agile less fragile. Also, check out our great list of scrum boards.