Browsed by
Tag: agile

Where Do We Go Wrong With Agile

Where Do We Go Wrong With Agile

A few days ago I published this blog mocking the ‘Ceremony Focused Agile’ teams. But it is pointless to state what one thinks is not right, without also commenting on what one thinks is right! So let us do that today. Here is a conversation, which I am sure many of us have witnessed (or been part of):

A: “I have assigned a ticket to you, what is the status of it?”

B: “”Ticket, what ticket?”

A: “It’s in JIRA, check your board.”

B: “Okay, but what is it about?What is the context?”

A: “It’s in JIRA”

B: “huh?”

In Agile teams, people believe in using JIRA to track their work, hours spent, communication / discussion about a feature, proposed features, discarded features, its this amazing one-stop shop for all Agile stuff.. What a tool! (pun not intended!) We are told that using JIRA helps us track time, keeps everything organised, ensures no one can go back on their words or commitments. Which is true, using a single, capable tool for tracking everything related to a task would ensure that everything that happened in the context of a task. But let us not mistake using JIRA as practising Agile.

Agile Manifesto

Agile manifesto states in four, very clear and concise statements:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

Yet, the reality is that these statements are understood by everyone differently. Some folks took away a different meaning from the word Agile itself, some did from the manifesto. Over time certain practices appeared, which seemed to work for certain use cases effectively. And many of us seem to have assumed their success is absolute, and expect them to work outside of the teams they were successful in.¬†Somewhere we forgot, every team is different, so is agile for every team. It is certainly not a set of ‘mandatory rules’ that apply to every team the same way.

Then What Is Agile

AgilE to me is AtoE, or ‘Adapt to Evolve’. All the statements in the manifesto promise that when you change focus from tools/processes to people, from documentation to software, from contract to customer and form fixed plan to flexible plan, you will be able to evolve to match market needs and deliver a successful product. But then, how do we do it? Does it mean that we should stop using all tools/processes? Or signing contracts? Certainly not, these things are still important, but there is only so much that they can do. The manifesto tries to bring priority to them, stating that a doing is more important than planning, recording and tracking. That does not mean these are unimportant, but only that they are of less importance that the action itself.

When we put focus on people, and reduce the importance of processes and tools in the day to day life of these people, they interact more and better. This interaction results in better understanding and integration of the team itself. This results in better delivery. There is no tool that can match a person to person interaction. I understand, the interactions at times may not be face to face, but people have always communicated better when they talk than when they write. ‘Intent’ is always difficult to convey in writing, writing lacks tones. Also, these tools are asynchronous, adding further delays.

In the words Working Software, ‘working’ I believe is the important term. Working does not just mean ‘able to execute’, working means software fulfilling its purpose. A software is built to address a problem statement. As time passes the problem statement evolves, may be to adapt to the market, or to the changing landscape, or to fill a niche, but always with the intent of making solution more relevant. And hence the definition of ‘working’ keeps changing. And so the software should too. A Software is a way of specifying the requirements. This specification is a set of instructions, given to a machine to perform an algorithm, in a way that they can be clearly understood by others contributing to the specification. Also, if the software is supposed to replace the comprehensiveness of the documentation, without impacting the intended purpose of the documentation itself, then the same job must be done by the software equally well! In other words, the specification i.e. code, should read like a documentation! Now these, I believe constitute the ‘working’ of the software.

Engaging with the customer helps teams better understand their perspective which reflects in software. Contracts are required to ensure the business aspect of the software development, but they should not be a hindrance to value creation. The first and foremost job of an Agile team is to bring value to the customer, also referred to as Stakeholder. In the rawest of terms, it is more important to see if and how a task being done will bring value to the customer than looking for a way to create a new Change Request. ūüėČ Customers in software services industry are mostly external to the company or team and so collaboration becomes all the more important. In poetic terms, it is important to think of the software as ‘for us’ and not ‘for client’, and involving the customer aids this thinking.

It is a bit cliche to mention this, but ‘Change is the only constant’. There is no defined long term plan that can be executed exactly as expected, especially when the definition of ‘working’ itself is so prone to change. We can define a direction, and end goal, but we cannot define strict plan and even if we could, not sure it would help the changing context, except when ‘change is the plan’! Being able to incorporate change is the primary goal of an Agile team. Interestingly, when comparing different Agile frameworks you can see that one of the most important differentiating factor is the ‘frequency at which to expect change’. An Agile¬†team should be ready and open to change than being strict about adhering to a plan. There are still plans, but in much smaller scale.

