One of the benefits of working on a startup project of which I am the owner is that I can do things the way I want to.
One of the things I was keen to try out was continuous deployment, and for the last week or so I have done it, although there are about a hundred rough edges to the process to shave off before it is truly “continuous” and fully automated.
Surprisingly, the greatest benefits have not been technical, although those have been abundantly clear as well. From a technical point of view, it’s quite clear to me that smaller incremental releases are de-risking change a lot, as long as you have thorough testing in place, a fallback plan and backup datastores judiciously should something go horribly wrong.
But aside from the technical benefits, the business- and product development benefits stand out to me as the greatest wins: being able to quickly see- and use the system, not only in a demo mode, but in production means that my understanding of the product I am building and its uses is evolving much quicker than if I tried to do “big bang” releases with lots of functionality crammed in. The cost of change is low, as is the cost of “getting something wrong”. But most of all, continuous deployments are allowing me to develop the business proposition of the product iteratively and rapidly, as assumptions and theories can quickly be validated or discarded.
To me, it is becoming abundantly clear that continuous deployment is not primarily about technology, even though technology gains. It’s about continuous improvement of your business, both in terms of market fit and day-to-day operations.