How to continuously improve your Agile development process

By | August 1, 2016

The way that we develop software has shifted dramatically in the last decade or so. The long term development of monolithic applications with annual release cycles has given way to rapid developments and deployments broken down into smaller chunks. The rise of agile and DevOps feeds into a continuous development mindset.

We create fast feedback loops, iterating rapidly, and allowing the end user to guide further development. The business logic behind agile development is widely accepted. Development is driven by concrete needs and data, not guesswork, thereby reducing risk. Failing fast prevents us from going too far down a dead end.

As speed is at such a premium and delivery is more frequent than ever, it makes sense to apply the same principles we use to improve software to the processes and techniques we employ in developing it.

Source: http://www.screenmedia.co.uk

Source: http://www.screenmedia.co.uk

Be open to suggestions

You have to create an atmosphere where every team member is able to suggest possible improvements to processes. There’s a fine line to tread here, because you want to invite insight about problem areas, but you want to avoid individual criticisms or tension between teams that can lead to morale problems. Keep the focus firmly on how to do things better, rather than what is being done the wrong way.

Measure your progress

Releasing in frequent chunks gives you lots of small cycles to measure. Make sure that you collect and analyze data about your development cycles and deployments. Any proposed changes that are actioned must deliver tangible improvements. The only way to confirm that is to measure and compare with previous cycles. Hopefully, you’ll see steady improvement. But it’s also important to ensure that changes that don’t deliver can be rolled back.

Employ Root Cause Analysis

When major defects or deployment failures strike, you should take the time to investigate the root cause. Although this may seem like a burdensome investment during development, continually treating the symptoms is often a much bigger waste of time and resources in the long term. If you can identify the root causes of major defects, breakdowns, or bottlenecks, then you have the chance to eradicate them, not just for this project, but for future projects, too.

Collective responsibility

Source: https://upload.wikimedia.org/

It’s important that people pitch in wherever they can add value. Spread the knowledge base by sharing tasks and build a sense of collective responsibility. The final product is a sum of every team member’s collective efforts — it’s not about skilled individuals working in isolation. The more the team buys into this idea, the more important it will become to them to improve processes right across the development cycle. You still want to play to people’s strengths, but take a measured approach, because too much specialization leads to bottlenecks.

There’s no need to set grand targets here. You can simply measure your performance and aim to improve a little in each cycle. How can you deliver better quality code? How can you test more thoroughly? How can you deploy faster? All the great benefits we derive from applying agile methodology to software development can also be applied to our development processes.

Category: Web and software development Tags: ,

About Simon Hill

Simon is an experienced freelance technology journalist covering mobile technology, software, and videogames for a wide variety of clients in print and online. He regularly contributes to Digital Trends, Tech Radar, and Android Authority, and he ghostwrites for CEOs in the technology space. After completing a Masters in Scottish History at Edinburgh University, he began his career as a games tester, progressing to lead tester, game designer, and finally producer, before leaving the industry to write full time. He is passionate about the potential for good software and hardware to improve our lives, and strongly believes that thorough testing is a vital prerequisite for greatness.