An Overview of Agile

Definition

No unified definition of Agile.

The term ‘Agile’ was created in a meeting sited by a group of software developers in 2001. They only produced the Manifesto for Agile Software Development, whereas did not explain what ‘Agile’ means. “The only concern with the term agile came from Martin Fowler (a Brit for those who don’t know him) who allowed that most Americans didn’t know how to pronounce the word ‘agile’“, Jim Highsmith noted this interesting story in History: The Agile Manifesto.

As mentioned above, 17 ‘independent thinkers around software development‘ came together to talk, ski, relax and eat on February 11-13, 2001. But after this small conference, they had done a landmark work that found an alternative to the traditional heavyweight, document-driven processes and produced the Agile Manifesto at the end. Today, ‘Agile’ is very broad and is interpreted in the agile community in several different ways. For instances, AgileAlliance defines Agile as ‘the ability to create and respond to change‘; ScrumAlliance suggests that ‘the term agile describes a specific set of foundational principles and values for organizing and managing complex work‘. And as far as I’m concerned, Agile is a set of ideological values that can not only improve productivity but also contribute to a better working environment compared to the traditional development methodology.

On the other hand, I do not agree with some basic views of Agile. For example, the author of The Agile Samurai, Jonathan Rasmusson, presents a definition of agile in website Agile in a Nutshell as ‘Agile is a time-boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end‘. In my view, Agile should not be seen as the Scrum framework (a time-boxed, iterative approach to delivering software), which is just one of the well-known Agile frameworks! Moreover, we can see that there are also many well-known behaviours, concepts and techniques associated with Agile frameworks, while they only can be represented as being part of the Agile way of working, instead of the Agile.

Manifesto

The symbolic output emerged from the meeting and signed by all participants was the Manifesto for Agile Software Development, or the ‘Agile manifesto’ as it is more commonly known. It should be emphasised that the meaning of the final two lines of it is crucial to understand: it is a case of the relative importance of the values, and not a case of ‘good’ or ‘bad’.

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.

Principles

Another output from the meeting was Principles behind the Agile Manifesto. The keywords of each principle have been highlighted in my own mind.

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

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

3. Working software is the primary measure of progress.

4. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

5. Business people and developers must work together daily throughout the project.

6. Build projects around motivated individuals, give them an environment and support they need, and trust them to get the job done.

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

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 maximising the amount of work not done, is essential.

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

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

Features

As presented above, Agile has not been defined in a specific and unified way, while there are many mindset (behaviours or values), concepts (fundamentals) and techniques (practices or tools) that are treated as being part of the Agile way of working. There are some examples of them (obviously, not all of them) shown subsequently as follows.

Mindset (Behaviours)

  • Customer-focused
  • Embracing change
  • Being collaborative
  • Self-organising
  • Empowered
  • Trusting not blaming
  • Respect each other
  • Being confident
  • Empiricism
  • etc.

Concepts

  • Prioritising what is delivered
  • Not delivering everything
  • Communicating continuously and clearly
  • Working iteratively and incrementally
  • Continuous integration
  • Limiting WIP (Work in Progress)
  • Time-focused
  • Inspection and adaptation
  • Kaizen
  • etc.

Techniques

  • Timeboxing
  • Backlogs (Product and Sprint)
  • User stories
  • Planning poker
  • Burn charts
  • CFD (Cumulative Flow Diagram)
  • Retrospectives
  • etc.

Frameworks

It is an interesting fact that some processes, approaches and frameworks focusing on improving iterative and productive capabilities had been created and applied in practice before the term ‘Agile’ created (in 2001), such as XP (eXtreme Programming), Scrum, DSDM (Dynamic Software Development Method), ASD (Adaptive Software Development), Crystal, FDD (Feature-Driven Development), Pragmatic Programming. And actually, Agile was initially introduced by the representatives of these frameworks above, so that they are all included in the family of frameworks being agile basically. Although Agile and most frameworks of it were originally applied in the software development domain, some of them have been recognised as successful frameworks beyond software development nowadays. In addition, there are also some commonly known hybrid approaches having been used in more challenging situations.

