Tuesday, July 14, 2009

StackOverflow and religious language in programming

I was reading Why I Don’t Listen to the StackOverflow Podcast any More, and in reading the comments, I found it interesting to see the amount of religious language.

#21 (sbohlen) I’d have to agree that they do indeed appear successful, but success / failure isn’t a boolean [...] The world is full of people who succeed due to all kinds of factors including dumb-luck, [...]

This reminds me intensely of "the race is not always to the swift" etc. Eccl 9:11.

I changed adopters to believers to accentuate the effect:

"#16: [...] I have also experienced that the non-[believers] aren’t (gnerally) non-[believers] out of choice but are instead non-[believers] largely out of ignorance and inexperience — they just don’t know what they don’t know [...]"
#16: "the [types] who aren’t interested in self-improvement; there’s not a damned thing I can suggest to help these people — I cannot MAKE someone want to better themselves, that’s gotta come from within"
#16: "I [...] think that Jeff and Joel are indeed preaching [...] they are (IMO) abdicating the unofficial professional responsibility that comes with having a pulpit from which to preach."
#14: "I am a strong believer"
#13: "@sbohlen. I fully agree with the sentiment that “up and running” is not a valid metric"

I'm not going to go on with this, though I could - the about page for the blog is particularly ripe for further examples of religious language - but I do want to make a further point.

Could it be that latent religious feelings are responsible for a good portion of the minor angst on display in these comments? Could it be that people are unconsciously annoyed, not with StackOverflow's success, but rather its success even in the face of quite mild contempt at the unit-testing / SOLID religion?

My own position: I'm a "believer" in evolution and the market. Neither evolution nor the market have any moral content (they can't say what "ought" to be), and both only measure success by effects rather than processes. In a phrase, "up and running" is not just a valid metric - it's the only metric, until it stops running. If SO continues to thrive, and doesn't die under the weight of its lack of unit testing (which seems to be the logical end result of the beliefs of the believers in the comments), where then is the truth in the proclamations of doom from the prophets of the true religion?

I don't think unit-testing is the only way to avoid long-term bit-rot. I think it's a good way, but not the only way; moreover, I don't think unit testing is especially useful in the very early stages of a project, where the design changes often and rewriting unit tests becomes a disincentive to larger refactoring and redesign. I think every one of the concepts embodied in S.O.L.I.D. is debatable in certain scenarios (except perhaps LSP).

In my experience, premature abstraction has been responsible for a similar number of ills to premature optimization: abstractions chosen at the wrong boundaries, for the wrong reasons, because designers thought they could foretell the future and anticipate where changes would come. Thus I am wary of merchants of abstractions and patterns, principles and practices. I'll use them when appropriate, but never with religious zeal.


jamie said...

I agree completely.

Whatever your views on Jeff & Joel, they've become pariahs in that particular post.

Instead, what they appear to have stirred up there is the equivalent of the militant wing in any political party who believe in simply Black / White or True / False and refute anything that isn't their own PoV or lies in between.

If only the world could be that simple...

Warren said...

Your non-dogmatic dogmae are just as dogmatic as their dogmatic dogmae.


Seriously, everybody else's system is a system, and is partly okay, and partly bogus. Your OWN system is not a system. It's just common sense. Or what works for you. Good. Works for you.

I'm one of those guys who is not sold on any acronym. Much less SOLID, AGILE, or FORBALSNIGDORF, or whatever mix of Common Sense and Nonsense they come up with next and try to sell me. Whatever it is, it will have a manifesto, and a book, and conferences.

I am a GitRDun pragmatist when I need to be, and a designer with a strict Waterfall sensibility when I need to be. I am what I need to be to get the results I need. I like to think that my method resembles the Oracle's method in the Matrix; What was said (or done) was what had to be said or done, to Get It Done, but Done Right. And if not the first or the second time, then done when we can get it done.

Everything else is a sales pitch for nailing jello to a tree.

If we are good enough, we survive. If not, then the market can, should, and will kill our business. And that is as it should be.

Unless you're the Canadian government software contractor working on the weapons registry. Then you can spend a billion, and go get a billion more, whenever you need it. Look, we have blobby-grams. We have user stories.

Whaddya mean we're not done? We're agile, I tell you, Agile.