The Unsaid Requirements Of Agile

With all the points above, agile is said to give control to the team. An overused, always misunderstood term, “giving control”. And what does it mean? The ability to start or stop something, the ability to take decisions and executing them, that is control. Now I wonder, is it possible to give control, without having ‘trust‘? I do not see it possible,¬†ever to do so. Would you ever give control of your car (project execution) to someone and ride along, without first trusting them to¬†(intentionally or unintentionally) not kill you? Not possible. Traditionally, the management has always enjoyed this control. They have always believed that them making the decisions and team obeying and executing them is the right way. Agile requires them to relinquish this control, and it is certainly not going to be easy unless they trust the team to do the right thing.

So, the ‘management’ of an Agile team needs to first trust the team.

Now, would you trust a driver with no driving skill? Nope! The team needs to have the skill to make right choices, execute and deliver. Without this skill it is not possible for the management to trust the team. and without trust it is not possible for a team to be Agile.

An Agile team needs to have the required skill-set to make the project a success.

Would you trust a skilled, but irresponsible driver with your car and life? Would you trust a skilled, responsible yet unwilling driver, to take you to your destination? Certainly not, you and your car might end up in a ditch with the driver unscathed will move on to drive a different car! (analogy!) It is irrelevant if the driver is skilled, unless the driver is willing to take you to your destination, her skills are useless. The goals must align.

An Agile team must believe in the same goal as the management, must be willing to do what is needed to get there.

I always see the last requirement as a bit tricky. Why would a team of skilled, free-thinking individuals believe in someone else’s goal? This is where the ‘people interactions’ come in. It is not going to happen unless the team trusts the management to do right by them. Ah, it’s a game of trust, skill and will. There is no Agile without these. These assumptions should have been recorded somewhere, because this is the part that many teams and many traditional managers fail to understand. What this results into is a ceremony we like to call Agile.

The Ceremony

There are many ‘frameworks’ of Agile. Many different ways that can help you implement the manifesto better and they have different guidelines, like all thought-processes do. But these are guidelines, not rules. They cannot be forced on an unwilling team to beat them into being Agile. The core concept of Agile is that the team decides the practices they want to follow, in which form, to identify flows and improve on them. (Remember, we have already trust that the team is skilled and is willing to do right by this project.)

When we see meetings, call timings and statements forced upon team, they become mere ceremony, they lose their meaning, purpose and the result is a failure. A failure to achieve the goal, failure to build the team and a failure of the practice itself.

There are certain tools and practices though, that explained as being a part of Agile. These again are not rules, but arise from the need to respond to change rapidly. We need to deliver fast, and to do that. we need faster verification of software hence the need for Continuous Integration. To be able to deploy fast we need Continuous Delivery, so the artefacts are ready to go live, daring teams can even try Continuous Deployments. To deploy fast, we need¬†to make the provisioning and configuration of systems automated and simplified, hence the need for DevOps. A car can go only as fast as the breaks can allow, so to deliver fast we also need to be able to revert fast, hence the need for artefact repositories and blue-green deployments. We need to change the specification quickly and hence the need to verify the specification at granular level, hence the need for Unit Tests. Since we are so focused on time, we should write specifications only for what is required, hence the TDD/BDD. Since the specification’s job is to convey intent to others, we need to have more than one person on the team who can understand the code, and to save time and effort, we have Pair Programming. Again, just following such does not make you Agile, similar to how not following some of them does not make you ‘not Agile’. Using Jenkins/GoCd, JIRA, Artifactory/Nexus etc tools does not make you Agile, and not using them, for a better alternative your team has established which allows you to act faster, does not make you ‘less Agile’.

And many other terminologies you would hear in Agile, know that are not part of the specification or requirement or some rule. Some of these things may help you be Agile, but the Agility is always in the context of what your team thinks is necessary to achieve the goal for your Customers.

The Markers

