It's the New Year and it's time to start a bunch of New Projects! One of my techniques for successful software projects is to start at version zero, also known as starting at the end. Starting at version zero means that the very first thing you do is build the delivery mechanism: the makefiles, the continuous integration, the packages, the deployment scripts, the monitoring tools and even tiny single-server staging and production systems. Version zero is the complete end-to-end, but deliberately content-free, "hello world" for your application.
Starting at version zero means that you're always ready to ship
because every build is shippable - admittedly your version zero is not
very useful, but it is shippable. And since you've built the deployment
mechanism first, you won't be trying to get it all working under a
crunch deadline at the end. In fact, starting with version zero helps
reduce the need for crunch mode at all because the decision becomes "do
we work overtime to ship with ten features instead of nine?" rather
than "do we work overtime to ship instead of not-ship?"
Starting with version zero also means that you're always ready for a demo or a beta test, and it means that you're not waiting until the end to discover integration issues. So, start your new projects with version zero and deliver more with less stress.
