Agile

Agile

The Art of Agile Practice

Agility has a vital, strategic role to play across all dimensions of business. The methods and practices associated with contemporary Agility (e.g., Scrum; Extreme programming, XP) are encouraged as an integral part of the overall Agile approach to business. These Agile methods, however, are only a part of the overall comprehensive Agile approach required by any business. Such a comprehensive Agile approach in business encompasses wide-ranging considerations of people–process–technology–money within and outside business, rendering overall Agile value to business.

Understanding Enterprise Agility

Agile values and practices have their roots in software agility. However, an enterprise (organization) can capitalize on the many positive aspects of Agile values and behaviors that emanate from software agility. This is because the nexus between business agility and software agility is strong. Application of such Agile values enables an enterprise to climb out of its cellars of formalities and excessive planning. At the same time, applying pure Agile approach without due credence to the formal needs of a business can often lead to projects with insufficient planning

and documentation. This is a challenge to both software and enterprise-wide agility.

What Is Agile?

Even if Scrum, one of the best-known Agile processes, was conceived before the Agile Manifesto was drafted, it is a well-known fact that the Agile Manifesto is the founding bedrock of the modern Agile movement.

So, what is the Agile Manifesto?

Agile Manifesto

In a nutshell, the Agile Manifesto reads as follows:

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.

Along with the four values, the Agile Manifesto is also comprised of twelve principles:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  1. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  1. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale.
  1. Business people and developers must work together daily throughout the project.
  1. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  1. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  1. Working software is the primary measure of progress.
  1. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  1. Continuous attention to technical excellence and good design enhances agility.
  1. Simplicity—the art of maximizing the amount of work not done—is essential.
  1. The best architectures, requirements, and designs emerge from self-organizing teams.
  1. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

One can deduct from these principles that the Agile process is any process or approach that favors frequent interaction between an empowered software development team and the business users, and which considers working software regularly delivered in increments as the only valid measure of a software project team’s success and the only way to make sure that the software will meet its business users’ requirements (by way of regular review and demo).

Agile Practices in a Nutshell

Different people have different interpretations of what practicing Agile means, but in general, when a team says that they practice Agile, it means that they follow, more or less, the following practices:

  1. Have frequent interaction with business users.
  1. Empower teams to make their own commitment and decide how to organize their work around short iterations.
  1. Inspect and adapt teamwork during daily team interaction.
  1. Build and integrate often or even daily, if possible.
  1. Deliver frequently.

 What Is Scrum?

Scrum is an iterative approach to software development tightly aligned with agile principles and the Agile Manifesto. Scrum is made up of a series of time blocks called sprints, which focus on delivering working software. A sprint is typically two to four weeks in length and is defined by a goal or theme that helps to clarify the objective of the sprint. Sprints are isolated from change, allowing the team to focus on delivering working software without distraction. Scrum focuses on helping the people committed to develop the project deliver that project.

Work is prioritized from a product backlog that is managed by a product owner. Before each sprint occurs, a feature from the product backlog is chosen and the team commits to deliver it by the end of the sprint.

To keep things running smoothly, a ScrumMaster is appointed to ensure there are no obstacles impeding the team from delivering the features that the team committed to. Daily stand-up meetings help the team communicate about any issues preventing them from delivering. Retrospectives at the end of each sprint help to improve process.