Software fraternity is abuzz with a word “Agile” for over a decade now. Every team is becoming an Agile team. But, how many of us do really understand what Agile or agility is?
Recently finished reading “Software in 30 days” by Ken Schwaber and Jeff Sutherland. There is a great definition about agility, which is as follows:
Agility is one’s ability to take advantage of an opportunity taking into consideration involved risks.
– Software in 30 days
How often the teams are actually focused on taking advantage of opportunities that are posed to them and how often they are focused on simply following/doing certain practices that they think are going to make them Agile. In my personal experience the later is more common than the former.
I have seen teams slogging off to ensure that their code coverage is above a given threshold without even having a focus, if it is going to add any advantage to the business or not. I do not say that quality of code is to be overlooked but where to put emphasis; what should be the priority, needs to be made more clear.
Looking back at the manifesto for agile software development, being agile is to adhere to a set of values and principles; wherein every value and principle is focused on delivering value to the business.
If we just look at the first three principles behind the manifesto for agile software development:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months with preference to shorter timescale.
it is quite evident that the focus of the team is to make sure that customers are benefited with the software that is being created.
In real world, although, it seems that is not the case. Teams are more focused on building the stuff, following the practices without even understanding the principles behind the practices. I am not sure how many times you might have heard statements like the following:
- My code is 100% covered with unit tests…..but it is not yet in production.
- We have a CI/CD pipeline set up till the acceptance environment.
- Our team is cross-functional but sometimes we have to wait for the UI/UX because this person is on contract and is available only two days in a sprint.
- Our PO is very busy with stakeholders, he is available only for Sprint planning and Review.
- We have a thorough suite of test cases, yet we do not know how always there are live defects coming back to us.
and so on…… I come across them quite often.
This state is going to continue as long as we(teams) simply keep following processes overlooking the principles.
More than the just following a set of practices; agility is more of a shift in the behavior, the mindset. Agility is all about embracing the change. Agility, thus, is more of behavioral change in the people and not much about the practices to follow, tools to use.