A few weeks ago, I was hacking away on prototype software for my new class. I was doing that horrible thing where you make a few changes, hit “rebuild” and wait for five minutes to find out if you fixed the problem. And I realized something surprisingly awesome about configuring servers.

Deployment turned into high-end development while we weren’t looking.

The best tools for configuring your server, Chef and Puppet, now describe themselves in terms of idempotence and declarative programming — they’re using the same concepts as Big Data tools, functional languages and other theory-heavy development.

And those “best tools” aren’t in a lab or a research paper somewhere. Silicon Valley already uses them and the rest of the world will soon. Puppet and Chef are extremely common - my last four years of workplaces all used them. These tools just work better than the provisioning tools before them.

Like most “best tools” you don’t know much about, they’re a bit young and raw. “Cutting edge”, you might say. “Bleeding edge” wouldn’t be far off either. They’re clearly still growing new features — and even whole new areas of functionality.

Welcome to the new world where “deployment” is a new, interesting, involved, painful kind of development. Just like web development was fifteen years ago, and Big Data was five years ago (or now, depending who you ask.)

These days deployment and server configuration tools get bundlers, deploy-specific test suites, and even linters, not unlike how JavaScript grew JSLint to get you to use just the good parts.