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.
tl;dr I am a second rate blogger and am thinking up the most hit-absorbing way to get people to read my effluent.
Also you can assume I am the "wants to make money selling crap" wing, whatever that is.
(cue left-wingers saying "that's the right wing" and right-wingers saying "that's the left wing")
You write your own compiler, and you don't care if your code runs for anybody else.
/. 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.
I would have gone the other way with this one. The AL programmers I know like it precisely because they have more control of the machine (e.g., they can name specific registers and memory locations for storage) than if they were using a higher-level language, where they would be at the mercy of the compiler, and its unknown decisions. If "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," then these guys manage their uncertainty and fear of the compiler by doing everything themselves, and therefore fit the definition of conservative. Yes, they're typically older; I haven't met Mel, but he's of this type -- although because he' uses machine language, he's perhaps even more extreme. One wouldn't call him liberal, correct?
I suppose it's possible that the spectrum line is actually more of a circle, and batshit liberal and batshit conservative are either the same, or next-door neighbors.
This is just nuts. Either this is a joke, stress is getting to this guy, or google has started employing loonies.
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?
Moron, software engineers have political (programing) opinions, software is either bad (bloat) or good (useful). :P
On the other side I am quite sure that msoffice makes my life living hell because of my political opinion
Maybe I'll start a kickstarter campaign to design the ultimate slashvertisement! I figure it should cost about 10 million dollars!
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
(cue left-wingers saying "that's the right wing" and right-wingers saying "that's the right wing")
Inser ftfy meme here.
Don't be a h8r.
I suspect his next missive will be on how your coding style is governed by your starsign[1].
[1] Obviously starsign as per the commonly used astrological calendar rather than the sun's actual position against the ecliptic constellations at the time of your birth.
So, the main message from the article (Despite the "Author"'s efforts to slant it othewise) is that bad design and programming practises should be called "liberal" as opposed to simply ignorant?
kartune85 : Incapable of reason, observation or learning. A kind of dim, drab, flightless parrot.
"Fear and Loathing" is one of my favorite.
Absence of proof != proof of absence.
"Any particular issue only makes it onto the political axis if there is a fundamental, irreconcilable difference of opinion about it. "
No, Politics is mostly if a particular set of tradeoffs is worthwhile, most things sit in the grey areas.
This false believe that there are fundamental irreconcilable differences pushes a BS hyperpartisan attitude where nothing can get done.
In the real world, things simply come down to where people draw their line on a particular issue
Conservatism, at its heart, is really about risk management.
Yeah, they sure managed the hell out of the risks of invading Iraq and completely unregulated credit default swaps. Conservativism is not about risk management, but fear management. Keep people afraid of something else and they'll let you rob them blind.
Give me Classic Slashdot or give me death!
Though to put it in perspective, I think $1 million was also what their CEO paid for a round of golf and some sushi afterwards.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
I'm not bothering to read the obvious slashvertisement. But that's not to say the author doesn't have a point.
This isn't comparing politics, it's about ideology. And purpose.
Writing code for hospitals (as I did in the past), or NASA, or nuclear reactors requires you by very conservative in your writing. I'm a very liberal guy, but I can clearly understand the need to make incremental changes for critical infrastructure. Coding isn't my thing, so I left that and became a system administrator. I'm now at an institution that is practically synonymous with Liberal and there's a wide mix of 'conservative' and 'liberal' approaches to coding and IT in general here We have ad-hoc storage devices sitting under someones desk that serves a department and there's also an enterprise-grade storage solution that's a few PB in size. Both have their place, and both can and do co-exist in the same environment.
I'd argue that these methodologies co-exist better than their political counterparts. Decisions can be made on basis of fact and need rather than just gut or making the 'other side' look bad. Be it the Oracle server or the MySQL server or whatever new NoSQL implementation is out there, nobody wants to see them fall over dead.
I'm rambling and I didn't get much sleep last night, so I'm just going to stop there.
No it doesn't. I have no account with Google and I read the article just fine.
Give me Classic Slashdot or give me death!
It's not software developers who are conservative or liberal. It's people!
I'll use this when hiring so I can get a team that shares my values. Interview questions: Are you a Republican? Yes? Take a hike. Are you a Democrat? Yes? Take a hike. Are you an Independent? Yes? Obviously you can't make decisions, take a hike! Are you an anarchist or libertarian? Yes? I don't need folks with authority issues. Take a hike? Are you a Communist or Fascist? Yes? Let's do lunch. I want to see if you bend to my will. Socialist? If you are hot and female, let's talk. No I'm not hiring you because you'll want awards for showing up. OK, who is left? No one? Damn, you just can't find qualified people any more.
Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
I've spent the past eight years (starting back in June 2004) writing elaborate rants about a bunch of vaguely related software engineering issues.
And what did that accomplish?
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
Way too late for that.
I know exactly what's been bothering me.
Your narcissistic personality disorder?
I feel that this is an incorrect analysis. Depending upon the problem to be solved, all programmers will adapt the appropriate style.
When life is on the line, all programmers are conservative. When money is on the line, cautious. When writing a one-off script to test a programming technique, liberal. Even management, who tend to push programmers to be less cautious, adjust their demands for the situation.
Time to shake off the liberal drivel and MS bashing your college profs indoctrinated you with.
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.
Here'a my programming politick: Several programmers of both types hamhand things and cannot find their bug for hours to 2 days...
Me: "Move!"
10 minutes to 1/2 hour later: "Here."
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
No, they save that last part for when their "prediction" fails to match up with what actually happens. So then they say "oh well, to get an ACCURATE forecast I need to know exactly where and when you were born".
Seven puppies were harmed during the making of this post.
They get along like green eggs and ham.
So, really well, then?
"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?
I read the entire, lengthy pile of bullshit presented and I can boil it down for you.
The guy has a list of things he doesn't like and then associates it with a political faction he doesn't like, so he can embarrass the people who do the things he doesn't like by associating them with the political faction they most likely do not want to be affiliated.
It's a Rush Limbaugh tactic used to polarize a topic and try to force people to behave like you want them to behave.
Expert Scientists announce that the sky is blue, and not, in fact, green as was previously believed by nobody at all.
I disagree with everything in the article. His definitions, the entire premise, his dislike for green eggs and ham as a culinary masterpiece. He's not even wrong.
Well.. maybe. Or Maybe not. But Definitely not sort of.
This is exactly the kind of reasoning that makes me want to verbally tear someone a new backdoor for their production system, if you know what I mean.
A dev's approach to writing code isn't a binary state; neither is political ideology, for that matter.
This is a classic case of someone coming up with the "answer", and then attempting to find a way to logically justify it. But hey, since this is "Snap judgement and reason later" Friday, I'm going to automatically assume that Yegge is one of the geniuses behind the push to put everything on the cloud, despite the fact that more than a few long-term prediction models show user data volumes rising geometrically and overtaking infrastructure increases, or the inherent privacy and identity risks associated with waving's one's digital cheese out in the electronic wind.
Let's put this logical tar pit to bed before someone has to ponder if LISP programmers, being "liberal", would support gay marriage.
I haven't read the article, as I often only have time to glance through these. Are they referring, as an example, to proponents of the waterfall process vs. Agile?
I would recomment a 3 year stint in embedded for app programmers. You'll be shocked how sloppy you are, and, more importantly, how needlessly sloppy. Many techniques can be incorporated without slowing down the freewheeling development much at all.
Somebody mod that guy up.
TFA looks to me like the author has just realised that there is a tension between competing quality requirements.
There are over 100 different quality attributes that one might consider when planning a large project. To think that they are all lined up on a single axis is somewhat absurd. The reality is that the problem has a rather large number of dimensions, and finding the optimum solution in that problem space is hard. This is what software architects do.
Wow, what is it with the need to pigeon-hole all thought into 2 categories? Not everything is Liberal or Conservative! Those are incredibly crude, essentially worthless labels.
In reality, there are infinite numbers of ways of thinking about things and ways to implement that idea, whether that is a political idea or a software feature. There are best practices defined for some of these, and lots of other areas where intelligent consideration is required to attempt to understand the ramifications of something. One then balances risks vs costs/efforts, potential benefits, etc.
As far as politics go: because the US only has 2 political parties, they are aligned with the only two alternatives and you have a vigorous debate going on about two very subtly different parties that represent the corporations and elite. Meanwhile, many alternative ideas are just ignored. Picture a giant circle, representing all political philosophy and consideration. Then draw 2 tiny, almost completely overlapping circles inside it. Label them "Liberal" and "Conservative", and that gives you a pretty good idea what I'm talking about.
This isn't an accident either, because the last thing the oligopoly wants you to do is realize there are other ways of doing things. The entrenched system works pretty darn good for them. Not so well for the rest of us though.
Fail
Yes, you did fail. I had no trouble reading it, and I'm at work and can't log in to G+. You didn't miss anything though, the article was way too long, rambling, poorly written, and didn't really say much of anything.
Free Martian Whores!
"Everyone in the software industry who does stuff related to programming computers falls somewhere fairly precise on this political spectrum,"
Conservative to Liberal in US political terms. Hmm, USA!=World. Fail.
Quite apart from the fact that some folk who do stuff relating to programming computers are clearly out and out anarchists if we're to judge on the evidence and I am sure you'd all agree the Open Source people are definitely Evil Commies :-)
Especially things that aren't.
That is why they don't spend 5 years just to master Unix. Instead they spend 5 weeks to master Powerpoint and PHP.
Evolution by natural selection doesn't seem to fall on your over simplified scale.
I have worked with coders who memorize easily but couldn't code their way out of a paper bag - slop it together with a lot of buzzword-centric "frameworks" but can't be installed on another computer without great care & feeding & won't work past the first "file not found" trap/exception.
I have worked with coders who barely remember libc function parameters & thanks to man pages get the job done. They are the ones who analyze program usage to cover typical & atypical problem situations & code good recovery functionality.
Which group do you want to be coding your next airplane ride or Curiosity rover?
I never thought of it in terms of "conservative vs. liberal" & it may or may not apply.
I have observed that the memorizers seem to have plenty of time to politic their way into management while analyzers get in trouble for saying "I told you so" when memorizer-coded solutions fall apart. Oh well...
Gee thanks for ruining it. BTW, I still have a book report due on this. Do you know where I can get the Cliff's notes?
Great. Because bickering partisanship has worked so well for politics.
- For the complete works of Shakespeare: cat
Yes there are differences of opinions in methodology, nothing new. What I have noticed is a social divide. You have the old school nerdy programmers and you have the overconfident frat boy bro-grammers.
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?
I have grown heartsick, just down- and dog-tired, of the cottage industry in the public discourse of setting everyone at each other's throats. Pundits spend so much time and energy inciting riots while real problems go unaddressed.
So when this fellow comes along and tries to stir up the same nonsense among programmers it gets my goat. Didn't we learn anything from lasting damage of the vi vs. emacs Holy Wars of the past? TIMTOWTDI, people. Don't buy into this guy's screed.
Do we need a public awareness advertisement of a field of nerds at each other's throats while Stephen Hawking looks on, a tear running down his cheek?
If not us, who? If not now, when?
there fixed it for ya , ya know those military boxes a food that are all purple yummy
Say you're selling a web-based application to web site operators, and these operators are using hosts that charge substantially more for anything but PHP.* Wouldn't you have to learn PHP in order to make a web application that you can actually sell to them?
* Such hosting providers exist. Open this page, click "Linux plan details", and scroll down to "Language Support". Look at how the plan including Perl, Python, and Ruby costs twice as much as the plan including only PHP.
It really doesn't matter which side of the political spectrum you write your code in, as long as the bikeshed gets painted white.
Waterfall and agile themselves are development methodology manifestations of the more general conservative and liberal split Yegge is talking about.
Have gnu, will travel.
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.
Bugs are not a big deal. They happen anyway, no matter how hard you try to prevent them, and somehow life goes on. Good debuggers are awesome pieces of technology, and stepping through your code gives you insights you can't get any other way. Debugging and diagnosing are difficult arts, and every programmer should be competent with them. The Christmas Eve Outage scenario never, ever happens in practice -- that's what code freeze is for. Bugs are not a big deal! (This belief really may be the key dividing philosophy between Conservative and Liberal philosophies.)
Do people really believe this? I mean, I can understand that there will always be some bugs left, but doesn't every good programmer try to get rid of their bugs, at least the major ones?
"First they came for the slanderers and i said nothing."
In one respect, this concept is right - as a software developer, I'm like a politician - I work for the highest bidder.
1. He chooses a large number of characteristics such that he can find a significant set of programmers who believe in several of them and declares this set to be 'Conservative'.
2. He defines people not in that set to be 'Liberal'
3. ???
4. Profit.
5. He observes that there is a set of people that he thinks should be 'conservative' but actually turn out to be pretty balanced. Oops.
Just as in real-world politics, software conservatism and liberalism are radically different world views
Is that a joke?
Is this just going to polarize the community more than it already is and lead to deadlock situations like we see in the American political arena?
Must be a slow news day at slashdot towers
Facts are history now plebs have politics for religion on social media.
I don't think the readers of /. realize that Steve Yegge's posts are supposed to be funny.
I thought the split was "New Jersey Style" versus "MIT Approach"?
I guess its time to tell the kids to get off my lawn.
-- I browse at +5 with stripped sigs
Different Anon person. Google+ is blocked at my employer along with facebook and twitter. So these google+ articles are really frustrating. I click on the link and suddenly and I get a scary warning about social networking at work.
the People that make up the people are not liberal or conservative, they are just the people. Its the politicians and here the software "Engineers" who are.
Well; we need to change that... As software objective is to automate complexity so it can be accessed and used through a simpler interface... this means genuine software engineering should soon reach the state of anyone being able to program by simply telling the computer what they want...
This way even the users can participate in conservative or liberal affairs
Many other disciplines have the "conservative or liberal approach to risk-taking" spectrum.
Granted, there are some disciplines, such as some branches of science and engineering and clerical leadership in some religious organizations, where the "gatekeepers" make "adopting the party line" a requirement for admission to the profession, but even in those cases, you will find people who "fake it" and don't line up with the "official view" of the discipline.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
So Yegge can only see the world in a black and white view? Someone should explain to him the world isn't binary.
Oh and tell him no one outside of Google uses Google+.
Because everything must be reduced down to a 1 or a 0.
I am not a number! I am a human being!
This can lead to faster problem resolution.
Like it does in congress?
about this man, ive been working software development for years and conservative coders have trampled on me for a long time. First with globalized variables and for functions with huge returns, and then complaining about local variables in my code that havent worked for years, but still take up too much resources? i mean 99% of the code is local variables in the project im working on right now. yeah some of the stubs might not work but the rest of them do just fine. Im not trying to use Class warfare or anything because ive coded around most of its methods (the conservatives pretty much demanded it) but i swear if they dont stop ignoring the garbage collectors ill be forced to occupy swap space.
Good people go to bed earlier.
Programmers disagree about risk.
now we need to go OSS in diesel cars
Not only does the author of TFA make a false dichotomy ("Everyone falls somewhere on this line..."), he contradicts himself later when he weakly tries to address it by talking about how there are fiscal conservatives who are socially liberal. (Hint: you can't have that and "everyone" falling on a line at the same time. His entire argument just fell apart.)
I don't agree with the political definitions he uses, and I don't agree with his programming definitions either.
All in all, in my opinion he made a fool of himself.
I've been a software engineer for eighteen years, and this entire article, its opinions and attitudes, are quackery at best. This guy is surely middle-management material, but only if his aspiration is the pointy-haired boss.
The worst part? It's so beyond dumb that I have to break my habit of "live and let live," ignore it and move on, and instead leave a comment on /.
Google actually hired that guy?
I could've compared programming styles to zodiacal points and it would have had more meaning to me than a political comparison.
This just looks to me like he's rediscovered the old "Right Thing" vs. "Worse is Better" philosophies, as spelled out by Richard Grable in The Rise of Worse-is-Better 25 years ago. In a lot of ways, I think Dr. Grable's idea is probably even a better way of looking at it.
Overall though, I think its a very good contribution to the discussion of software engineering.
However, I do have some minor quibbles. Realise as I say this that I'm a big Ada fan, which makes me by his reckoning a "hardcore conservative". I can't really argue with that. However, as someone from that community, I take strong umbrage with him ascribing being a fan of premature optimization to us. Nothing can be further from the truth. Doing anything to pervert code from a good-maintainable design without proven need (derived from tests showing a measurable bottleneck in the affected place), is indeed considered evil.
The point of this is that I just gave a impassioned argument against something he called a "conservative" attitude using what is clearly a conservative argument. I didn't make it up myself though. This is the argument I usually hear against pre-optimization. So I have to conclude that pre-optimization is in fact not a feature of a "conservative" outlook. We would probably argue it belongs with the "liberals", but more likely it is just something only argued for by incompetents. :-)
Actually, it gives people flags to rally 'round both to defend their positions without thinking and to avoid evaluating alternatives.
Congratulations, this was the dumbest 'oops' I've ever read on software engineering.
There are two kinds of social scientists: ... awe shit.
1. Those who create false dichotomies to make their point.
2.
-
I don't care what you call it, but stop stealing the code and objects I wrote as Freeware with license or GPL and privatizing what isn't yours for your own private profit.
That includes the menu driven object oriented systems and common objects I wrote decades before you tried to "patent" what wasn't yours in the first place.
-- Tigger warning: This post may contain tiggers! --
therefore its all invalid. Yeggefail
How about studying how different religious beliefs, or viewpoints produce different software architectures? Might a belief in a singular god, or creator god produce a tendency of creating more centralized architectures, while a more distributed architectures are more natural to the polytheists, the pantheists, the non-theists and the atheists?
This only makes sense to people who think that 'conservative' and 'liberal' have unambiguous meanings, and are the only two possible points in some kind of ideological continuum. Much of the rest of the world doesn't think that way.
Ha! You said political and faster problem resolution in the same sentence!
There's a bit more, but that's the gist.
i compared the 9 things for cons. and liberal side by side. apparently i'm neither/both, because i checked things from both sides in about even amounts, and no i'm not a "centrist". some of the things i checked because they are FACTS. which tells me this political spectrum is no different than the political political spectrum, in that a large reason why it exists is because some people can't tell the difference between empirical fact and personal opinion. but what's worse about this spectrum, is because unlike the political spectrum, there are facts on both sides. and in #4 i checked both. am i inconsistent? no, the "liberal" and "conservative" for #4 are not mutually exclusive, they are logically independant! also #5 i checked neither because both are extreme, and the whole premise of #5 is based on a black-and-white fallacy.
there are programming practices that are simply better, and others that are simply unrealistic, and both of them lie on both sides of this artificial spectrum.
also the languages - the "conservative" ones listed are all very old and verbose and have horrible syntax, while the "liberal" ones are newer and superior. So perhaps he's confusing old people and young people with conservatives and liberals.
in any case, a very poorly made case, imo, and a very wordy essay, too boot.
The real irony here is I'm fairly sure Steve already read this post years ago, since it has his name and is one of the people who I know he has something of a personal relationship with: http://www.codinghorror.com/blog/2006/10/software-development-its-a-religion.html
Sounds to me like the difference between artists and accountants. I want an artist engineering my code. A brilliant, eclectic genius whose intellect and talent create wildly interesting and powerful solutions. I want an accountant exhaustively testing and beating that solution up to make certain that it's everything its speced to be and that it will in fact accomplish the task promised. I see plenty of room for all types in the house, You just need to give each type the kind of task that sings to his talent and intellect.
Try finding a bug that only reproduces after a system has been up for at least 25 days. Or a driver issue that intermittently causes a 10-gig port to initialize at 1-gig due to interactions with the system on the other end of the connection.
Why yes. Yes, they are. Static typing is unquestionably one of the key dividing software-political issues of our time. And static typing is a hallmark of the conservative world-view.
I stopped right there and decided this guy is an idiot.
This reminds me of an essay, Architecting Governware, that I wrote about a year ago. This one makes a more explicit analogy, and draws political conclusions from the software metaphor rather than the other way around, and compares libertarianism and socialism rather than "conservativism" and "liberalism" (which are not antonyms except by historical accident of the earliest progressives being liberals), but it's similar nevertheless:
There are two ostensibly competing approaches to architecting software: designing the front-end first and then programming whatever necessary to produce that front-end; or programming the back-end first and allowing whatever interface design flows naturally from that back-end to surface.
Software architected solely by designers often looks nice and is "easy to use" in one sense: approachable to the general user and not just the technological elite. But such software is just as frequently horribly inefficient, inconsistent, and buggy, making it in other senses very difficult to use outside of its prime use cases.
Software architected solely by programmers, on the other hand, may be a marvel of ingenious consistency and efficiency and may even be provably mathematically correct. But it will often have an interface apparently based in the philosophy that if you can't figure this out on your own, you don't deserve to use such software.
The technological elite often prefer software architected more by programmers than by designers, because they have the ability to make precision demands of it and have it do exactly what they want, and it stays out of their way otherwise; whereas designer-architected software tends to slow them down and keep them from doing what they are trying to do.
General users, on the other hand, often prefer software architected more by designers than by programmers, because for whatever faults it has, most of them can usually at least go about using it somewhat and get some kind of functionality out of it, instead of having to beg or pay the technological elite to get them what they need.
But the best software is undoubtedly architected by teams with both design insights and programming insights, collaborating to create a product which consistently and efficiently offers the desired functionality in an appealing, intuitive, discoverable manner, approachable to general users without holding back the more adept, and even making the latter more productive in their work.
Socialists are like software designers: they have all the right ends in mind, they want to make the world a place that is comfortable and easy to make a living in for anyone, not just an elite few; but they often have no regards for the correctness of the means used to reach these ends. For the sake of justice, equality, and the general welfare, they will often disregard or downplay the possibility of such means to lead to a lower overall welfare for the whole of society (inefficiency), of dissolving the principle of equality before the law (inconsistency), or of commiting injustices themselves in the pursuit of the "greater good" (incorrectness).
Libertarians, on the other hand, are like software programmers: they place tremendous emphasis on never allowing the smallest violation of rights to fly (correctness), on treating everyone as exactly equal before the law (consistency), and within those restraints, on generating the greatest output for the least cost (efficiency). However, they often stop there and assume that the best outcome will just naturally follow from this with no further effort necessary; and that if people can't make themselves a comfortable, easy living within such a framework, then they obviously must be doing something wrong and not deserve such wealth anyway.
The wealthy social elite often prefer a government adhereing to libertarian principles more than socialist ones, because they already have the means of getting what they need from it, and
-Forrest Cameranesi, Geek of all Trades
"I am Sam. Sam I am. I do not like trolls, flames, or spam."
because it makes you wish there was a way to unread it.
Never in all my days have I seen two sentences hitched together with less in common. Agreement is reached ... by latching onto calcified metaphors of conflict.
I'm encouraged to see people commenting on slashdot's decline as they slam the door on the way out.
I never came here to juggle giant slabs of bullshit for amusement and page views.
Hint to slashdot editorship: We can do that anywhere, so what's your value-add at the end of the day? Legacy appeal among the slow to adapt?
...annoying his gruff, long suffering boss, Inspector Todd, with his refusal to pursue criminals "by the book".
He's grouping programmers into two camps via emotion and social identity, like politics. He's thinning grasping at straws here. Full of bad analogies.
"The wise man speaks when he has something to say, the fool speaks when he has to say something" - Mark Twain.
This man felt like he was trying to make a point for the sake of making one than really reaching conclusions, I
Whats worse is there ARE politics in software, and he completely misses the point. Free Software vs Commerical software comes to mind.
We see idealists like Stallman and his Free Software Foundation in one corner, and Apple in another. Both ideaological believer their method is better for the populace. One beleives in total freedom, one believes in total control.
Then we have the oppertunists, like the OSI and most mainstream software companies which are just looking for something practical, and see a development model as means to an end, such as making better software or selling software.
now people don't have to think about issues of consequences of the politics, only know its all a front for social identity. Once you sell most of the people on this, you can kind mute any real idealology,
If you are writing a human life-support system, then an "anal" language with heavy type-checking etc. and heavy-handed team processes is the way to go. However, a start-up company trying to stay lean, mean, and flexible may do better with a "scripty" language that allows lots of "meta programming" tricks.
Table-ized A.I.
I am talking a TINY webshop here, they don't store credit cards (And I am from Holland were credit cards are often just plain not accepted) but you have simple plugin to a dedicated payment provider where the developers HAVE to be the volvo driving kind.
I NEVER would write code that even asks for a credit card, not the site I am working on at all.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.