1. July 2022 By Stefan Mönk
#1 Agile software development – we work in an agile way! Really?
I would like to dedicate a series of blogs on agility to the term ‘agility’ itself. This will cover topics such as agile software development, agile frameworks, agile mindsets and agile methods. My goal is that everyone – from the classic waterfall manager to the full-blooded agilist – will find something to take away. First of all, I would like to make sure everyone has a basic understanding of what we’re talking about so that we’re all on the same page, and so that we have a basis for further discussions and sharing ideas. Let’s start at the very beginning: what does ‘agile’ actually mean? The Gabler Business Encyclopaedia explains this without reference to software development:
Agility is the dexterity, agility or mobility of organisations and people or in structures and processes. One reacts flexibly to unforeseen events and new requirements. – Gabler Business Encyclopaedia1
In short, things will happen that we cannot foresee. Nevertheless, we will still have to react to them and the best way to succeed in this is if we first accept this circumstance and view change as something positive. There is a clear focus on software development at adesso, which is why I would like to focus my attention here, too.
The first agile approaches can be traced back to several decades ago. NASA and IBM, for example, introduced the first agile methods back in the 1950s. The Incremental Iterative Development, or IID for short, was already characterised at the time by iterative teamwork, subsequent review phases and using new findings to better understand changes.
In 2003, the IEEE Computer Society summarised the IID methodology as follows:
Key steps in the process were to start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving sequence of versions until the full system is implemented. At each iteration, design modifications are made along with adding new functional capabilities.2
So, as we can see, agile software development is nothing new. People have been tweaking it for over 70 years – and the same principle applies today as it did then: once you understand that unpredictable events are inevitable, you can react to them in a rational, prudent way. We do this by always taking small steps, looking back, learning from it and applying what we have learned in the next small step. We inspect what we have achieved and we adapt our behaviour and actions to become even better.
The 2000s as an agile revolution
2001 was probably the decisive year for agility. In February of that year, 17 software developers gathered in Utah in the United States to talk about more efficient methods in software development. The result includes the Agile Manifesto and its 12 principles, which are still relevant today. The Manifesto is aware of the fact that there can be no black and white in project and/or product development, meaning that the classic approaches such as processes and tools, comprehensive documentation, contract negotiations and following a plan are valued and respected. However, these points are weighted less than individuals and interactions, functioning software, cooperation with the customer and reacting to change.
To put it another way, in agile thinking we focus more on conscious communication with and among each other instead of replacing it with processes, correspondence and tooling.
The 12 principles of the Agile Manifesto should give this more weight and make it easier to do in everyday life. They describe ways of thinking and orientation points for an agile mindset. I will also take a closer look at this topic in one of my upcoming blog posts.
Agile software development in practice
When it comes to agility, we go with the flow – we want to react flexibly to unforeseen events. Change is a good thing. Change is a benefit for our customer, because with every change our system moves one step closer to what the customer actually needs. This is probably one of the most important points in software development: agile action makes it easier for us to measure the value our product delivers.
Can a customer do something with it or was it just something that was developed? If we now combine this with increased face-to-face communication, we will start to see things from other perspectives than just our own. We understand the user more and more and can thus actually generate added value for them.
In short, developers need direct contact with the experts. Project and product managers need to accept and understand unpredictable events – especially in terms of estimates and plannability. Management needs to have confidence in its employees. Customers need to be brought up to speed as to what agile means and how the processes within agile software development work.
You can implement agility. In fact, a lot of companies do. But which company actually puts agility into practice? How many colleagues are familiar with the contents of the Agile Manifesto, the 12 principles or know which values the applied framework actually represents and presupposes? The danger of agility is thinking that you can just do it and completely neglect the basics. By the way, my upcoming blog posts in this series will go into more detail about agile values, agile principles and empirics. Agile software development means more than regular meetings and short development cycles.
Agility must be put into practice so that others can put it into practice.
We are uncovering better ways of developing software by doing it and helping others do it.
Have you ever heard this sentence before? It is the first sentence of the Agile Manifesto and I think it makes sense.
You will find more exciting topics from the adesso world in our latest blog posts.