There’s this push lately in the IT world for DevOps. It goes by other names too but that’s the most common.
It’s not inherently a bad idea, but what most companies are attempting to force DevOps to be and what it will actually be is two very different things. Companies are looking for a great developer who is also a great sysadmin. What they will get is either an ok to good developer who is a poor, dangerous systems administrator, or a ok to good systems administrator who is a poor, dangerous developer.
I’ve been in the IT world a while, and the number of people I’ve met — out of the hundreds to thousands I’ve known and also hired — who would make both good programmers and good systems administrators is — maybe — one. This guy was very probably an actual genius, though. IQ in the 160-180 range. The number who’d be great in both areas is none, not even that one dude.
Like I said, I have never met a single one. They may exist, but there aren’t many.
My partner is a great programmer. Don’t just take it from me — all her bosses have said so. But when I talk about the things I do at work she has no clue what I’m doing or what the terms mean or how to zone fiber channel (something I did today, and if you type even one character wrong in a few areas, the entire customer production environment will go down) or how to set up HSRB or automate a VMWare ESXi deployment.
Developers — who tend to be pretty arrogant — think what they know about systems administration is all that there is. What they generally know is the person who comes to fix their PC (not a systems admin) or that it involves like clicking a button in Active Directory or something. Hell, anyone could do that!
(There was some utter tool on Hacker News who insisted that installing and managing Microsoft SQL server could be done by anyone, and was easy. Yep, anyone can click through the wizard and install it. And it’ll be full of security holes, configured incorrectly, and completely not scale. But he clicked through the wizard on his single-user dev box, so that’s all there is to it!)
But here’s what being a systems administrator really involves.
It means understanding deeply the systems an environment uses, and how they interact. It means being able to hold the entire picture of the network in your head and knowing almost by magic (really experience) where a fault is located, and then find it in minutes where your DevOps might find it in hours or days (if ever). (Been there, done that by the way!)
It means being able to design scalable, reliable solutions that are cost-effective and comprehensible.
For instance, I just designed and built a solution for a company I’m consulting for. Right now it can only support about 20 users. More than they actually need, by the way.
But with a few clicks, a few PowerShell scripts and some more money, it could support 10,000+ users. I figure we’d have to move to another solution at about 15,000 users. But if this company gets 15,000 users I’ll be so rich I won’t fucking care.
And right now it only costs $500 a month (absolute peanuts in this space). And I did it just like that, in hours.
I’d like to see the fucking joke of a system a developer would put in place compared to what I built. It’d be more explosion-prone than a Pinto and more likely to fall over than a giraffe mainlining Absolut.
Think your DevOps can do that? Do not. Fucking. Make me laugh.
A lot of this — most of this — is an attempt by companies to save money. But much of it is the belief that everyone should be a programmer and everything else should be a side concern.
While I do find myself writing more scripts than ever before these days, being a programmer is not and never will be what a systems administrator is all about.
Developers and systems administrators are very different fields with very different concerns, and it will always be thus.