An agile working methodology brings an iterative approach to delivering a project throughout its lifecycle. Working in ‘sprints’ an agile team works in short cycles to deliver their targets. In the agile process, there is constant communication and feedback between teams and stakeholders. This leads to teams delivering value faster, at a higher quality and predictability and with the possibility to easily change project targets and scope where necessary.
Before Agile was created the most common methodology was Waterfall. A team would identify problems and then plan a solution to fix them. They would then fix these problems in their entirety and bring the solution to the market. If the project is finished in a few weeks this type of approach is not a problem but what happens when a project takes months or even years to complete? Over this period industry landscapes will likely change and the scope of the project will need to be updated otherwise the solution will be out of date even before it is released. However, this is not possible whilst working in a Waterfall team meaning a lot of projects get abandoned as it is more cost-effective than working on outdated products.
An agile working methodology was first proposed in 2001 when a group of software developers created a manifesto that set out four key values and twelve supporting principles.
The four key values of agile development include(1):
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The twelve supporting principles of agile development include(2):
- Customer satisfaction through early and continuous software delivery – Customer satisfaction is increased if incremental solutions are received at regular intervals rather than waiting for longer periods for one large update.
- Accommodate changing requirements throughout the development process – the scope of the project is flexible and can be altered to match real-world changes without creating massive delays.
- Frequent delivery of working software – Teams work in sprints to deliver partial solutions which can be used to frequently update and improve the software.
- Collaboration between the business stakeholders and developers throughout the project – Better decisions are made when the business and technical team are aligned.
- Support, trust and motivate the people involved – Teams are supported and motivated to allow them to produce the best possible outcome.
- Enable face-to-face interactions – Teams are in constant communication and generally situated close to one another for face-to-face meetings.
- Working solutions are the primary measure of progress – Progress is measured by delivering functional results to customers.
- Agile processes to support a consistent development pace – As teams work in sprints, they establish a repeatable and maintainable speed of delivering working results.
- Attention to technical detail and design enhances agility – Teams are carefully constructed to have the best mix of skills and design for that teams’ specific tasks.
- Simplicity – The simplest solution is most likely the best solution.
- Self-organizing teams encourage great architectures, requirements, and designs – giving team members decision-making power ensures they are highly motivated and take ownership of their work.
- Regular reflections on how to become more effective – self-reflection, self-improvement and upskilling ensure teams have all the skills needed to complete tasks to the best possible quality.
There are multiple styles within the Agile methodology with two of the most popular being Kanban and Scrum. Whilst there are many different styles most follow a similar cycle:
- Requirements – meeting with managers, stakeholders, and users to identify requirements
- Plan – once the requirements are defined the team will identify and plan out key features
- Design – the system and software are prepared from the requirements
- Develop – features within the design stage are created and tested iteratively
- Testing – the project is released and tested to check that the functionality matches the requirements
- Deployment – the project is delivered to customers and any problems are tracked
An agile methodology has become common within the data and analytics industry. There is a common phrase ‘technology is outdated the moment it hits the market’ and this is a key problem an agile methodology works to counter. With how fast things can change, especially in the data and analytics industry, a project’s requirements are likely to change over the time it takes for the project to be completed. As I discussed earlier other development techniques, such as Waterfall, are not well suited to this type of work as it is not possible to change the project scope without massive delays. By working in an Agile style, you give your team the best possible chance to produce the best outcome for your customers no matter how the landscape has changed since the project was started. At Rockborne, we have not only learned about Agile but how to apply it to our work and projects. This allows us to see firsthand the benefits and drawbacks of certain methodologies over one other.