February 28, 2018
You’re building a complex piece of software. Then it comes time to deploy, so you spend a couple weeks stuffing it into a Docker container or a .deb or .rpm package, and debugging the build and deployment process. Then you add some sort of monitoring or logging, set up email or SMS alerts to tell you when it crashes, and probably a dozen other things to make it “production ready.”
After I ran through this whole process a few times, I developed a better approach.
Today I learned that approach is a pattern. And it has a name. (I guess those two are roughly synonymous. A pattern is only a pattern once it has a name, and once something has a name, it becomes a pattern–even if it’s only ever existed once, or even zero times… but I digress.)
Not only does it have a name. It has a great name, and I just want to share it.
The Dancing Skeleton
Dan North, in this video explains that a Dancing Skeleton is a big, elaborate Enterprise “Hello, World” application.
I actually started a project at my last job called “Hello World” based on this exact principle. The idea is, you build an app, complete with logging, alerting, API calls, front-end widgets, deployment scripts, CI/CD pipelines, and all. But it doesn’t do anything. It’s just a skeleton app.
It’s a dancing skeleton!
Once the skeleton is complete, the useful bits are added later. And then your software is always deployable and always working in its intended production environment. It’s enables continuous delivery from day 1. YAY!
Now that I know this name, my next such Enterprise “Hello, World” project will be much more creatively called “dancing skeleton”, of course!
The Twelve-Factor App
The twelve-factor app is a methodology for building software-as-a-service apps
TDD only makes sense if you already know the outcome... or does it?
If you don't know what your code should be doing, you have no business writing any code anyway!
DRY can be expensive
Don't repeat yourself! Except when doing so might be harmful...