Every software project involves some amount of mystery and uncertainty. Actually, a software project is hardly made of anything but mystery and uncertainty.
Some jobs are more mysterious than others. I was recently asked by a client to build a Rails application that contained CRUD interfaces for a
Patient resource and an
InsuranceType resource. That work was not very mysterious.
My client also asked me to set up staging and production environments for this application on AWS. This might sound easy but setting up a Rails application on AWS/Elastic Beanstalk is totally not straightforward, even though it’s 2018, and even though I myself wrote guides on how to get Rails working on AWS. The work of getting the application deployed to AWS was in fact mysterious.
Enter the Walking Skeleton
A Walking Skeleton is basically the thinnest possible slice of all the layers in an application. The idea is that you front-load the difficult/mysterious work in a project so you get it out of the way early while the stress level is low and the remaining budget is high.
I learned about the idea of a Walking Skeleton from Growing Object-Oriented Software, Guided by Tests. The name refers to the idea that your early application hardly does anything but it can still stand up.
The authors’ suggestion as I understood it was to set up both an application’s production environment and testing infrastructure as part of a Walking Skeleton, both of which can be mysterious/time-consuming/difficult to set up.
So in the case of my application, I might get my Elastic Beanstalk environment set up, create just one of my CRUD interfaces (whatever the simplest one is) and write a couple feature specs to exercise my CRUD interface. This will force me to figure out how to get AWS/EB set up (again, non-trivial) as well as install RSpec, Factory Bot, Capybara, etc. From that point on everything is just incremental.
The alternative to a Walking Skeleton
Failure to create a Walking Skeleton can contribute to ghastly project failure. If you’d like to hear one of my horror stories about this you can check out another article of mine, Deploy to Production on Day One.