(Warning: Techno-babble ahead. I’ll keep it limited to the first paragraph and translate it at the end.)
The other day I stumbled across this InfoWorldarticle that points to two possible informational cascades in the IT world. First, it touches on the “PHP doesn’t scale” meme. I’ve seen this point argued ad nauseam in many places, often without any evidence. It’s just something that “everybody knows.” And whenever everybody knows something, you can bet there’s an informational cascade involved. The second potential cascade it touches on is “three-tiered architecture is the best.” Remember when everyone remotely connected with IT would ramble on incessantly about “middleware”? That everything should be done using application servers? Well here’s an article about how Friendster canned their Java system for a PHP architecture where most of the logic lives in the database and got far better performance and scalability out of the deal.
(Non-techie translation: the company built a website that could handle much more traffic by ignoring two points of conventional wisdom in the geek world.)
This brings to mind the many painful experiences I have had trying to find programmers who could give me competent advice. It’s hard to identify real expertise in a domain that you don’t know a whole lot about. But one easy way to weed out the dumb ones was to ask a simple question: How do you know? The mediocre programmers can’t answer this question. “Oh yeah, Java is definitely the way to go.” “How do you know?” “Well, it’s much more scalable.” “But how do you know that it’s much more scalable?” “Uh…well…PHP is well known to have scalability problems. Java, on the other hand, is used everywhere.”
Bzzt. Wrong answer.
What I want to hear is, “Well, when I tried using Java for X, here’s what happened….” Or “I’ve read Y about PHP but I don’t have much personal experience with it.” Or “The argument I’ve heard against PHP is Z, which makes some sense to me because….” In other words, I’m looking for somebody who knows the difference between what economists would call private information (what you and I might call personal experience or other direct knowledge) and what “everybody knows.” A good software engineer knows that a point of “common knowledge” is just another hypothesis that needs to be tested. S/he also knows whether s/he has had any direct experiences that confirm or disconfirm the hypothesis. S/he knows the difference between what s/he knows and what s/he doesn’t know.
This, of course, is true of any good knowledge worker. Truly competent knowledge workers harbor a healthy skepticism of common knowledge. They use it when it’s convenient (and often it’s the only information we have to go on when we make our decisions) but they don’t trust it more than they have to.
Sam O says
Good post. It seems especially relevant in the academic technology realm where decisions seem so often based on common knowledge. My guess is that a CMS like Moodle would be a better decision than a proprietary CMS for many small schools, orgs, and companies. But the common knowledge that ‘PHP is not scalable’ and ‘open source does not have support’ hurt it. You are also right to point out how limiting that kind of thinking is (and also the power of momentum in the informational cascade: that rap on PHP is several years old and un-reflective of any recent development).
Alex Poole says
Yes its an old one that. A company I worked with used a Java search app that spilled memory like mad. We re-wrote it in PHP. Result? About 3Gb more free RAM on the server, under the same demand. Its not about the stack, its about the way its used 🙂