Getting started with Agile can look daunting at times and it is difficult to start the journey if you are not sure which steps to take first. This article will give a quick overview of Agile, its core concepts and some practical advice to get you started.
What Is Agile Development?
Agile Development is a blanket term that describes a way to manage development teams and projects. It encompasses many different development methodologies that share the values contained in the Agile Manifesto and the principles behind it. It favours individuals and interactions over process, working software, customer collaboration and responding to change. Note the emphasis on responding to change, it’s not only feedback from users around the application but also feedback from the team and how to constantly learn and improve.
What are the advantages gained by Agile Software Development?
The end goal is to deliver business value and there are a few ways this is achieved
1. Constant feedback from users, results in software users actually need and use
2. Testing and review is integrated throughout the lifecycle reducing bugs which results in a stable application
3. Shorter development and test cycles with a release after each sprint resulting in shorter time to market with usable features
Steps to help you get started
There is no set recipe to get started with Agile Development it depends on many variables like the number of teams, management buy in, developer skillset, customer relationship, company culture but there are some guidelines that you can adapt to fit your scenario.
• It is important to get a vertical slice of the stakeholders involved. This starts with the development team and expands to business and end users
• Get management buy in, it won’t be possible to implement agile properly without it. Management’s support will show commitment from the company and help clear obstacles like timely access to a product owner
• Get the teams involved trained up on agile principles so they will know what is expected of them
• Get the development team trained up on the skills required for agile development like unit testing, designing for testability, refactoring, automation, version control, build servers.
The next step is choosing an application that will be your POC. You want to show quick wins and build up the team’s confidence in Agile Development. It should be visible enough to add value but small enough to implement relatively quickly. You want the team to focus on the method not be bogged down by code.
The key here is incremental, iterative changes to the application driven by user feedback and automation to optimise the development cycle. You are making small changes and each change goes through requirements, development and testing phases.
Start by soliciting user feedback, this will help you in a few ways.
1. The team may not be aware which features users need the most. You can prioritise your backlog items and work on the most requested items first
2. During new product development you will be able to see early on if it is feasible and allocate more resources or stop the project before it drains resources
3. For existing applications feedback will help you identify problems areas that are having a negative impact on sales or usage for example feedback from app stores.
Take the feedback from users, apply your expertise and analyse the requirements to turn it into the features they actually need. (Goal 1) Implement Source/Version control, this is a tooling requirement for the steps that follow.
• Automated unit testing. As part of the development cycle developers must create unit tests for any new code they write. In larger teams with testers they can also write integration, load and other types of testing. (Goal 2)
• Automated builds. With multiple developers making changes and possibly multiple components making up the system you have to bring all the pieces together and build the final product. This is called Continuous Integration and it helps to reduce bugs and breaking changes between all the modules at build time. (Goal 2)
• Automated integration testing. Once you built all the components you have to test the interaction between them. Integration testing will run scenarios that test all the components together and catch breaking changes at run time. These tests run as part of your build process and along with the automated unit tests is called Continuous Testing. (Goal 2)
• Automated deployments. Software only adds value when users can use it. By automating the deployment you reduce deployment errors and you can deploy more often and with confidence. (Goal 3)
• Automated delivery. Automatically delivers software into production environments. (Goal 3)
The outcome from this process is software that is in a state where it can be released if need be and the team is confident that it has been tested properly, the deployment process is working and the software meets user requirements. The biggest gains come when you can reach automated deployments and your users can provide feedback and see progress shortly after the changes are developed. People get fixated with automated delivery but many organisations don’t need it and it is not always feasible. Depending on your environment performing continuous delivery can entail huge effort, you’ll have to weigh up the benefits.
There is no one size fits all when it comes to Agile Development. You’ll have to try out different processes to see what works for your team or organisation. It is important to remember being Agile is a cultural shift not a tool implementation and it takes time and practise. Focus on small changes and learn from feedback. Collaboration between all players form an integral part of the methodology and it is something you can start applying from the beginning.