Agility, Balance, Coordination, and Speed are often referred to as the ABCs of the core skills or fundamentals which underpin the success of individuals in sports. In software development, there is an ever-growing trend for businesses to review their agility in software delivery, however, this article considers the importance that Balance, Coordination, and Speed may play in successful software delivery.
You only need to run a quick search on the internet to find a whole host of articles and a variety of businesses presenting/pushing ideas on how you can ensure agility in your software delivery practices. Unfortunately, the term agile is open to misinterpretation or misrepresentation where we need only consider that there are often references to agile as being a methodology.
Drawing on the definitions of agility in sports, we refer to the ability that an individual has to change the body’s position efficiently. Before the movement towards Agile deliveries, companies struggled with the 'application delivery lag', or a delay from ideation to delivery, which in many cases was over a period of years. This inability to ship quickly meant that companies missed opportunities to capitalize on existing market conditions, but also due to the time and money invested into a project, a company may have found it difficult to make the decision to cancel the project, even though the benefits of the project were not to be realized. Agile therefore became the ability to adapt and change more rapidly to changing information, or opportunities.
So why should we consider Balance, Coordination, and Speed when we discuss our software delivery practices? If we are capable of changing our position efficiently, we should also be able to do this in a controlled way, bringing every stakeholder along the journey and ultimately doing this at speed (after all, we still want those valuable features delivered to the customer quickly and successfully).
In sports terms, Balance is the ability to remain reasonably steady and stable, Coordination is the skillful and balanced movement of various body parts to produce an action, and Speed would be referred to as the pace at which movement can be achieved. Let’s delve into these concepts in a little more detail for the world of software delivery:
Our practices should allow us to change direction in a controlled manner. This can be considered as the maturity of the practices employed by the team. When twisting and turning sharply in football - soccer to the Americans out there - we must have proper balance, or we would fall over. In software development, if we have to pivot and change direction - we don’t want to find ourselves unable to maneuver. To take a couple of examples of having the right balance in place, this could be how you manage your code branching strategies to allow only the things that are ready to go through the deployment process and create a backlog of changes due to one piece of code that just isn’t ready on time. Another example may be how reactive the business or delivery team is to feedback from customers. If something isn’t working, finding out why and then learning from past mistakes is what will ultimately propel us forward.
Coordination is all about communication. If everyone knows what they’re doing and is in agreement and constantly in communication, decisions about adapting and changing are easier to make. Communication also ensures that transitions go smoothly and everything falls into place. If a problem crops up, then we can make sure that we have the right people to fix it by knowing what everyone on the team is capable of. It is also healthy to ensure there is a continual retrospective on the team and business coordination. Bad examples would be represented by ‘group think’ setting, which is a phenomenon that occurs when the desire for group consensus overrides people's common-sense desire to present alternatives, critique a position, or express an unpopular opinion.
Coordination links back to balance by having a balanced, communicative team, and balance links back to agility in the ability to adapt to any unforeseen situations. Get all three - Agility, Balance, and Coordination - right, and you get Speed with optimal velocity. The key is working on maturing our practices from all areas and making sure that we’re not trying to push the speed faster than the ABC allow. When running over flat ground, we’d need a different set of attributes to move quickly versus running down a hill or through streams.
Each situation needs a different refinement of ABC in order to achieve Speed. As processes come to their end of life, they start to shuffle and slow down as a result of a lack of Agility, even if they retain their Balance and Coordination. Therefore, processes need to fit the kind of journey to be embarked on. Underpinning everything in the software delivery lifecycle is the ability to provide feedback as early as possible so that we can make better-informed decisions, and if we need to course correct, we can lean on those ABCs - so how can we gather this information quickly?
Virtuoso is a Natural Language Programming web automation testing solution that delivers a codeless approach to testing, meaning that you spend your time focusing on test design and delivery (at pace) instead of maintaining your frameworks or upskilling on the specifics across the architecture. Virtuoso provides a wealth of features from functional UI testing, visual regressions, and the ability to interact with your systems directly via APIs, thus allowing you to rest assured that you can release with increased comfort. Sign up for your free, two-week trial to see how Virtuoso can help you balance your ABC to achieve Speed without stumbling.