Sunday, September 25, 2005

I found Scott Berkun's essay Why software sucks (And what to do about it) fascinating. He gives two laws that govern software construction:

  • If you don’t apply the right skills at the right time, you will make things that suck.

  • No matter what you do, someone, somewhere will think your software sucks.

The first law could be rephrased as: "To a man with a hammer, everything looks like a nail". In ther words, if the designer doesn't understand the user's problem domain, then the software is likely to suck.

The second law basically says that you can't please everyone. His diagram says it all:

He also some interesting things to say about the value of Computer Science degrees. I've often thought that "Computer Science" as a subject is of little practical value unless it's backed up with some domain knowledge, and he seems to agree:

Graduating with a degree in Computer science does not prevent you from making software that sucks. In fact it might increase the odds of suckage, since it gives you powerful skills to make something, but little understanding of how many factors contribute to making something good. A specialized degree gives you little awareness of the skills you don't have.

There are some other essays on the same site that are well worth reading too. For example: How to survive a bad manager and How to learn from your mistakes.