09 December 2019
Agile Development — if you’re a developer worth your salt then you’ll know what it is. However, if you’re not, and need a really, really basic, child-like explanation (like I did), then you’re in the right place.
Firstly, Agile is a methodology, not a technology — it’s a method to create and deploy a digital product from software development tools.
Software development methodologies have been around for 70+ years. There have been many, but to understand Agile, you’ll need a rudimentary understanding of what it replaced, and why it replaced it. I’ll therefore high-level three well used software development methodologies; Code and Fix, Waterfall and Agile.
Code and Fix
The original approach to development was where code was written, then problems were fixed as they were found.
E.G. write the code > release it for use > fix what the customer told you was broken.
With limited testing, code can be deployed almost immediately.
Software Developers then had to wait to see if what they developed worked; either in terms of errors in code or if the software actually did the job it was intended for.
The plus side, it was simple. Create and Release and see what happens.
In the real world, this comes riddled with problems. A business cannot start and stop every time their application stops working, users cannot be productive if the product doesn’t meet their needs. Bug fixes and design flaws will need to be fixed on the fly, at a wing and a prayer. No company will want an application released, only for it to be fixed every week.
Code and Fix is therefore reserved for bedroom coders and not for commercial use.
Then along came Waterfall. Waterfall is still abundantly used in the IT industry, and is still very current in software development. In fact, for certain engagements, it may be a preferred method than Agile.
The basic premise of Waterfall is that every step of the development process needs to be agreed, signed off and defined, before the next step can start.
1. __Requirements = are defined and documented;
2. ___Design = is initiated based on the Requirements
3. ________Development = is done in strict accordance to the Design Documentation
4. _____________Testing = is initiated after development work is complete
5. __________________Deployment = is only deployed if all the steps are fully complete
The reason it’s called ‘Waterfall’ is because water only flows one way; water cannot reach the following step until each previous step is done.
Design doesn’t start until the Requirements are set. Development doesn’t start until the design is complete, Deployment doesn’t occur until Testing is fully complete.
Totally acceptable logic and still very current.
However Waterfall has proven to be restrictive in the fast moving digital economy we live in, in these ways.
Firstly, the time to market is long — as each step needs to be complete before the next step occurs.
Secondly, if the requirements change or are wrong (which is more often than not, in a digital economy) the whole process needs to be started again.
Thirdly, unknown timescales. Any one of the steps could be delayed, thus delaying all subsequent steps, resulting in sketchy project completion times.
- A marketing exec at an Ecommerce firm decides he needs a customisation tool on a product page
- IT takes the requirement down, the project starts;
- The Scope is Defined. The UX designer designs the look, development starts, then the testing begins
- Whilst testing — the marketing director decides he wants the tool on every product page.
- The IT team now has two options;
- Start the Waterfall project again; or
- Try to fit this new requirement into what has already been tested.
Either way, the requirements gathering, scoping, design and development work needs to start again, costing money for what should’ve been a simple request.
This reasonable marketing decision has now cost the organisation in two ways; delayed time to market and effectively wasted the investment to date on the original scope. IT ends up praying no one else in Marketing has any other bright ideas.
In this simple example the implications may not be too severe, but large scale projects, implications will be significant as costs and delays are multiplied.
The AGILE approach
Agile Software Development involves breaking down the Waterfall method so that project steps do not necessarily follow each other. Design, testing, development and requirements gathering are done as a continuous cycle.
The customer/stakeholder, is involved in the development process — her requirements are defined daily, and each day something is developed and tested and each day the design can change to ensure continuous iterations.
This continuous development cycle means the requirements do not need to be set in stone from the start of the project, testing needn’t wait until all the development is complete, and each requirement is added and scheduled into the workstream.
Taking our indecisive marketing department example, the project would be looked upon differently:
- Marketing Exec wants a customisation tool
- Requirements are gathered and she works with the designers and developers on the first iteration, if it looks good, they continue
- Marketing Director now wants the customisation tool on each product page
- This is added to the product backlog
- The Marketing exec, designer and developer now works on the 2nd iteration
The point being, is that the requirements do not need to be set in stone from the start, the scope is not fixed, therefore costly changes throughout the project needn’t be a worry. Ongoing testing and continuous development ensures product updates and new requirements are easily folded into the mix.
So why now? Why is Agile now becoming so prominent?
The main reason is the explosion of online applications over the past 10 odd years. Web apps and the prominence of e-commerce based organisations means in order to have a competitive edge, organisations need to be fast to market and be adaptable to ever changing business requirements. Business no longer accepts 8–12 month development waiting times, only for the requirements resulting in a no longer fit for purpose solution.
Agile means quick to market with cost efficient use of resources. It also means the stakeholder is involved in the process, ensuring new requirements or scope changes are easily accounted for.
At Corner Case Technologies our delivery team by default work in an Agile Methodology.
This makes it easier on us billing clients, as no longer do we hard fix scopes and restrict clients when requirements change. Our clients see the benefits and cost savings of working in an Agile fashion.
Our larger clients also benefit from us enabling to integrate into their larger team. Agile allows daily Scrums to occur, ensuring our (small) team can take on tactical projects,whilst being part of a larger programme.