What is Agile?

Agile methodologies are approaches to product development that are aligned with the values ​​and principles described in the Agile Manifesto for software development. Agile methodologies aim to deliver the right product, with incremental and frequent delivery of small chunks of functionality, through small cross-functional self-organizing teams, enabling frequent customer feedback and course correction as needed.

In doing so, Agile aims to right the challenges faced by the traditional “waterfall” approaches of delivering large products in long periods of time, during which customer requirements frequently changed, resulting in the wrong products being delivered.

Agile Methodology

Learn Agile
Application of Agile Methodology

Through most of its brief history (since 1999-2000), “Agile” has been predominantly an approach to software development and IT application development projects.  Since then, however, it now extends to other fields, too, especially in the knowledge and services industries.

Agile is about being responsive to the market and to the customer by responding quickly to their needs and demands and being able to change direction as the situation demands.  Be it IT or software development or any other field where there is a flow of work and delivery of work products, Agile methods are applicable.  Agile methods attempt to maximize the delivery of value to the customer and minimize the risk of building products that do not – or no longer – meet market or customer needs.

They do this by breaking up the traditionally long delivery cycle (typical of the legacy “waterfall methods”) into shorter periods, called sprints or iterations. The iteration provides the cadence for delivering a working product to the customer, getting feedback and making changes based on the feedback.

Thus, Agile methods have sought to reduce delivery times (delivering early, delivering often) to ensure that smaller vertical chunks of the product get to the market, enabling customers to provide feedback early and ensure that the product they finally get meets their needs.

“Agility is principally about mindset, not practices.” – Jim Highsmith Click To Tweet

Agile has become an umbrella term for a variety of planning, management and technical methods and processes for managing projects, developing software and other products and services in an iterative manner. These methods include Scrum, by far the most prevalent and popular method for software, XP (eXtreme Programming or Paired Programming), and more lately Kanban.

Agile methods also include technical practices – most of which fall under the umbrella term DevOps – that enable Test Automation, Continuous Integration/ Continuous Delivery/ Deployment (CI/ CD) and overall, an ever-shrinking delivery cycle for software and other products and services.

The use of Agile as an approach to project management has increased dramatically in recent years. Gartner predicts that agile development methods will soon be used in 80% of all software development projects.

What is the Agile Manifesto?

The Agile Manifesto is a statement of core values ​​and principles for software development. The Agile Manifesto for software development was set up in 2001 and it is a declaration of 4 vital rules and 12principles that serve as a guide for people in agile software development. It was created by 17 professionals who already practiced agile methods such as XP, DSDM, SCRUM, FDD, etc, gathered in the snowy mountains of the US state of Utah, convened by Kent Beck.

Agile Manifesto

Source: LynneCazaly

4 Core values of Agile Manifesto
  1. Individuals and interactions over processes and tools – The first value emphasizes teamwork and communication. We must understand that software development is a human activity and that the quality of interaction between people is vital. Tools are an important part of software development, but making great software depends much more on teamwork, regardless of the tools team may use.
  2. Working software over comprehensive documentation – Documentation has its place and can be a great resource or reference for users and coworkers alike. The main goal of software development, however, is to develop software that offers business benefits rather than extensive documentation.
  3. Customer collaboration over contract negotiation – Development teams must work closely and communicate with their customers frequently. By listening to and getting feedback, teams will understand what all stakeholders really want.
  4. Responding to change over following a plan – Changes are a reality in Software development, a reality that your Software process should reflect. A project plan must be flexible enough to change, as the situation demands.

“Intelligence is the ability to adapt to change.” - Stephen Hawking Click To Tweet

12 Principles of the Agile Manifesto
  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 timescale.
  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.
Key Agile Methodologies

Agile is an umbrella term for several methods and practices. Let’s look at some of the popular methodologies:

  • Scrum
  • Extreme Programming (XP)
  • Adaptive Software Development (ASD)
  • Dynamic Software Development Method (DSDM)
  • Feature Driven Development (FDD)
  • Kanban
  • Behavior Driven Development (BDD)

Agile-Methodology

Scrum Methodology

