Embracing Pragmatism in Agile: A Stronger Approach

I’m currently on a break between job contracts, and preparing for interview questions. This has  set me thinking about  the dreaded interview question, “What is your greatest weakness?”.

To be honest, I haven’t been asked this question for a long time, but it has been a useful reflection point. Let me explain:  

My greatest weakness: I can be too pragmatic

Being too pragmatic means that I sometimes accept less-than-perfect solutions to keep product delivery moving, where if I held out for a better fix, the problem might get resolved rather than leaving me stuck with an imperfect situation for longer.

Looking at this concept and turning it over in my head has been really interesting, because surely rather than a weakness, this is actually a strength?! I would rather be pragmatic and get things done, than idealistic and slow down delivery. Especially in Agile Software Delivery when the correct way to do things can be a matter of opinion anyway.

This is just another way of rephrasing the ” one size does NOT fit all” mantra when performing Agile Transformations.  The methodology needs to be tailored to fit the situation, and rigidly following a plan for the sake of it should be avoided. I’d go further, however, and advocate to push this to the extreme and even mess with some of the sacred ceremonies and practices of Agile SDLC.

Pragmatism in action

Example 1

I have recently had someone outside of the team challenged me on the fact that my team rarely completed their iteration commitment and sometimes rolled over 50% of their commitment into the next iteration. This person wanted the team to commit to less work to resolve this problem. I can see the benefit of having a strong commitment from the team which is delivered say,75% of the time. However, to do this by slowing delivery down would be a mistake in my view.

The over commitment issue was caused by three factors –

  • Requirements from the product team were created too close to the iteration start date and a technical solution wasn’t created before estimation
  • The QA team were not  sufficiently organised (resourced)
  • Team members were reluctant to share tasks

If we only focus on the team overcommitting without addressing the root causes, delivery will slow down. It’s more effective to fix underlying issues first, then apply the Scrum framework as intended.

However, on the flip side, because we continued to ‘make do’ there was little incentive for the product owner, QA and developers to change.

We had a really tight customer delivery date, and we needed to make progress, and I had included these inefficiencies in the team pace within the scheduling plan. So, in this situation my pragmatism enabled things to get done where an idealistic mindset of “stick to the methodology”  would have slowed down delivery.

I would rather be pragmatic and get things done than idealistic and slow down delivery

Example 2

I was a Scrum Master for a team where the requirements for an iteration from the product team were one line, actually just a title.

Did this cause issues? Yes. Development took longer, there was functionality missing, testers took longer to test, rework was required.

Did we make progress? Yes.  And we learnt lots too, about what the product should do, what the testers needed, what the team needed.

If I held the “Ready for Dev” line and made the Product team go away and work out their exact requirements, we wouldn’t have got those learnings.

It took six months and a lot of follow-ups to get our tasks clearly defined. If I’d have rejected the poorly defined tasks in the first sprint, we could have resolved this in one month and sped up from month two, but it would have cost me goodwill with the product team at the same time.

So, rather than putting barriers up to this project at the beginning I made sure the team just rolled with it, and the project was delivered to the requirements.

On balance I think it is better to progress than stand firm.  

How to run a pragmatic Agile project

In order to be pragmatic in your Agile process, pretty much everything is up for grabs in the debate about what is actually required. How about trying these:

  • Daily Meetings – Don’t meet daily. If the team still deliver, meet once a month, or three times a day, or never! What ever helps your particular team get through their particular project.
  • Sprint Planning – Don’t do planning as a team. Do it individually, or the product owner decides.
  • Backlog grooming – Never do it if the tasks are simple or the product owner is always available to discuss the requirements.

Don’t get me wrong, I don’t recommend doing any of these! Some of them made me feel terrible for even writing them down, but if they work for the team and it means you deliver value to your users faster – do it!

However, I have 2 non-negotiables

  • Inspect and Adapt – You have to do something with the team that reviews performance and generates actions to improve the team at the end of every iteration, otherwise how do you know things are working?
  • Review progress with Stakeholders – You have to demonstrate work completed to the stakeholders otherwise how do you get feedback, learn and plan the next steps?

My actual greatest weakness?

I am colour blind. At school, I once coloured in the oceans on a map bright pink. I can still hear the teacher laughing – it was the ‘80s!  

Have fun colouring outside the lines!

Intelligent Failure

I was watching a video of Jonathan Smart talk about his excellent book Sooner Safer Happier and something he said jumped out at me:

“We want intelligent failure”

Intelligent failure, he explains, is a failure that is:

  • Quick
  • Cheap
  • Unique

Failure is not intelligent if you have spent a lot of time and money and/or you have made the same mistake several times already (doh!).

MJH SHIKDER

This is a great concept – making a mistake is not bad as long as we do it quickly, cheaply, learn from it and alter our approach next time. In fact, in her book, The Right Kind of Wrong, Amy Edmondson suggests companies should actively seek to make mistakes in order to use the lessons learnt to make strategic decisions.

Agile and failure

Guess what? Scrum and the general Agile methodology provide the tools to ‘fail intelligently’ in the inspect and adapt principle!

An iteration retrospective provides the opportunity to identify where failures have occurred, learn from them and adapt ways of working accordingly.

The next time you do a retrospective, ask the team where they have failed specifically rather than the usual Start, Stop or Continue topics. Why not ask the team to identify some experiments they can do which are likely to fail so that lessons can be learnt quickly and can be used to make decision on how to continue the work.

I would suggest that you also broaden it to be company-wide and ask the management team to do the same. Failure is not negative when it can be used to drive the company forward.

Photo by Miguel Bruna

Further Reading

If you are interested in reading a bit more on this topic, these two books and in-depth article would be a great place to start:

The Right Kind of Wrong

Amy Edmondson’s book, The Right Kind of Wrong is recommended by Jonathan Smart and is an excellent book on business practice, which I promise I won’t fail in finishing.

Amy describes how leaders should create a culture that supports healthy risk-taking. Leaders should model transparency about their own failures and create an environment that values honest discussions about mistakes. This creates psychological safety which will enable using failure as a step toward growth.

Nurturing innovation through intelligent failure: The art of failing on purpose

This in-depth article describes how traditional failure is viewed as an unfortunate outcome that organizations either learn to live with or try to avoid. The authors, Narduzzo and Forrer, argue that there’s an alternative way to view failure: intelligent failure, failure that is designed and executed intentionally. This approach allows organizations to explore unknowns, test unvalidated assumptions and learn what to do next.

Narduzzo and Forrer propose the following systematic model for intelligent failure:

  1. Identify Assumptions – Start by questioning the assumptions behind your current knowledge. Which ideas, technologies, or beliefs are you taking for granted?
  2. Design the Experiment – Structure an experiment that will either validate or challenge these assumptions. The key here is to design it so that failure is a real possibility—this means avoiding low-stakes, “safe” experiments.
  3. Learn from the Outcome – Whether the experiment succeeds or fails, it generates valuable insights. If it succeeds, you confirm the current understanding. If it fails, you gain insight into why the existing knowledge or assumptions might be flawed, opening up new perspectives.
  4. Revise Knowledge Systems – Use these insights to update and improve the organization’s knowledge base, allowing it to adapt and prepare for further experimentation.

Sooner Safe Happier – Antipatterns and patterns for business agility

I mentioned this book at the top of the blog post. Written by Jonathan Smart, it is one of the business books I most frequently refer back to.

Smart describes a series of patterns and anti patterns which he has learnt from implementing the Agile Methodology in over 40 organisations.