Joel Spolsky has a 12 step checklist for better code. #2 is can you create a build in one step? I’d like to expand on the one step principle in software development by adding #13, #14 & #15. (The first two are primarily for web apps, which seem to be popular with the kids these days.)
13. Can you deploy your product in one step?
I would rank this just as important as making a build in one step. If you can’t deploy your application in one step to production, you will break something. Any manual intervention means someone will be in a hurry one day or careless and forget a step or file and BOOM, your app is broken and someone twelve management levels above you learns your name for the first time. Not good.
14. Can you verify your deployment in one step?
So you’ve just deployed version 3.0 of your shiny new app with EXTRA WEB 2.0. But wait, some customers are calling saying they don’t see the extra web 2.0. You forgot to test the web 2.0 when you deployed. Doh! This is where test driven development is handy. Not only does it help with development and QA, it comes free when it’s time to deploy. You’ll have a much better idea of where you stand if you can automatically verify you’ve deployed correctly and completely. Deploy, manually verify and run your unit tests against production and you’ll sleep better at night.
15. Can you test your product in one step?
Similar to #14, being able to verify your app at any time is A Good Thing. During your entire development process you can at least know when you’ve broken existing code. But you need to write unit tests, which you probably aren’t doing. Oops. Being able to test your app in one step will reduce your overall QA time and you can integrate it into a daily build process, turning it into a daily build and test process.
So take Joel’s 12 Step list that you’ve printed out and taped up next to your monitor (oh wait, that’s just me…) and add mine to it!