There are some typical frameworks in the Agile frameworks family introduced as follows.

widely-used

  • Scrum. The Scrum Guide defines Scrum as ‘a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value‘.
  • Kanban. A method to improve flow and provoke system improvement by visualising the workflow and limiting work in progress.
  • Lean Startup. It is a methodology for the development of businesses and products aimed at shortening lifecycles of product development and discovering the viability of the proposed business model quickly. Lean Startup approach was originally employed for starting up companies, while now is applied to any business.

IT only

  • DevOps. A collaborative approach combining the work and even the teams of software development (Dev) and information-technology operations (Ops), which aims at creating a product or service through shortening the systems development life cycle and providing continuous delivery with high software quality.
  • XP. It stands for eXtreme Programming that is an iterative software development methodology focusing on improving the quality of software products and the capability of responding to the requirement change. XP can be employed solely while commonly used in conjunction with Scrum or Kanban, where XP involves software development and Scrum or Kanban is utilised for the management of work as an overall structure.
  • SAFe. It’s the abbreviation of Scaled Agile Framework. SAFe is an application used to guide the organisation proceed to work with sufficient size or level of difficulty in scaling lean and agile practices.

Hybrid

  • Scrumban. It is an application Kanban where the underlying process is based on Scrum. This combination, a mixture of the structure of Scrum and visualisation of Kanban, enhances the ability to adapt and respond to change without being overburdened.
  • PRINCE2 Agile. PRINCE2 Agile is the world’s most complete agile project management solution, combining the flexibility and responsiveness of agile with the governance of PRINCE2. This approach provides a solution for managing the holistic project process by blending the strengths of PRINCE2 and Agile, that concentrate on the areas of project direction & management and product delivery respectively. It should be noticed that unlike other agile frameworks, PRINCE2 Agile are only suitable for use on projects.

Agile Today

Agile is Trending

Agile has become more popular in software development contexts. “Looking back over the years, it is incredible to see the changes and additions to the report, as Agile adoption has grown and evolved“, CollabNet VersionOne suggests in its blog based on the released 13th Annual State Of Agile Report. The report collected and analysed the information of states of agile from 1,319 responses around the world. It points out that 97% of responses that now use agile are listed in the report. Nonetheless, only 22% of respondents say that their teams are agile, 26% more than half and 48% less than half. One remarkable benefit coming from adopting and implementing Agile is ‘Accelerating software delivery’ (74%). And there are many advantages that can be seen, such as ‘Improving team morale’ (34%), ‘Reducing project risk’ (28%) and ‘Better managing distributed teams’ (19%). The result also indicates that a 71% rise in ‘Reduce project cost’ compared with the previous year is the key explanation for agile adoption.

In regard to the domains beyond software development, Agile has made a significant impact as well. KPMG has released Agile Transformation – 2019 Survey On Agility with responses from more than 120 participants from 17 countries. The survey shows that more organisations are aware of the term Agile according to ‘Agile being scaled with 70% of respondents indicating an ambition to integrate both Business and IT-enabled Agile transformation in the next 3 years‘. Agile is trending!

Agile is Dead

Just like Agile born, when the influence and popularity of a new method continue to rise, it may always bring opposed opinions. These theories against agile are not just derived through theoretical derivation or guessing, but come from the feedback and experience gained by using agile in practice. The tendency of anti-Agile has increased with the influence of Agile. This situation emerged from the birthplace of Agile and has now occurred in many countries and industries. The earliest and the most famous event of anti-Agile is the presentation Agile is DEAD by Dave Thomas, one of the creators of Agile Manifesto. He illustrates that nowadays “Agile” has been defined as the practice of recklessly performing a set of rigid rules and bureaucratic procedures. However, the original Agile means “break all the rules”, while delivering high-quality products, do the most valuable work in a specific environment to achieve the highest production efficiency.

Agile is not what you do.

Agility is how you do it.

And what do you think?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.