Recently I found myself arguing in favor of automated deployments and builds (from both the Database side and the code side). In of itself, this is not new. I’ve been an advocate for this as long as I can remember. Before you somehow think me a principled man, remember that I embrace the three virtues of a good programmer:
Laziness – The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don’t have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. See also impatience and hubris.
Impatience – The anger you feel when the computer is being lazy. This makes you write programs that don’t just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer. See also laziness and hubris.
Hubris – Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won’t want to say bad things about. Hence, the third great virtue of a programmer. See also laziness and impatience.
I admit, I’ve strayed from the fold. When I bought my Macbook Pro, my first task was to set up my development environment. Besides the normal pain of having to have Windows 98SE, WinXP, and Win7 discs for this install, I needed to pull down the Source code for my projects and get IIS and SQL Server set up for local development.
Enter: Giant Gaping Flaw In My Plan.
As it turns out, the twiddling I’ve done with local builds to ensure that SQL Server runs (instead of just throwing error 40) doesn’t translate well across dev environments. Neither does the database. My database isn’t in source control.
/facepalm.
So this week I’m taking the time to put my database under source control and working on scripting out the settings needed to bring any development environment I’ve built up to speed using Powershell.
I can hear some of you now, wondering Why the hell is he doing that for his personal projects? The answer is simple. I need to practice what I preach. Yes, it’s overkill, but it’s also beneficial. I can’t tell you how many times I’ve dealt with a new hire who has had to spend time setting up their own development environment. Doing this will give me the experience necessary to automate that for any future work. Plus, building ladders is fun.