Everyone hates them. Device drivers are like cockroaches; you can’t get rid of them. Every time you turn around, you need to update them, and sometimes they bring nasty little surprises. Just the other day a routine device driver update turned into a 45-minute odyssey of uninstalling and restoring when it killed my wireless connection.

Just about everything has device drivers, too. You may be unaware of them, but almost everything with a computer chip in it runs a very basic and generic operating system, paired with a driver that lets it actually operate. It’s not enough that your computer needs a driver to make it work with your printer — your printer actually needs a driver to work with your computer. What a mess, right?

Except, drivers are a very elegant solution to a very complex problem (when they work.) You see, it’s practically impossible to build something like a printer or even a washing machine from scratch in today’s world. The timeframes are just too tight. So, manufacturers use general-purpose chips to handle the basic tasks of turning the thing on, displaying words or numbers, or managing power. There’s also an operating system that controls communication between all the parts. All that’s needed is a way to tell the operating system what to do and how to do it. That, dear readers, is a device driver.

In the distant past of computers, you could only use printers that a computer could talk to without any installation. They had to work with specific, very boring standards. The idea that you could actually upgrade the computer in a very ordered, very structured way with new software to run new devices was a real boon to developers in the 1990s who struggled with ways to introduce new features.

Today, we don’t think too much about device drivers because they tend to work a lot better than they used to… but there’s still some potential for chaos, as I found out.