A Walking Skeleton
An Agile Analogy
What is it?
Alistair Cockburn, an American computer scientist and agile development pioneer, coined the term walking skeleton. In a software development context it’s a lightweight application framework without any product-specific functionality but that is still runnable and can exemplify the fundamental architectural patterns.
Why?
To reduce risks and often costs too.
A walking skeleton, is a minimal initial implementation of an application's architecture that includes and connects the basic components of the system. As the name suggests, the structure is in place and functional in a rudimentary way, but the system is not fleshed out and does not provide the level of service required of the end product. Subsystems and essential integrations are incomplete but hooked together.
By having a deployable framework ready from the very beginning, you can identify and deal with problems before they become unmanageable. Discovering a problem on day zero gives you options and time to explore that problem. If you start down the path of making your walking skeleton work in a production-like environment and end up running into issues, at least you now know that problem exists — and problems you know you have are much better than problems you don’t know you have.
A walking skeleton must be able to carry out the basic functions required of the end system, such as querying data sources, requesting services and conducting functions. Any automation, such as exception handling and continuous integration (CI), should also be in place and all implemented components should be tested to ensure, for example, that an authentication service provides access control with correct statuses.
When?
The term, as you can see, is often used to describe a framework that is built before the product itself is built. However, it can also be used to describe a particular iterative & incremental development approach where "The Walking Skeleton" is the first phase of a new product development initiative. This phase may be referred to as a Foundation, as Sprint 0 or Inception to name just a few examples.
How?
There are a few possible sources for creating a walking skeleton:
1. Borrow from past products your team has already built, and strip them down for this new purpose.
2. Seek out a template, either internal or community-based.
3. Build from scratch.
If you decide to go with option No. 3, make sure you minimise the process. Ideally, a newly built walking skeleton shouldn’t take more than two to four weeks. Keep in mind that you just want to build enough to get going so you can spin up a framework and get end to end with source code.
The greatest challenge in software development is that we’re almost always doing something that no one else has ever done before. By beginning with a walking skeleton, Scrum teams can enjoy the flexibility and focus of the Scrum process with the risk protection of minimal planning ahead.
Summary
Completing a walking skeleton early provides development teams with several important advantages:
It puts some architectural building blocks together, exhibiting structure and patterns.
It establishes the fundamental technologies and proves the basics work.
It provides fodder for continuous integration and automated deployment.
It can establish a common framework.
It allows development teams to immediately focus on new product functionality by proving that their walking skeleton runs in a production-like environment and proving the automation necessary to support ongoing development is in place.
It supports the "Thin Vertical Slice" incremental development concept of agile product development.
By having a deployable framework ready from the very beginning, you can identify and deal with problems before they become unmanageable. Discovering a problem on day zero gives you options and time to explore that problem.
See also:
Beyond Microservices - written over a decade ago, this article on our main website is as relevant today as it was the day it was written.