On science, religion and actually shipping code

Frans had a really good post about some things he has observed in the "alt.net" world. Honestly, with all of the blog posts I see on this "movement" lately, you'd think there was a cure for cancer just around the corner. As if it's that important.

I think the single most critical thing mentioned in Frans' post is this:

"...The consequence is that the result of working on that idea has its root in the tool, technique or pattern, not in fundamental research in computer science. This result causes other ideas, which causes other results etc. etc.

Is this bad? I don't know, but if these two worlds drift apart, and the more I think about it, the more this is going on already, the consequences could be severe: the world in which research is taking place isn't feeding the world which applies techniques/tools/patterns with fundamentals, that world of techniques/tools/patterns is feeding themselves with 'fundamentals', which is actually cyclic reasoning: the fundamentals aren't fundamentals, they were the results of applying fundamentals, which doesn't make them fundamental per se."

Asking if this matters is in fact the one of the most "right" questions I've seen on the topic of computer science and the ensuing religions that crop up around it. A lot of people spend a lot of time thinking about computer sciencey stuff, and that's fine. There is a place for these kinds of discussions for sure, though what Frans describes is obviously not the science he thinks should be discussed.

So that said, what are you left with? To me, it's just noise. I suspect that I'm not alone.

I've enjoyed mentoring other programming types, writing my book and seeing myself get better at what I do every day. I think it's important to crave professional development. But here's the thing, I'd be willing to bet that at least half of the people who do what I do have absolutely zero formal computer science training. Lots of English degrees where I work. If we're being completely honest, I don't think very many of us even care about computer science, beyond learning things we find useful. Our biggest concern is shipping product.

There is a place for academic pursuits of computer science. But as much as I believe everyone should know what the factory pattern is, I can't imagine people spending a lot of time thinking about this stuff. We're headed in the direction that CPU design has gone. A few extra smart people design processors now, and the rest of us drop them in a socket. Programming techniques are important to know up to a certain level for most of us. It's helpful for me to know some performance considerations, for example, but I could care less how the compiler works.

There are a lot of different levels to this, certainly. It sounds though that what's happening in the community that Frans writes about, people are participating at a level they're not qualified to participate in. Honestly, that's not a slam on anyone, it's just a reality. But given my previous posts about developer snobbery, the "I'm an MVP" posts and other marks of entitlement or self-appointed praise, I think the amount of useful knowledge that comes out of these discussions is low for the majority of the world.

I'm not suggesting they shouldn't take place in public, I just feel somewhat, I dunno, disappointed that so much energy is spent on science project discussions. 


  • Jeff... I didn't get the feeling that Frans was advocating everyone should be experts in the academic pursuits of computer science, but rather that we should at least know why a particular pattern or tool is useful. What are its advantages and disadvantages compared to other alternatives. When should one pattern be applied versus another and if I need to alter a pattern to accomplish some task, what are the implications. I have come across a large number of programmers who use a tool or pattern because of some "rule of thumb" but could not explain with any clarity why it is the "correct" choice for any situation.

  • The problem with science discussions is not that they are not valuable, it is that nobody is interested (well, almost nobody). Many new programmers think they can hack together a website by dropping some controls on a web form, without knowing the first thing about how these controls work underneath. Then they call themselves experts. Is it any wonder that the level of discourse in these newsgroups is so low?

  • Science discussions have nothing to do with understanding how something works. I agree that, for example, a lot of people don't even understand the app/page/control lifecycle and how it works and why it exists. But that's not the same as having pissing matches over methodologies and obscure design patterns infrequently used in practice.

Comments have been disabled for this content.