Scrum methodology is a simple framework for working with complex projects, and it was created by Ken Schwaber and Jeff Sutherland.

Agile software development methodologies are iterative, meaning the work is divided into iterations, which are called Sprints in the case of Scrum. Scrum is executed by small teams of between 7-9 people, including a Scrum Master and a Product Owner.

In Scrum, projects are divided into cycles (typically 2 or 3 week cycles) called Sprints. The Sprint represents a timebox within which a set of features must be developed.  Multiple sprints might be combined to form a Release – where formal software/ product delivery is made to the customer/ market.

The overall product functionality is broken down by the Product Owner into smaller features (typically described as Epics and User Stories – or just Stories).   These Stories are prioritized and taken up in each Sprint or Iteration.  The intent of the method is for the team to be able to demo at the end of each Sprint working pieces of the product to the Product Owner, to make sure that the product is working as intended.

Scrum Methodology

Overall, the Scrum method breaks the long waterfall process delivery into smaller cycles, which enables product teams and the end-customer to frequently review working software and ensure that it meets their business requirements. This ensures that the end product also meets the final requirements of the customer.

The Scrum method is characterized by specific ceremonies such as the Daily Standup meeting, the Sprint Review Meeting, the Demo to the Product Owner and the Sprint Retrospective meeting.  All of these meetings provide collaboration and review opportunities to the team to ensure that development is progressing as intended, and any issues are resolved quickly.

“As you navigate through the rest of your life, be open to collaboration. Other people and other people’s ideas are often better than your own.” - Amy Poehler Click To Tweet

Extreme Programming (XP)

Extreme Programming (XP) – or Paired Programming is a methodology developed by Kent Beck in the early 90s. This agile methodology focuses on enhancing interpersonal relationships as a key to success in software development. XP also focuses on promoting teamwork, caring for the learning of developers, and fostering a good working environment. It is characterized by developers working in pairs where one developer programs while the other developer observes; and they switch these roles on a regular basis throughout the Sprint. This way, they enable continuous code review and feedback that enhances code quality and developer capability.

Extreme Programming - XP

 

Extreme Programming (XP) promotes continuous feedback between the client and the development teams, fluid communication between all participants, simplicity in the implemented solutions and the readiness to face changes. XP is especially suitable for projects with indistinct and highly changing requirements, and where there is high technical risk.

Adaptive Software Development (ASD)

Adaptive Software Development (ASD) was developed by Jim Highsmith and Sam Bayer in the early 1990s. It incorporates the principles of continuous adaptation, i.e., adapt to change and not fight against it. Adaptive Software Development uses a dynamic development cycle known as Speculate, Collaborate, and Learn. This cycle is dedicated to constant learning and intense collaboration between developers and customers due to the constant change in the business environment.

Adaptive Software Development (ASD)

 

Unlike most Software development methodologies which use a static life cycle i.e., Plan-Design-Build, ASD offers a non-linear iterative life cycle, where each cycle can iterate and be modified while another cycle is being executed.  It points towards Rapid Application Development (RAD), which emphasizes development speed to create a high quality, low maintenance product involving the user as much as possible. The main characteristics of ASD are:

  1. Speculate: This is the initiation phase of the project where it is necessary to establish the main objectives and goals of the project by understanding the limitations (risk areas) with which the project operates.
  2. Collaborate: This is the phase where most of the development is centered, maintaining co-ordination between teams that ensures what is learned by one team is communicated to the rest and does not have to be learned again by other teams from scratch.
  3. Learn: The last stage ends with a series of collaboration cycles – the job is to capture what has been learned, both positive and negative. This stage is critical for the effectiveness of the project.

“In an agile project the team takes care of the tasks and the project leader takes care of the team.” – Jim Highsmith Click To Tweet

Dynamic Software Development Method (DSDM)

Dynamic Software Development Method (DSDM) was developed in the year 1994 by a group of vendors and experts in the field of Software development. DSDM focuses on Software projects that are characterized by tight budgets and schedules. It focuses on frequent delivery of product cycles, and development is iterative and incremental.

Dynamic Software Development Methodology (DSDM)

