Agile Software Development

By

|

Created on

|

Last revised on

Reading time: 9 min

What is Agile Software Development?

In software development, agile refers to a set of principles and practices that are used to accelerate the work of software programming teams and to produce work of excellent quality. [1]

Agile was invented to help manage software programming projects, but its principles and practices are applicable to nearly every kind of complex project that involves creativity and uncertainty. [1]

According to Peter Saddington, “the Agile philosophy simply asks you to work collaboratively as much as possible with your teams and client to build products with quality, shipping early and often, while learning and relearning along the way.” [2]

Why Agile Software Development?

The Agile Software movement was initiated in 2001 by a group of 17 programmers. They wrote an influential document called ‘The Manifesto for Agile Software Development.’ [3]

The Agile movement was born in response to a lot of money wasted in failed technology projects. The movement was nurtured and refined by programmers and project managers who were tired with the problems, and who thought there had to be a better way. [1]

Many of the ideas of the agile movement, however, first arose within lean manufacturing in the 1980s. [4]

When to Use Agile Software Development?

The agile project management model is not for everyone or every project. It works well for certain types of problems, in certain types of organizations, with certain type of people. Also agile projects fail – agile method is not an automatic route to success. [4]

It is not always easy to determine what the best model would be – agile, waterfall (a sequential software development life cycle process), or a combination of these methods. [5]

Which model to choose for a project should be determined based on several factors like for example the project environment and goals.

Traditional Project Management vs. Agile Project Management

Project management processes and performance measures are different for traditional project management than they are for agile project management. Traditional project management emphasizes complete early planning and requirements specification with minimal ongoing change. [4]

Agile project management emphasize good enough early planning, good enough requirements documentation, and experimental and evolutionary design with significant ongoing learning and change. [4]

The Manifesto for Agile Software Development

The Original Manifesto

‘The Manifesto for Agile Software Development’ mentioned above is composed of four simple statements. These statements express the core values of the system for getting work done. The manifesto is as follows: [3]

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.

© 2001-2020 Agile Manifesto Authors

Obviously, this does not mean that tools, processes, documentation, contracts, or plans are unimportant. Naturally, you need these as well. They are just less important.

Statements Explained

Let’s open these statements bit more: [1]

  • Individuals and Interactions. The success of any project depends greatly on the quality of the team – how they are able to work as individual team members and are they capable in working effectively through efficient and productive collaboration.
  • Working Software. Instead of the production of heavy documentation and specifications, the focus should be more in delivering actual value rapidly and continuously. And to learn quickly in the process.
  • Customer Collaboration. As the solutions should serve the needs of the customers, a lot of the efforts should be directed to customer collaboration, learning from customers’ direct experiences.
  • Responding to Change. “Responding to change over following a plan” should be the preferred way of working. This refers to the need for adaptation with projects and throughout the organization.

The 12 Guiding Principles of Agile

The 12 guiding principles are based on the Agile Manifesto. These, in short, are: [6]

  • Highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  • It is ok to change requirements, even late in development.
  • Deliver working software frequently.
  • Co-operation between business people and developers must happen daily throughout the project.
  • Build projects around motivated individuals – give them the environment and support they need and trust them to get the job done.
  • Face-to-face conversations are the most efficient and effective method of conveying information.
  • Primary measure of progress is the working software.
  • Sustainable development – the sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Technical excellence and good design – continuously pay attention to these.
  • Simplicity is essential. This refers to the art of maximizing the amount of work not done.
  • Self-organizing teams produce the best architectures, requirements, and designs.
  • Reflection at regular intervals – the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.

Examples of Agile Methodologies

There are several Agile methodologies, for example: [7]

  • Scrum
  • Lean Kanban
  • Extreme Programming (XP)
  • Crystal Methods
  • Dynamic Systems Development Methods (DSDM)
  • Feature Driven Development (FDD)
  • Test Driven Development (TDD)
  • Adaptive Software Development (ASD)
  • Agile Unified Process (AUP)
  • Domain-Driven Design (DDD)

While these methods differ in a variety of aspects, they all stem from the same concept – The Agile Manifesto. [7]


Move up to

Sources

  1. Langdon Morris, Moses Ma and Po Chi Wu (2014). Agile Innovation: The Revolutionary Approach to Accelerate Success, Inspire Engagement, and Ignite Creativity. John Wiley & Sons, Inc.
  2. Saddington, Peter 2012. The Agile Pocket Guide: A Quick Start to Making Your Business Agile Using Scrum and Beyond. Hoboken, NJ: John Wiley & Sons.
  3. Agile Alliance (2001). The Agile Manifesto. Retrieved 22 September 2020.
  4. Highsmith, Jim. Agile Project Management: Creating Innovative Products (Second Edition).
  5. Canty, Denise (2015). Agile for Project Managers. CRC Press.
  6. Agile Alliance. 12 Principles Behind the Agile Manifesto. Retrieved 22 September 2020.
  7. SCRUMstudyTM (2017). A Guide to the Scrum Body of Knowledge (SBOKTM Guide) (Third Edition).