From time to time I scream myself to sleep.
People around me are presented with two questions.
The first: How can I just sleep at my desk like that.
The second(and more relevant): What makes me scream so ?
The screaming today was triggered by a very simple concept I try and live by (as a developer), that is release early, release often*, or rather the breach thereof.
Following this simple edict lets you stay the course in long projects, it lets you develop the right product, it lets you identify practical problems early, it even makes you appear too fast for love** when it comes to client delivery expectations.
Todays mess and the source of my aggravation was me breaking my own rule. I had waited too long to deploy to production. Sure, I have been deploying to my test and staging environments regularly, but production was about 5 versions behind staging...
The result was that the database on production had missed a couple of upgrades along the way and the data no longer loaded into the more recent schema from staging.
It took a mysqldump of the schema on either side, a diff and some manual vim'ing to get a schema migration script going. Not pleasant. I vastly prefer to do nothing, over doing things as a stupidity tax.
So, from now on, small steps, deploy early deploy often, deploy to production also.
*double entendre alert
**Basil Koufus - every time he gets a chance