With Dynamic Software Development Method (DSDM), one can design a roadmap of early and continuous deliveries for the project, implementing an incremental solution, adapting from the feedback obtained throughout the process, and checking that the expected benefits are being met.

DSDM is an agile model that can undoubtedly help organizations that are used to working on projects to change their mentality and way of working to improve their capacity to deliver value and reduce time to market.

Feature Driven Development (FDD)

Feature Driven Development (FDD) methodology is mainly oriented for larger teams with more people than those to whom other agile methodologies such as Scrum are normally applied. FDD was developed by Jeff De Luca and Peter Coad in the year 1997. This methodology focuses on short iterations, which allow tangible deliveries of the product in a short period of time (2 weeks).

Projects with multiple teams and a large number of people represent the challenge that not all will be equally talented and disciplined. FDD includes specific activities that help address communication challenges and coordination of such projects.

Feature Driven Development (FDD)

FDD is a 5-stage process, the first 3 of which are sequential and the final two stages are iterative (as shown in the diagram above). All agile methodologies follow a series of principles that make them resemble each other. FDD, however, offers solutions on how to organize the team and how to program the code, which makes it especially viable for large development teams building complex software.

One of the most popular books on the FDD method was published by Stephen Palmer in 2002, titled “A Practical Guide to Feature-Driven Development“.

Kanban Method

The Kanban Method was defined by David Anderson in the early -to-mid 2000s, in response to some of the challenges of the various Agile methods, especially Scrum.  These methods, while trying to solve the challenges of traditional/ waterfall methods, became victim to some of the same challenges themselves.

The 2-3 week sprint cycle became too long to wait for many business contexts, the changes required in organizational structure (new roles and responsibilities) and a project management/ planning processes put too much strain on organizations, and many teams found themselves not meeting even sprint-level commitments of scope and quality.  For most organizations, implementing these methods became very disruptive.

Kanban Agile Methodology

The Kanban Method was defined as the opposite of that – a non-disruptive evolutionary method for improvement, that ultimately enables teams to deliver continuously instead of in time-buckets of 2-3 weeks, get feedback faster and reduce the lead time to deliver value to the customer.

Kanban is a visual system for managing work as it moves through a process. Kanban visualizes both the process (the workflow) and the actual work passing through that process. The goal of Kanban is to identify potential bottlenecks in your process and fix them, so work can flow through it cost-effectively at an optimal speed or throughput.

Kanban is defined as a highly effective and efficient production system. The origin of the Kanban methodology lies in the “just-in-time” (JIT) production processes devised by Toyota, in which cards were used to identify material needs in the production chain. You can learn more about kanban here: https://www.digite.com/what-is-kanban/

Behavior Driven Development (BDD)

Behavior Driven Development (BDD) is a behavior-oriented agile development methodology. It was created by Dan North in 2003 as an evolution of the TDD methodology. Dan North aimed to bring non-technical people together in the process of creating the system’s technical functionality. It happens that when we develop software, we involuntarily fail to include business concepts present in the functionality, resulting in a possible flow for recurring and even serious bugs.

Behavior Driven Development (BDD)

Source: Johnfergusonsmart.com

BDD uses universal language concepts that encourage collaboration between people with or without technical knowledge in a software project. The BDD development process is based on writing test scenarios and features. These contain the requirements and acceptance criteria for the system behavior. It tells you what the functionality needs to get started, what it will do next, and what the results will be after it is executed.

BDD helps teams more accurately communicate requirements, discover defects early, and build software that remains sustainable over time.

“Effective communication is 20% what you know and 80% how you feel about what you know.” – Jim Rohn Click To Tweet

Summary

There are a variety of different models and development methodologies based on Agile principles. In recent years, there has been a growing list of organizations who credit the methodology with its success. Some of the biggest names in media, technology, finance, and even some National Government agencies have adopted and praised the efficiency of Agile.

Are you ready to become Agile? Digite offers a wide range of products for enterprise Agile transformation.

Get in touch with us and we will help you with the transformation.

Life is Good When Your Agile Teams Are in Sync!

Contact us Today for a Custom Demo of SwiftEnterprise!
Or Signup for updates below.

Top