Skip to main content

DevOps as a critical investigation of our fucked up business culture

I was having dinner with a friend the other night, and we were talking about a bunch of things, including the state of the current culture of the Technology Industry, which is where we all work... me, my friend, my spouse, most of my social circle, etc. And we were talking about definitions and the corporate tendency to take interesting philosophies and turn them into undifferentiated pablum designed to keep labour fighting amongst themselves. Take, for instance, "Agile". It started, I understand, as a philosophy to help developers work together better as teams instead of a mass of individuals, as the modern codebase has for the most part moved beyond the idea of the artisanal coder, carefully banging away at his (almost always his) codeforge to craft the perfect piece of individual bespoke software for the discerning, carefully chosen consumer-slash-patron. As software development turned into a team sport, and the experience of coding became an assembly line function, the question was "how do we convince rabid individualists to work better together at a fundamentally creative process?" So the idea was to use this concept of Agile: light, nimble, heavily-communicated, careful processes that encouraged folks to work as teams and keep each other in the loop about what was working, what wasn't, and what they could do about it to get stuff out the door. There are a ton of tools that can be used to facilitate Agile methodologies, but the actual tools aren't nearly as important as everyone understanding the philosophy.

Of course, as is usual, the people who make the money and the people that have MBAs and the people who run the companies as a profit center for shareholders often don't understand (or can't be bothered to understand) this philosophy; it doesn't have anything to do with them (they think) and also their bottom line is "what shipped, when, and how much can we charge for it", not "are the people who do the work cooperating with each other to be creative in a way that minimizes difficulties and maximizes creative opportunities". Which often leads to the teams that are utilizing Agile methodologies to try and sum up the concepts in a 5 minute recap as part of a 30 minute meeting, and one-sheet recap emails, and "executive summaries" and then we end up with people who use "Agile" as a verb, and now Agile doesn't actually mean anything, it's just another buzzword to be tossed around during sales pitches and recruiting calls. And there are lots of people making moderate amounts of money by writing books and giving seminars and doing corporate training gigs on "how do to Agile" which is fine, I guess, if you can't be bothered to take it to heart and build the tools that help your team work best, because the philosophy and methodology is more important than the specific tools. "Agile: where the stories are made up and the points don't matter" isn't just a funny line; it's both a disappointment AND a core tenet of the methodology (and yes, both can be true, because the point of view on that core tenet is what matters). Context matters.

And that brings us to the Next Big Thing in labor cost reduction productivity: DevOps. This is a great one, because it sounds sexy and it's a portmanteau (and IT loves portmanteaus) and from the corporate perspective it means whatever they want it to mean, especially if it means "we don't have to hire those pesky Ops people because they're expensive and annoying and notoriously difficult when it comes to releasing the Big Feature Rollout". You are already paying for the developer's time, and a hefty amount too, so now you can just add them to the pager rotation and have them do support functionality, because labor costs are fixed and work hours are infinite. The thing is, that's not what DevOps is about.

My understanding (having worked in IT for a couple of decades) is that DevOps, like Agile, is a philosophy, rather than a concrete item. DevOps doesn't mean that all your coders should be sysadmins and all your sysadmins should be coders, and if you think that you're going to be perpetually disappointed in both. DevOps means that everyone in your organization has an understanding: that software must be developed in a way that is easy to support and maintain (especially in a degraded or failed state), and that deployment of software is a key step in the lifecycle of the success of a company. DevOps means a breakdown of the mythical wall between departments, and an understanding that that wall was always imaginary anyway -- that the teams working together are stronger and better off than the teams working against each other. It's not actually a new concept; the operational and development team being colocated in the same physical space (and sometimes the same physical body) goes back to the invention of mechanical computing and the work that Admiral Hopper did with the original thinking machines. The "tiger team" concept at NASA in the 60s was a definitive example of the DevOps concept. Not everyone has to know the same things or work the same way, but they do have to work together and they must have an understanding of the concepts and capabilities of the team as a whole.

