Generic parts

Woke up this morning to find the Tivo making a awful whirring noise. Seemed like something I had heard before in the old days when people used to repair PCs. And as suspected, it was the cooling fan making the noise.

So I opened it up and was happy to find generic parts. A simple (albeit cheap) PC cooling fan. Too easy, Pull it out, open it up, add a drop of light oil on the ball bearings, and put it back in. 

The fact that it was using generic parts meant that:

  1. I was confident is fixing it as it made sense to me. Oh, I’ve seen something similar to this before, and I know it fits together like X,Y,Z.
  2. I knew that even if I broke it, I could jump online and buy a replacement for a few dollars. No big deal, they are everywhere, and easy to get.

This idea of generic parts made me start thinking about software development. What languages and frameworks offer such generic parts (and which ones don’t). Where could the industry improve in this respect?

To take a simple example, look at HTML. At a fundamental level all web developers have some idea bout HTML, what it is, and what it can do. It makes sense when we see it. Its a generic part, I know how a HTML form works generically, so when I see one that has a problem, I can immediately start troubleshooting (provided the code isn’t too obfuscated).

HTML is also cheap to deal with in the sense that there are plenty of people that know about it, and lots of resources available to help me if I get stuck. This gives me the confidence to get in there and fix it without worrying about the complexity of how it all works.

So the takeaway question here is, are you using generic parts in your development? Why not? Should you be?