Design is not a linear process. At the start of a design, it is rare for all the requirements to be known, least fully understood. Design requires a period of discovery and iteration, which incorporates learning, experimentation and even (early) failure. Design, by its very nature, is an emergent process.
The emergent nature of design requires a non-linear approach to development. The group of methods and techniques that adopt such an approach have traditionally been referred to as ‘Incremental and Iterative Development’ (IID), but more recently as ‘Agile Development’.
In product design, Agile Development is well established. Ideas are sketched out and models built, long before any significant resources are committed to the development of the final product. And of course in other areas of design, including the creative arts, such approaches are the norm.
Unfortunately, in the case of services and particularly IT design and development, the use of Agile methods and techniques is far less well established. Historically, a linear approach has been adopted, whereby requirements are defined, against which a solution is then developed and built – referred to as ‘Waterfall’ development.
Waterfall adopts a pure linear approach to the design and development process. Each stage is defined, or delivered in full, before moving onto the next stage.
The development lifecycle typically passes through a series of ‘gates’ (approval stages). The work completed at each stage is considered complete and there is little room for iteration.
Unfortunately, what often gets delivered under Waterfall is frequently overly complex and costly, and fails to meet the actual needs of the customer. This is because the design has not had the opportunity to properly emerge – there has been no prototyping, no experimentation. It also takes much longer, because one stage has to complete before another stage can begin. This is another reason why the customer needs are not met – by the time it delivers something, the world has often moved on!
Despite its recognised weaknesses, Waterfall is still widely used. Its linear simplicity appeals to many, particularly managers and those responsible for procuring resources and agreeing finance. For some, the sense of occasionally going backwards, to go forwards, is an anathema.
Agile Development Approaches
Agile is not a single approach towards product, service or operational design and development, rather it is a collection of methods, that differ in their degree of agility and formality.
In selecting an appropriate method, or mix of methods, there are two primary factors that determine how agile a development should be – degree of emergence and degree of complexity.
The more emergent the requirements and the more complex the service, the more agile the development approach needs to be – to accommodate these two characteristics and to ensure a successful design.
I cover two methods here, one often nested within the other – Iterative Waterfall and Scrum. Iterative Waterfall covers the entire lifecycle, whereas Scrum is best suited to individual stages and well-bounded elements of the system.
As the name implies, Iterative Waterfall is the adaptation of the linear Waterfall approach to development, through the incorporation of a number agile techniques – Concurrent and Iteration Development; and Incremental delivery.
Concurrent Development. This is based on the principle that you can start a stage before the preceding stage has completed. The trigger is simply the point at which you have sufficient information to work on. This has two advantages – it reduces significantly the overall end-to-end development time and allows early iteration, even before the previous stage has completed, again greatly speeding up the process.
Concurrent development is found extensively in the engineering world, where it is known as Concurrent Engineering (CE). CE became standard engineering practice, certainly in the UK, from about the mid-80s.
Iterative Development. This is the application of system feedback – taking what you have learnt in one stage and feeding it back into the earlier stage; and also refining the design back through the preceding stages. It is the mechanism by which the design evolves.
Most iteration occurs between adjacent stages, but it is quite possible to discover something, say at detailed design, that fundamentally changes some high level aspect of the design. Iteration in the early stages of the development lifecycle is achieved through the use of mock-ups and prototypes.
Incremental Delivery. This is the principle that you deliver something early and often. Typically you aim initially for a Minimum Viable Product (MVP) – the minimum amount of utility or functionality that allows you to launch the service and obtain that all important first customer feedback.
Incremental delivery can work across various dimensions, singularly or in combination, e.g. features, customer group and location. You may choose to deploy a service in only one location, covering only certain services and not supporting all features.
Iterative Waterfall is best applied across the end-to-end design process, from Business Model through to the delivery of a service or service operating model; and for moderate degrees of emergence and complexity.
There are a number of specific Iterative Waterfall methods, associated with software application development. The most notable of these are the Dynamic Systems Development Method (DSDM) and the Rational Unified Process (RUP).
Iterative Waterfall is also well suited to situations where a standard design solution is being matched to a set of requirements; where the objective is to achieve the best match against the available options; as in the case when using Commercial Off-The-Shelf (COTS) software packages.
Scrum is an Agile Development framework that is specifically designed for those situations where the design requirements are not well understood, i.e. where they are emergent; and where there is a high degree of flexibility in the final design, e.g. when designing custom software solutions.
Although principally a software development method, Scrum can be applied more broadly. Also, Scrum does not cover the entire development lifecycle, rather it is intended to be used within individual stages, specifically in product/solution development.
Scrum is one of those methods that gets a bit lost in its own jargon, but the key features are:
Multidisciplinary Teams. Scrum uses an integrated, team, with permanent members from the business working alongside the development team, ideally located in one place, to ensure continuous engagement.
Sprints. These are the basic unit of development in Scrum. Sprints are time-boxed, i.e. restricted to a specific duration. Time-boxing is a common feature of all agile development methods. Sprints are typically between one week and a month in duration.
Scrums. These are short regular meetings, typically daily and performed standing up (to help keep them short), to discuss and coordinate the work across the development team, especially regarding overlap and integration.
Product Backlog. This is an ordered list of the items to be worked on, the sequence in which they will be worked; and an assessment of their business value. Items can be represented in many different forms, e.g. sub-products, user stories or simply a list of features, bug fixes and non-functional requirements.
Visual Control. Scrum borrows the concept of visual control used in Lean manufacturing. A task board, or “Kanban” (not to be confused with the method), is used to visualise the workflow, by showing: the Product Backlog; those items to be worked on in the next Sprint (Sprint Backlog); and those items included in the current Sprint. The current Sprint is broken done into the stages of work, e.g. design, build, deliver and completed.
Velocity. This is the total effort a team is capable of in a Sprint; and provides a guideline for what can be achieved in future Sprints.
Implementing Agile Development
Agile development methods can be very difficult to introduce in traditional hierarchical organisations. But also, every organisation is different. Find out what works for you. And if your organisation has only ever used Waterfall, introduce Iterative Waterfall first, before more agile methods such as Scrum. It is very easy to get a negative reaction at the start, which could set your organisation back years.
Avoid the notion of adopting a “two speed approach”. Create one overall development framework, with various options within this, that can then be matched to the needs of a given project.
There are lots of Agile tools out there. Have a look, but you can get a very long way with just a large wall and (super sticky) Post-It notes!
And finally, Agile is not an excuse for adopting an unstructured approach to design and development. The opposite is true. Away from the simplicity of a linear approach, a great deal of structure, planning and discipline is required to make it work well.
Unfortunately Agile is one of those areas where people can become a bit evangelical and, ironically, introduce a lot of unnecessary complexity. There are lots of books around the subject, but I can’t really recommend any of those I’ve looked at. Here are some resources, which when used against the simple framework I’ve outlined above, should be all you require to get started. The rest is down to ‘learning by doing’!
From two of the co-creators of Scrum, a free on-line resource that provides the detail in a clear and well presented format. Better than many books on the subject.
A beginners guide to building Scrum task boards.
A stimulating article on the use of MVPs. You can adapt these ideas to many different types of services – they are not limited to the development of on-line services.
Last Updated: 19/02/2017