Ask people about what agile development is and you risk getting as many different definitions as people you ask. For me, agile development is getting the most out of your team with as high quality as possible. This blog post will give an introduction to agile development.
By the way, I am Staffan Svenstig. I work as a software lead in a automotive tier 1 supplier. I have worked with different agile development methodologies since 2001 and I was certified as scrum master about 10 years ago. Most of these years I have been involved in projects concerning automotive electronics. During my years working with agile methods I have seen the advantages of the agile mindset in the projects I have worked in.
Strictly speaking, agile development is an umbrella term for several software development methodologies. The most popular agile methodologies include Scrum, Kanban, Extreme Programming (XP), Lean Development, and Feature-Driven Development (FDD). Although the different methodologies are unique, they share a common view on software development. This view is described in the Agile manifesto which was written in 2001. The manifesto makes the following statement:
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items onthe right, we value the items on the left more.”
© 2001, the authors of the Agile Manifesto http://agilemanifesto.org/
The manifesto also states 12 principles that are followed in agile development. You can read them here: http://agilemanifesto.org/principles.html
Planning and delivering
Have you ever been in a project that was executed in the way that it was planned from the beginning? No? Neither have I. Agile development welcomes the facts that plans, requirements and solutions evolve over time. It encourages rapid and flexible response to change. This implicates that you need to have adaptive planning, a close interaction with the customer and early and frequent deliveries.
In most agile development methods you break up the work into short increments. One increment (iteration/sprint) is typically one to four weeks. In each increment, the agile teams do all tasks needed for a feature to be developed: planning, design, coding, unit testing and acceptance testing. At the end of each increment, a working product can be presented. This approach enables adapting to changes quickly, minimizes the amount of up-front planning and minimizes the risk of finding bugs late.
Agile development methods state that the best software is written by self-organizing, autonomous and cross-functional teams with end-to-end responsibility. Such a team consists of persons with the abilities to do everything that is needed to create a feature in the product. Organizing in this way has a lot of advantages, e.g. it minimizes the handover between different disciplines and it increases accountability of the team members.
In agile development, you put “people over process” and accept the fact that there is no such thing as a perfect process. The process, tools and techniques need to be continuously discussed and improved. The agile teams are given the freedom to tailor the process, techniques and tools to fit their needs. They do regular meetings called retrospectives where they reflect over their ways of working. Knowledge sharing is encouraged and best practices are spread between the teams.
Risks with agile development
Implemented in the wrong way, agile methods can be inefficient or even creating lower software quality. In a worst case, agile development is an excuse for poor documentation and lack of testing. A methodology will not save a poorly managed organization. Company culture can be conflicting with core agile values, leading to people working against an agile transformation. You need to understand that agile development impacts organizational values and this needs to be addressed in a transformation process.
One of the principles in the agile manifesto reads “Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.” The lack of trust, resulting in micromanagement, is toxic for the work environment and will result in ill-functioning agile teams. Leaders should use the philosophy of servant leadership, where leaders work to serve the teams, not the other way around.
If the processes and tools aren’t as agile as your teams, you will run into trouble. You need to have the tools and processes adapted for agile development and embrace the ideas of continuous improvement also in the process.
Proven in the field
Volvo Car Corporation is in the transition to adopt agile development methods. Large companies like Ericsson, Apple and Philips have already done this transition with success. Spotify promotes their agile development process as a reason for people to work at their company. Studies show that agile projects have greater productivity, higher stakeholder satisfaction and are more likely to succeed*. Although the methods will evolve over time, there should be little doubt that agile development methods are here to stay.
Over the next blog posts I will get in more details about the above topics.