avatarRuchi

Summary

The article "Understanding the Principles behind Agile Manifesto — Part 2" delves into the last six principles of the Agile Manifesto, emphasizing the importance of working software, sustainable development, technical excellence, simplicity, self-organizing teams, and continuous reflection for improvement in Agile software development.

Abstract

The text is the second part of an article series that explores the Agile Manifesto's principles. It underscores that Agile transformation should focus on improvement and adaptation rather than blindly adopting new tools and methods. The article elaborates on six key principles: working software as the primary measure of progress, sustainable development pace for teams, continuous attention to technical excellence, simplicity as a means to maximize work not done, emergent architectures from self-organizing teams, and regular team reflection for effectiveness. It argues that understanding these principles is crucial for delivering value and maintaining high-quality standards in software development. The author uses analogies, such as marathon running, to illustrate the importance of sustainable practices and emphasizes the role of self-organizing teams in producing the best results. The article concludes by advocating for continuous improvement and collaboration as core Agile values.

Opinions

  • The author suggests that Agile transformation is often misunderstood, with organizations focusing on tools and trends rather than on genuine improvement and adaptation.
  • Success in Agile projects is measured by the delivery of working software that provides value and can be tested by end-users, not by the time spent on planning and design.
  • Agile processes should support a sustainable pace of development, avoiding burnout and ensuring long-term productivity, much like a marathon runner paces themselves for the entire race.
  • Technical excellence and good design are crucial for agility and should be continuously nurtured to prevent the accumulation of technical debt.
  • Simplicity is an art that involves prioritizing essential features and eliminating unnecessary work, which aligns with Lean-Agile principles of eliminating waste.
  • The best designs and requirements emerge from self-organizing teams that are trusted and empowered to make decisions, reflecting the belief that skilled professionals know best how to accomplish their goals.
  • Regular reflection and adaptation are vital for teams to become more effective, with Agile methodologies encouraging empirical learning and short feedback loops.
  • The author values the role of empiricism and predictability in software development, which Agile practices help to enhance by reducing uncertainty and fostering a culture of continuous improvement.

Agile

Understanding the Principles behind Agile Manifesto — Part 2

This article describes the last six principles of the Agile Manifesto

According to the current industry trends, Agile Transformation has become a hot potato, in blindly adopting new tools and methods rather than laying focus on improvement and adaptation. Only if one understands things right, they start doing the right things.

In order to brush through the basics, I have written the article in two parts, Part 1 features the first six principles of the Agile Manifesto, and this article features the remaining six.

Table of Contents · 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 behaviour accordingly.

7. Working software is the primary measure of progress.

What is the success of the project that has spent 6 months in the planning, detailing and designing of the requirements with no value produced? And what happens if the industry demands change after 6 months? Will the stakeholder be satisfied with the amount of time and effort invested, without any working software delivered?

The success of a project cannot be measured if one delivers a piece of code that neither adds any value nor could be independently tested by an end-user. According to Lean methodology, a partially complete feature is a #1 waste and should be eliminated immediately. In Agile terms, the primary measure of progress is working software that is frequently delivered and iteratively adapted, in order to satisfy the customer. Hence, a potentially shippable increment forms a part of delivery, which is the primary measure of a team’s progress.

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

A marathoner needs to maintain a steady pace from the start, to be able to cross the finish line without any injuries and exhaustion. Any attempt to sprint in the initial stages enervates in the end and is unable to sustain the pace indefinitely. It's only after frequent training sessions, good nutrition, a well-rested body, and a steady pace, the timing gets better and more predictable.

Image by PNGix.com

Similarly, software development teams start a new iteration immediately after completing the previous iteration, which means they’re continuously working and hence cannot put their utmost power and energy in one go, they’re running a marathon. More effort, less nutrition and no rest results in burnout and poor quality run. Similarly, Agile processes help the team maintain a steady pace by avoiding overcommitting, burnout and scope creep. In order to develop a high performing team, we must promote an environment where the team are accountable for the final product and not just one individual.

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

Building the right thing is as important as building them in the right way. Agile emphasizes software development like craftsmanship, rather than a series of similar tasks. Paying close attention to technical design and excellence in every stage helps in the evolution of the product. Fragile systems which break easily with the smallest code change is a good leading indicator of the system flaw. Over time, the software accumulates technical debt, and it eventually becomes a challenging decision to trade off the balance between, building the right things vs building it in the right way. It is best to get the right equilibrium in delivering the technical debts as well as the features that add value.

Building a good customer experience does not happen by accident, it happens by design. — Clare Muscutt

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

Create an extraordinary feature that is useful to customers than create unwanted features which are barely used by anyone.

More features make the software more complex, and complex codes are difficult to test and maintain. The code gets costly and ROI turns negative if it is maintained but unused. Lean-Agile points out one of the important principles — Eliminating waste. For example, in Scrum, waste is eliminated by prioritizing the backlog and delivering only the valuable/essential features every iteration. To maximize the outcome, you need to maximize the amount of work not done, eliminate the least valued features.

The essence of strategy is in choosing what NOT to do. — Prof. Michael Porter

Being Agile helps the team in identifying the items that do not add value to a product by prioritization techniques. During backlog prioritization, it is essential to answer these questions — Is the problem this product aims to address, one of the most significant problems to be addressed? And — if the issue being addressed is most significant, is the product the best way to address it?

There is nothing as wasteful as doing efficiently something which should not be done at all.

It is essential that we understand the cost of not doing something as well as the value of doing the right thing. High performing and productive teams do not waste effort on anything that doesn’t deliver sufficient value.

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

Steve Jobs once said, “It doesn’t make sense to hire smart people and tell them what to do; we hire smart people so they can tell us what to do”.

When teams are trusted and empowered to control their tasks and goals, self-organization evolves. A group of people who manage their own work and decide within themselves who performs what tasks, in order to accomplish a goal, are the true essence of a self-organizing team. As General Patton says,

Never tell people how to do things. Tell them what to do, and they’ll surprise you with their ingenuity.

The best decision-makers are the ones who perform the tasks and know the cause and effects around them. In Agile processes, the development team estimates the work rather than the stakeholder or project manager, who usually dictate the estimations and impose deadlines in traditional management practices. Cross-functionality within the team prevents bottlenecks and improves predictability. Trust and communication also play a vital role in the success of a product.

Image by PNGix.com

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

Agile does not mandate any specific processes but supports experimental and empirical learning. Shorter feedback loops is a by-product in an iteration based development. The quicker you fail, the faster you learn and adapt. With every iteration, ideas are discussed, processes are altered and innovations are rendered. It is important to retrospect on what has been done, what needs doing better and improving on the lessons learnt. The team will gradually evolve and improvements emerge as a natural by-product. Agile advocates continuous improvement and collaboration. Software development is full of uncertainty and ambiguity. Agile helps in reducing uncertainty levels by promoting empiricism and predictability.

12 Agile Principles illustrated by Ruchira Parchur

Agile is a journey, not a destination… With innovation in technologies, culture and management styles, eventually, every process goes through a series of transformations and Agile is one of those.

If you loved this article, how about sharing it with your friends and colleagues too? And if you would like to support me further, join Medium today. By using my referral link or buying me a Coffee, you support me in continuing to write & share on this platform.

Thank You for helping me pursue my writing passion!

Follow my work > LinkedIn | Instagram | | Medium

Agile
Scrum
Leadership
Management And Leadership
Product Development
Recommended from ReadMedium