Kurt shares with us his thoughts on software complexity:

Over the years, I’ve noticed that in programming, as in other systems, there seems to be a fairly invariant rule out there:

You can never eliminate complexity from a system, you can only move it from place to place.

Yep. This is yet another instance of the No-Free-Lunch Theorem. It basically says that while you can find more accurate algorithms, very often, all you are doing is specializing your algorithm to perform better in some conditions, but worse in others.

Of course, specializing is good. Some cases are more important than others. But be skeptical if someone says that X is better in every respect than Y. There is, usually, a catch.

The same must be true in software. Fancier platforms make it easier to do some things, but harder to do other things. What you have to worry about is whether these cases are important for you.

J2EE, at least the early versions, is a beautiful example where the designers did a great job at making some cases very easy, while making others, very important cases, much harder, leaving J2EE developers in tough spots.

No Comments »

No comments yet.

Leave a comment

Warning: When entering a long comment, please ensure that you make copy of your text prior to submitting it. If the server should fail or if you hit a bug, you might lose your work. I am not responsible for your lost effort.

To spammers: I carefully review every single post and make sure that spam gets deleted. You are wasting your time if you are manually entering spam using this form. Read my terms of use to see what I consider to be abusive.

Example: duo plus septem is '9'. The numbers are expressed in latin numerals but you should give your answers using ordinary digits.

 

« Blog's main page

Powered by WordPress