Enough theory, how do I tell if my team is Agile? Well, I have tried to build a list of markers that I have seen in non-agile Agile teams. Now this is certainly not an exhaustive list, and it is certainly not a rule, but indicators that can help identify the ceremony than agility.

  • You have a “manager”.
  • Your manager/scrum master, or someone ‘assigns’ you ‘tasks’, rather than you picking them.
  • This someone asks you for ‘status’ in your daily meetings. This is a bit tricky, remember you have control, and so you have responsibility to convey the status of the work you picked. It might be a failure on your side or management’s.
  • If your team has members reporting to different people, not in hierarchy.
  • If you learn about your tasks only via a tool, and also report via a tool.
  • If you prefer a tool or email over talking/quick calls when you need to discuss with your team.
  • If you have to jump through hoops and cc ten people to be able to talk to the customers.
  • If your productivity is measured solely in terms of ‘tickets’ fixed or moved.
  • If you as a team never meet to discuss what can be improved or you conclude that nothing can be!
  • If you do not know what others in your team are working on, blocked on and you are not helping to unblock them.
  • If you as a team are not driving to complete the goal of the iteration as a whole, and instead focus on finishing your work alone.
  • If you as an individual are not learning any new skill required by your work or performed in the team.
  • You have not changed the way you are working / following Agile practices in a long long time!

 

Revolutionising Agile With Head-Stand-Ups

Revolutionising Agile With Head-Stand-Ups

So here’s a true story. I work with a normal sized team as per Agile/Scrum guidelines, about 8 people. We have our usual stand-ups every day, at about 10:30 in the morning. As a general rule, people have to join this meeting. Everyone speaks following the Scrum rules, just what is required: What I did, what I am going to do today and if I am blocked. And that’s it. Yet, our discussions diverge, others jump in to help whenever someone mentions why they are blocked, suggesting how it can be solved. It is helpful, it speeds us up in ways because it avoids need for a one-on-one meetings later, and team generally returns feeling the meeting was fruitful.

Yet, it results in our meetings getting extended, we have our stand-ups almost 20, at times 30 minutes long. This is something that has been on our mind for quite some time now, as a general rule, the stand-up should not be longer than 10 minutes, that is why we ‘stand up’, so we realise the time being spent physically, with a minor discomfort and that drives us to close the meeting sooner.

This is when I read about the “plank meetings”. Excited, I suggested to the team and everyone agreed agreed that this could help us reduce the time we spend in stand-up considerably, while giving everyone a healthy boost. We agreed to put it in practice. Now, for those who do not know what plank meetings are here are couple links explaining them. We decided we would start the next Monday, with the next sprint. But destiny seemed to have some different plans. During my yoga session on Sunday morning, it dawned on me that there could be something much more effective than this. It was the Shirshasana¬†that gave me this idea!¬†Shirshasana is an asana in yoga, where you stand on your head and keep the body and legs straight up, like a plank but upside down.¬†This! This could be the thing we need to keep the timings in check.

Now Shirshasana, as a yoga form, has many, many benefits of its own. It is known to direct the blood flow to head and eyes, relieving stress, improving focus, and digestion. But the quality we are looking for most was that it makes us temporarily uncomfortable! Perfect! On the planned day, we started with this instead. There was just one simple rule:

  • No one speaks without first assuming¬†Shirshasana form.

Now you see, there is no rule about when to speak, or who speaks. That is because on the first day we observed that entering this form and exiting from it is not easy, we needed help from others. Meaning it was intuitive that anyone who wanted to speak would have to wait for their turn and to get help from others to speak! This caused a revolution amongst us, we realised that this one change alone has brought us many benefits. Here are our observations:

  • First and foremost, meetings became short.
  • Meetings became fun.
  • Our habits changed to be more healthy. It is not advisable to consume food before performing¬†Shirshasana, and hence we automatically started following better timings for breakfast.
  • Our team found that we were more interactive throughout the day. Somehow activity of helping each-other daily, and needing help from others was turning into a team-building exercise of sort. We may just have saved our company thousands of dollars.
  • More people around us took interest in this seemingly odd practice of standups and that created awareness about health and yoga across the organisation.

We as a team have never been better! Who needs stand-ups when ‘head-stand-ups’ are so rocking!

PS: Reading between the lines is an important skill, for others there are warnings in F12/console.