Any organization's first principle after instantiation by default becomes 'secure the continued existence of this organization', or the organization itself fails. And so, sixty years later, we have the cultural mythos of the 10x software engineer deftly whipping up the perfect solutions to any given software problem and then dumping those brilliant lines of code onto the surly, recalcitrant systems administrator who either refuses to make the change, or does the change and somehow fucks it up. (And note, please, that the "creative" work is done by an 'engineer' while the "maintenance" work is done by an 'administrator', and let's not talk about salaries and job titles right now or this will turn into an even longer screed and I'll get distracted by the whole "full stack" thing and we'll be here all night.) But that's almost never how it works, on either end; it's a myth from soup to nuts. In my entire career, I may have known exactly one engineer who would be considered "10x", and he was always, always cognizant of the difficulties of deployment in a live environment. Conversely, I've only ever known one surly sysadmin, and he was so disruptive to the team morale that he didn't make it to his 90-day review.

DevOps, like Agile, is a philosophy. It's not something you can enter on a spreadsheet or write a purchase order for, no matter what the C-level executives would like to believe. It's an understanding that your managers have with their team members and your team has with each other and with the organization as a whole. It's not something that goes on an audit list and gets checked off during the rundown. And the failure of organizations to understand that is both costly and pointless in the long run.

Comments

Popular posts from this blog

Money and Happiness as a fungible resource

Money really does buy happiness. Anyone who tells you differently has a vested interest in keeping you poor, unhappy, or both. I know this because I grew up on the ragged edge of poor, and then backed my way into a career in IT, which is where the modern world keeps all the money that isn't in Finance. So I am one of the extreme minority of Generation X that actually had an adulthood that was markedly more financially stable than my parents. And let me tell you: money really does buy happiness. To be clear: at 45 years old, I'm now in a relationship and a period of my life where our household is effectively double-income, no kids. I live in the city, but I own a house, and can only afford to do that because of our combined income. We also have two cars -- one new, one used (though neither of them is getting driven very much these days) -- and we have a small discretionary budget every month for things like videogames, books, and the like. What my brother used to call DAM -- Dic

Occasional Media Consumption: Man of Steel (2013)

Every so often, there's a movie where I watch it and think, "that was pretty bad", and then time goes by, and I see other people talking about it, and so I watch it again, thinking I was too harsh on it, and after watching it again, I think "not only was that movie bad, it was worse  than I remember". I try very hard not to hate-watch anything, movies or TV or whatever, because that's a waste of time, energy, and emotion. My expectation was that my first reading of this film was overblown, that my reaction to it was as an outsider, someone who didn't know the depth and breadth of the Clark Kent / Kal-El story, and who couldn't appreciate the subtleties or easter eggs or whatever. But in the intervening years, I've read a bunch of DC comics, and many of them Superman comics. And I've come to a conclusion upon rewatching this movie, one that surprised me given the budget, the cast, and the story being told. Rarely has any movie so misunderstood

Occasional Media Consumption: Justice League (2017)

So let's get this out of the way first: this movie is bad. I mean, it's bad . And not in the way that most superhero movies are bad, though it is bad in that way too: inconsistent characterizations, lack of understanding of motivations, weirdly-shot fight scenes, dodgy use of CG, etc. I mean, it is bad in all of these ways too, especially the whole thing where they digitally removed a mustache from Henry Cavill, who's honestly doing his best with a bad script and a character he's fundamentally unsuited to play. Gail Godot, in an iconic roll for her, suddenly shoved out of the way to make room for (also fundamentally-miscast) Ben Affleck's the Batman and Cavill's Superman, And Ray Fisher and Ezra Miller trying to introduce characters that honestly deserve their own movies. Jason Momoa's Aquaman got his own movie, but as far as I can tell he's just stepped into this one from a whole different universe and is basically pretending to live in the grim-n-gritt