tags:

views:

226

answers:

6

Specifically, ineffective for addressing a particular problem, not in general.

Relational database management systems are good for many things and object database management systems are good for many things. Real world: RDBMS 99%, Freak ODBMS 1%

  • C/C#/Java/PHP 99%, Smalltalk, Eiffel, Ada, Lisp 1%
  • Windows 95%, Linux 5%
  • Waterfall 90%, Agile 10%
  • Workflow Engines 99%, Space-based Systems 1%

I believe this hurts our industry. We constantly are picking tools that don't address our needs as well as they could. We are an industry driven by ineffective solution monopolies. Some other industries have it (Computer Engineering has CISC over RISC comes to mind), but none so badly as IT. Why us?

+10  A: 

Because superior marketing beats a superior product any day of the week.

Chris Ballance
That's true. It brings to mind doctors prescribing medications only because the company rep takes them golfing. Are we so easy to influence though? Are we subconsciously making our projects harder to complete by picking bad tools because of some marketing? I don't know if I believe that.
rcampbell
Developers aren't as easily swayed, but managers certainly are.
Chris Ballance
@Chris: I disagree on that point. A lot of guys I have worked with pick their tools based on what is being blogged about. Which is a form of marketing.
Chris Lively
@Chris Lively, I agree that blogging is marketing, but I was referring to more traditional media-style marketing. Since developers don't always get to choose their own tools, the sometimes get handed down from a less technical manager.
Chris Ballance
@rrc7cz Unrelated to the question, but the prescription marketing effect really gripes me also, very counter productive to the patient's best interest.
Chris Ballance
Was there ever a giant PHP marketing campaign? I'm not arguing, I simply don't know...
Jason Punyon
@Jason, Judging by shelf space at your local big-box book store, PHP markets itself :-)
Chris Ballance
@Chris Ballance: Threeché...
Jason Punyon
@Chris - But what came first? Chicken or egg? Large market of PHP developers or books teaching PHP?
rcampbell
Chris Ballance
I can't believe I never voted you up for this.
George Stocker
+2  A: 

I think this is simply a snowball effect of choice. The first bit of widget consumers chose something, they were successful by some measure and became the heads of teams where they evangelized the use of their particular flavor of widget. The team members told two people...and they told two people...and so on and so on and so on...

I guess there's also a little chaotic element as well. A very small difference in adoption/conversion rates at the beginning of a widget life-cycle (could be due to marketing, but it could just be a confluence of a couple of extra users running in one direction) can lead to the huge difference in use that we see now...

Jason Punyon
But if that were true many people should be writing Pascal (or some Delphi/Object Pascal variant). Many people, myself included, learned this language first. Reflecting on my life, it seems to have had little influence in my later decisions.
rcampbell
Also, shouldn't more useful tools and technologies snowball faster, leading to them becoming dominant?
rcampbell
But the one that you hear about more loudly is the first to start this "snowball effect"
Chris Ballance
+2  A: 

Critical mass and compatibility. When a certain number of developers move in one direction, they pull the vast majority that way with them. If you have a language or database that is used by very few, then even fewer want to venture that way.

Most companies only want to invest in what's the more popular technology. They feel the low use products may not be around and supported long term. Going with the more popular choice is the safe bet.

Of course, as Chris Ballance said, it's product marketing that makes it popular in the first place to achieve that critical mass.

SumoRunner
A: 

Stuff that is relatively easy to learn and understand creates an illusion that you can make great achievements by easily hiring a lot of people who know it. For many managers this is enough to rule out the "freak" alternatives.

fionbio
But I would argue C or C++ isn't so easy. Using a RDBMS for object persistance isn't easy at all (think entire ORM layer). There seem to be many examples where we actually take the more difficult road.
rcampbell
rrc7cz: C/C++ or at least C and subset of C++ that majority of C++ programmers really understand for most mainstream programmers are much easier than "freak" languages mentioned by the OP. And AFAIK in many shops SQL+code spaghetti or stored procedures approach is preferred to ORMs.
fionbio
+1  A: 

A lot of this has to do with the technical lock-in effect, for better or worse. I think this is caused on a number of factors.

(1) The marginal cost of learning and/or deploying an entirely new technology for each problem very rarely outweighs the marginal benefit over a "good enough" solution using familiar technologies. In your example of Windows/Linux, if you determined that switching to Linux boxes saved you $100K in licensing fees, would it be worth replacing or retraining your entire staff and likely re-doing a lot of work that has already been put in, then go from the stable (maturity) phase back to the chaos of an initial deployment? Then there is the opportunity cost of the value you are not adding while you are retooling.

(2) Switching technologies introduces project risk based on the "devil you know..." line of thinking. There are no guarantees that the project will be successful in any platform. Engaging in a project using a new technology has a strong potential to scape-goat the new technology for any problems on that project regardless of whether they are specifically related to the switch. The person who made the decision to use that new technology may be painting a target on their back by doing so. Add to this that the person making that decision may be less confident in their ability to pull off the project using an unfamiliar technology. The old technology may be clunky and less than ideal, but at least you know what you are getting into.

(3) At the rate new versions come out for each of these technologies, it can be a daunting task to remain current on your skills in any one of them. It forces us to chose whether we want to be an expert or a generalist, which I feel a career decision that should be based on your personal ambitions.

JohnFx
+2  A: 

Because of the network effect (which other answers have alluded to, but there's a standard term for it.) -- not only between people but between elements of a given system. One reason Java's so successful (making no comment about its goodness/badness) is that there's Eclipse and all these libraries and tools.

Jason S