Tyranny of the Average

Paul Brown @ 2007-11-04T01:00:20Z

Steve Vinoski, building on comments that Steve Jones made about comments from Stefan Tilkov, says:

On the dynamic language front, the worst code I have seen in my career has always, always, always been in compiled imperative languages, most often Java and C++.

From my perspective, I've had the privilege of seeing some really awful code and design. The language has always been C/C++ or Java, since that's what virtually all large systems are built in and where there are tools to help people get things written and built. The root cause for the bad code and design has always been relative ignorance on the part of the developers. The use of Ruby or Python wouldn't have changed things for the better, while the use of Haskell or Erlang might, purely because I doubt that the developers in question would have been able to get the Haskell or Erlang programs to run...

It shouldn't surprise anyone who took statistics in college that once enough people start using a language, crappy software appears, independent of the language. With a few liberties taken with respect to hypotheses, it's a consequence of the central limit theorem, and this tyranny of the merely average is absolute and inescapable. It doesn't mean software is any more or less doomed than the rest of our society; rather, it is exactly as doomed as software's reach broadens.

Meta

Tags: (tag) (tag) (tag)

(comment bubbles) 5 comments
1763 direct views

Comment from Rudolf Olah @ 2007-11-14T12:58:02Z # permalink

The problem isn't that crappy software appears. We all realize that with popularity comes a bunch of idiots. The problem is that others do not realize how crappy the software is, or they do but do little to change the situation. That's the real problem: a failure to adapt. The best way to combat this is to teach "weird" and "hard" languages such as Haskell and Lisp to those C/C++/Java people. Also, you're over the Steve-limit. Two Steves! No more no less :P

Comment from she/hh@hot.com @ 2007-11-14T13:36:09Z # permalink

I dont really agree with that. It depends on the one that writes software and his experience. And of course also whether the language encourages good behaviour or not. In a way this is why the python way per se is a good way (although python made horrible decisions with their OOP model, including the arbitrary (self). It never feels like pure OOP. Only Perl has made it worse.)

Comment from Paul Brown @ 2007-11-14T16:42:31Z # permalink

There is a comment thread going over at Reddit.

Comment from Mike B @ 2007-11-14T22:49:37Z # permalink

I really dislike this line of thinking. Firstly, good programmers can produce terrible code, and a average programmer can produce good code, given the right circumstances. There is a lot more to quality than just the skill of the developer. Secondly, it is really hard for a small number of great programmers to clean up a massive codebase. They might as well start from scratch. As you can imagine, the circumstances I've mentioned above come into play here as well. Great programmers have deadlines and responsibilities just like average programmers. On small projects having a a hand full of good developers will do. On large projects you need good developers AND a disciplined development methodology. This is the only way a large project can keep from acquiring a huge amount of developer 'debt'.

Comment from Hendrik Lipka @ 2007-11-15T08:46:16Z # permalink

I think this happens everywhere - most people suck at what they do (or at least they are not good at it). Go to your hair dresser, look at your managers, watch what the architect building your house does - finding someone skilled at his work is rare. Yes, even the good people sometime make mistakes, but they recognize this and learn from that.