The official definition of Agile methodology is a “set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.” [1] As clinical as that definition sounds, the practice of Agile methodology is in fact, part art form, part science, and as heavily focused on social dynamics as it is on technical development.

In the early 1990s, Ken Schwaber and others developed “Scrum”, the first iteration of Agile methodology. Software developers at the time were becoming increasingly unhappy with the Waterfall development method, which resulted in heavily regulations and micro-management in every aspect of the software development process. This frustration was particularly aggravated by how often Waterfall based projects seemed to fail rather than succeed.

In 2001, 17 developers published what has now become widely known as the Agile Manifesto:
 

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
  • That is, while there is value in the items on the right, we value the items on the left more.

 
 
The Agile Manifesto, together with the 12 Principles [2], quickly became the corner stone of every Agile development method. While there is some distinct variation between the existing Agile methods, most of them encourage teamwork in cross-functional, co-located teams, as well as collaboration and process adaption.
 

Why Adopt Agile Methodology?

 
Since it’s conception, Agile methodology has evolved into an incredibly popular software development strategy. As the name implies, Agile methodology values adaptability, speed, and effectiveness in the development process. Three of the most commonly accepted benefits of Agile methodology include:

  • Transparency: Working within small, highly focused teams promotes communication with all the involved parties, ranging from stakeholders to software testers.
  • Increased Risk Coverage: Short development cycles mitigate the amount of errors the software can contain. Any errors that do exist in the software are discovered earlier, lowering the overall cost of the error and increasing its chance of being fixed before the release date.
  • Earlier Testing: Agile methodology allows testing to begin early in the development process, increasing the total speed to market, and ensuring improved product quality.

As popular as Agile methodology has become, it does have its limitations. To a degree, Agile methodology is better suited for particular types of projects and teams, such as developing mobile apps, web based software, etc. Though it is possible, the adoption of Agile methodology has not been as widespread for older software that was not developed using Agile.
 

Types of Agile Methodology

 

Scrum

Scrum is an iterative and incremental agile software development framework which recognizes and embraces change as described in one the Agile Principles:

Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. [3]
The term “framework” points to the short adaption cycle, which also means adaption of the implementation of Scrum itself. However flexible Scrum is, there are still core roles which are required to produce the product.

  • Product Owner: The Product Owner is the representative of the stakeholders, customers, and users, and is accountable for delivering value. They own the product backlog, a prioritized list of user stories, defining what has to be built into the product. Nobody else is allowed to add items or to change the priority of the items in the backlog. The product owner is the voice of the product and focuses on communication. They may not interfere with the Dev team on technical aspects of the development.
  • Dev Team: The Development Team is a cross functional team responsible for designing, implementing, testing, and documenting the product increments. Normally the team is made up of 3-7 members.
  • Agile Coach: The Agile Coach or Scrum Master helps the whole team (including the Product Owner) by removing impediments to delivering the product. They also drive the adaptation of the Scrum change process by improving the way the teams work together. Scrum is iterative – each sprint (a period between 1 and 4 weeks), the scrum team commits to executing a sprint backlog that will increase the value the product.

 

Kanban

Kanban was originally developed by Toyota back in the 1950s, and introduced the just-in-time (JIT) method of production. It consists mainly of visualizing the work flow required to take an item from idea to production. This is accomplished in the form of queues. Like in the original Kanban idea, each queue has a limit batch size, which according to principles of Kanban, must be constantly reduced to increase the productivity. There are no fixed roles in Kanban like in Scrum – each queue in the process is handled by members of an expert team.

Kanban has four core principles:

  • Visualize the workflow: You can only improve what you see. Kanban boards are used to display the queues.
  • Limit the work in progress: By limiting the amount of work in progress, you ensure that work flows match the capacity of the system.
  • Focus on the flow: Collect metrics to analyze the flow, and to find indicators on where to improve your process.
  • Constantly improve: Continuous improvement is based on the metrics.

Kanban is incremental but not iterative, and is great for maintenance or for products which continuously release new versions.
 

How has Agile Methodology Evolved?

 
The shift to Agile methodology has given rise to another movement: DevOps. DevOps is essentially the creation of a culture of collaboration. Rather than the Developers (Dev) and Operations (Ops) running as separate, silo-ized entities, they work together to maintain a continuous flow of information.

As Agile methodologies and DevOps become increasingly common within the business lexicon, they are bound to evolve further to meet the ever-changing needs of the software and tech landscape.
 
 
[1] Wikipedia. Collier, Ken W. (2011). Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing. Pearson Education. pp. 121 ff. ISBN 9780321669544. What is a self-organizing team?
[2] http://www.agilemanifesto.org/principles.html
[3] http://www.agilemanifesto.org/principles.html
References:
Wikipedia, agile manifesto,  https://en.wikipedia.org/wiki/Ken_Schwaber
http://agilemanifesto.org/
Related Topics: DevOps, Continuous Testing, Shift Left
Our Resources: whitepapers, future of testing, cadence mismatch