Agile Software Development

Agile Software Development

Deliver software faster, with better quality, and remain competitive

Introduction

In order to remain competitive, companies need to deliver software faster and with better quality.

Companies and teams don't do agile, either they are agile or not.

Agile is a combination of methodologies and techniques that can help teams and companies to adapt to the continuously changing nature of software projects and also lessen the risks associated with them.

Through these methodologies, a team can ensure they are building the right thing.

The Agile disciplines and methodologies can be divided into two main groups: process-oriented and technical-oriented.

Process-Oriented

These disciplines affect how teams and organizations work, collaborate, and organize.

Usually, they suggest the types of meetings the teams should have, the roles people should play, processes in which to capture requirements, how to work in an iterative fashion, how to plan and divide work, and also how to display progress and get business feedback.

They help teams to keep the focus on what is really important and valuable to the business.

Technical-Oriented

These disciplines are about the challenges of developing, growing, maintaining, and delivering the software.

They usually suggest technical practices and techniques.

A few examples:

  • Test-Driven Development

  • Pair programming

  • Continuous integration

  • Simple design

Technical-oriented disciplines help teams to focus on the quality of the software they are producing.

What is it to be Agile?

Agile methodologies and disciplines are fully about quick and short feedback loops. The quicker and shorter our feedback loop is, the more agile we can become.

Every time we get feedback, we have an opportunity to react to it, and the act of reacting to new data is what makes us more agile.

Agile isn't solving problems, rather exposing them, by narrowing the feedback loop which helps us make problems visible sooner, allowing us to react to the problems and quickly adapt.

The faster we show any feature to a user, the earlier we will get feedback on it, the quicker we can improve our product.

Agile Manifesto

Values

The following is an excerpt from the Agile Manifesto website:

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

  • Individuals and interactions over process and tools

  • Working software over comprehensive documentation

  • Customer collaboration over contract negotiation

  • Responding to change over following a plan

While there is value in the items on the right, we value the items on the left more.

Principles

The creators of Agile also came up with twelve principles:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale.

  4. Businesspeople and developers must work together daily throughout the project.

  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

  7. Working software is the primary measure of progress.

  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

  9. Continuous attention to technical excellence and good design enhances agility.

  10. Simplicity—the art of maximizing the amount of work not done—is essential.

  11. The best architectures, requirements, and designs emerge from self-organizing teams.

  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Conclusion

Agile software development helps companies deliver software faster and with better quality. To be truly agile, we need to apply both agile processes and technical practices.