Software Engineering Has Its Own Political Axis From Conservative To Liberal
An anonymous reader writes "Steve Yegge is back at it again. This essay is on the notion that software engineers range from conservative to liberal in their notion of software and how it should be built. He says, 'Just as in real-world politics, software conservatism and liberalism are radically different world views. Make no mistake: they are at odds. They have opposing value systems, priorities, core beliefs and motivations. These value systems clash at design time, at implementation time, at diagnostic time, at recovery time. They get along like green eggs and ham. I think it is important for us to recognize and understand the conservative/liberal distinction in our industry. It probably won't help us agree on anything, pretty much by definition. Any particular issue only makes it onto the political axis if there is a fundamental, irreconcilable difference of opinion about it. Programmers probably won't — or maybe even can't — change their core value systems. But the political-axis framework gives us a familiar set of ideas and terms for identifying areas of fundamental disagreement. This can lead to faster problem resolution.'"
Does this mean they sit on a plate waiting to get eaten?
...who the fuck he is.
Note to Sales Department: I get that this is Yegge's slashvertisement ("anonymous reader writes..." sh'yeah, right...) but you still need the editors to set it up better than this if you want those click-throughs.
/. has hit rock bottom.
(for the record, this left/right, liberal/conservative, tweedledum/tweedledee polarization is bullshit. When you actually talk to people, you find a range of viewpoints. Know any concealed weapon carrying liberal democrats? I do. How about social conservative republicans who buy contraceptives? Yep. Or even worse, programmers who use the Visual Studio C# .NET WPF paradigm at work, and then use a Linux desktop coding open source at home. Probably so.)
Since you have to subscribe to Googer+ to get it (WTF?):
Notes from the Mystery Machine Bus
I've spent the past eight years (starting back in June 2004) writing elaborate rants about a bunch of vaguely related software engineering issues.
I was doing all that ranting because I've been genuinely perplexed by a set of "bizarre" world-views held dear by -- as far as I can tell -- about half of all programmers I encounter, whether online or in person.
Last week, after nearly a decade of hurling myself against this problem, I've finally figured it out. I know exactly what's been bothering me.
In today's essay I'm going to present you with a new conceptual framework for thinking about software engineering. This set of ideas I present will be completely obvious to you. You will probably slap yourself for not having thought of it yourself. Or you might slap the person next to you. In fact you probably have thought of it yourself, because it is so blindingly obvious.
But in my thirty-odd years as a programmer I'm pretty sure this way of thinking about things, if it already existed, has never been mainstream. That assertion is backed by what has to be at least ten Google searches that turned up nothing. So I'm pretty confident.
I'm going to make it mainstream, right now. Watch!
And I suspect this conceptual framework I'm giving you will immediately become, and forever remain, one of the most important tools in your toolkit for talking with -- and about -- other programmers.
The punch line, a.k.a. TL;DR
I won't keep you in suspense. Here is the thesis of this looooong essay. It is the root cause that motivated over half of my ranting all these years, starting at Amazon and continuing here at Google.
(Note: I Do Not Speak For My Employer. This should be patently obvious. When employers want someone to speak for them, they hire a person like the Mouth of Sauron, to make absolutely sure everyone knows they are speaking for the Employer.)
My thesis:
1) Software engineering has its own political axis, ranging from conservative to liberal.
(Note: Technically, you could stop reading right here and be at pretty much 90% comprehension. In case you care.)
2) The notions of "conservative" and "liberal" on this political axis are specialized to software engineering. But they exhibit some strong similarities to their counterparts in real-world politics.
3) Everyone in the software industry who does stuff related to programming computers falls somewhere fairly precise on this political spectrum, whether they realize it or not.
Put another way, YOU are either a liberal or a conservative software engineer. You may be more of a centrist, or maybe an extremist, but you fall somewhere on that left/right spectrum.
Just as in real-world politics, software conservatism and liberalism are radically different world views. Make no mistake: they are at odds. They have opposing value systems, priorities, core beliefs and motivations. These value systems clash at design time, at implementation time, at diagnostic time, at recovery time. They get along like green eggs and ham.
I think it is important for us to recognize and understand the conservative/liberal distinction in our industry. It probably won't help us agree on anything, pretty much by definition. Any particular issue only makes it onto the political axis if there is a fundamental, irreconcilable difference of opinion about it. Programmers probably won't -- or maybe even can't -- change their core value systems.
But the political-axis framework gives us a familiar set of ideas and terms for identifying areas of fundamental disagreement. This can lead to faster problem resolution. Being able to identify something quickly as a well-defined political issue means we can stop wasting time trying to convince the other side to change their minds, and instead move directly into the resolution phase, which (just as in politics) generally boils down to negotiation
Because, you know, there are like only two ways to code: Liberal and Conservative. There certainly can't be a THIRD way like Funny or Informative or Surprise and Fear. Damn! Or Ruthless Efficiency!
Sorry, but gray text on gray background is making my eyes bleed.
What he really means is, when it gets done, 1 group wants to give it out for free and the other wants to charge lots of money and DRM it lol.
If you're getting paid for your software, there's one set of priorities. If you're doing it for your own satisfaction, there's quite another. Not understanding or being able to separate business from the actual activity of writing software seems to be the problem.
I see this on a daily basis where I work. Younger software developers seem to think that "cool" and "new" is a good reason to do things - which it is, as long as it doesn't get in the way of making money. When there's a client involved and significant money, "cool" and "new" are only good if they actually help sell and maintain the software. The client doesn't care about frameworks, or ruby, or agile or lambda expressions. They care about cost, reliability and usability. Change for its own sake, or to gratify only the programmer is frequently a problem.
Please do not read this sig. Thank you.
WTF... Dear America: the rest of the world doesn't divide their "world views" between left and right. Stop trying to shoe horn such a limited value system into other domains.
Software development might have it's own set of views internally, but trying to associate one with liberalism and the other with conservatism is asinine. The context of everything would just muddle things up and the nuances would get lost. Does Yegge even have the social sciences background to even approach making this argument? Or is he just another programmer spouting off on his blog?
As a web developer, I am a liberal and find myself at odds with conservatives who often just can't see simple business needs. Conservatism is good for heart monitors but for building the next facebook? But the Conservative amongst you will argue, don't you think that a billion dollar, millions of visitors, holding fast amounts of private data site NEEDS to be extremely secure?
And it shows much you don't get it if you think that. I said the NEXT facebook, which will start out as a small site with a shoestring budget and bankruptcy just a bill away. Then you need to deliver a product BEFORE yesterday and all the fancy stuff can come later when you are rich and can afford to hire the terminally slow.
I have talked with webshop clients who wanted triple redundancy and failover to carry max expect load... YOU HAVEN'T SHIPPED A SINGLE ORDER YET! And PAY MY BILLS FIRST! Part of the reason the tech bubble burst was all these old developers insisting on enterprise grade hardware with oracle licenses coming out of your ears, meaning that even if they would have ever been able to release a product, the operating costs would have been so high, the break even point would have been somewhere after the heat death of the universe.
The big ones that did survive made it on cheap hardware with buggy, hastily written code that was good enough to make it to the next month.
One old school guy I worked with wanted a detailed plan for general debugging when there was a crisis... because he first wanted to fully analyse the problem before bringing the server down if it started coughing up bad orders because that is what you do in a factory, your don't shutdown an entire factory just because a few widgets come out wrong...
The moron never managed to understand that you DO shut the entire factory down if the cost of 1 defective widget is equal to profit of an entire days output of that factory.
For web shops, margins are tiny and customer service is very expensive. It is BETTER to be down for an entire day, then have to spend a week dealing with complaints because of messed up orders. 1 day no-profit == 1 day of low costs (highest cost are sending and goods, both of which are non existent if you don't ship anything) while shipping orders wrong so they have to shipped again gets VERY expensive REALLY fast.
So, you shut things down and dive right in and fix it, just good enough to get up and running again.
But doesn't that prove you should write bug free code? Only if a website has infinite resources for its startup. Most don't. If you got 10 grand to start a website, you need 5k for supplies, 3k for shipping and that leaves 2k for code. When that money is gone, the webshop either needs to have earnings coming in or it is down the tube.
It is different if there is a large established company and you can pull a MS and just throw good money after bad. But 99% of web development ain't like that.
Mind you, I wouldn't like to fly a plane I had written the software for.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
"We regard political conservatism as an ideological belief system that is significantly (but not completely) related to motivational concerns having to do with the psychological management of uncertainty and fear."
Thanks, dude. Being a conservative myself, I suppose one example of that distinction is that I think there should be more guns in the general population, because having the good people in our country be a little dangerous seems like a healthy thing to me. The reaction of liberals whenever I bring that up truly evidences a position of bold, experimental confidence and legislative permissiveness. Can't detect an attitude of fear at all in their response. /sarcasm
That and the green eggs and ham thing. Has this guy not read the world's great literature?
Yes, exactly. It's just code, it's not your life. But if your code is going to be used in a way that can save or cost lives, you're damn sure going to take a very cautious approach to make sure it works exactly right.
But of course this entire, overly-long rant begins with a stunningly flawed premise:
Uhhh ... FACEPALM! No, it's not just controversial, it's total crap. It's some justification dreamed up by some circle-jerking academics that took some political views (generally ones they didn't like), lumped them into a pot they called "conservative", then went around congratulating themselves for thinking they finally understood something that their ideological blinders made them incapable of dealing with.
I blame the poor state of accurate historical study in public schools and universities these days, but that's just a stab in the dark.
But if you study political history, it's pretty clear where the foundation of what is currently called the Conservative / Liberal viewpoints came from, and you can trace it back several hundred years to John Locke and Thomas Hobbs: Which is more important: The social collective or the individual? And when collective ideas run afoul of individual rights, how should the conflict be resolved?
Yea, start with that premise if you even want to discuss the idea that programmers are driven by the same dichotomy. Maybe then you wouldn't look like such a douchebag, Mr. Yegge.
"Somebody has to do something. It's just incredibly pathetic it has to be us."
--- Jerry Garcia
No True Scotsman.
Give me Classic Slashdot or give me death!
Just as in political journalism, he couches everything in positive language to avoid offending conservatives, because they are a protected class and their belief system must be respected.
No, here's how it really breaks down:
Conservative = waterfall
Liberal = agile
Funny that, now the resemblance to the political axis and the "reality bias" is uncanny.
Why are there people who try to create binary conflicts when there really aren't any?
He's right that there are opposing ideologies, but Liberal/Conservative just muddies the water.
Utopian believes:
1) Zero defects is achievable and support processes should assume that will be the case after release.
2) "Good code" is the result of using an "industry standard" language.
3) That full functionality specifications can be collected during design from the people who will be using the system.
4) Achieving 1-3 is more important than delivering the functionality requested by the users.
5) Considers that the delivered project will be "complete" and further modifications will be minimal.
Pragmatist believes:
1) That defects are inevitable and support processes need to allow for easy/quick recovery.
2) "Good code" should be inherently understandable by the majority of those who will be making changes to it.
3) That human memory is spotty and nobody is able to tell you 100% of what they know.
4) Delivering software that meets the needs of the user is more important than perfection of the code or processes.
5) Understands that the world changes and the software needs to make those changes easy.
As you can guess - I'm a pragmatist.