I was just writing a lesson about “computer drivers” and “database drivers” for my database class when the following idea occurred to me. Not sure if everyone will agree.
A driver is like a slavedriver
It sounds a lot like slavery, and it is. The driver does all the work. It does not ask any questions. It does not get paid. Most people don’t know it exists. And it only complains when it is asked to do something that it cannot. Probably one day, if you are born again, then in a future life it is better to be born as a computer rather than a driver. Unless you really like being a slave.
Here’s a good picture of a slavedriver:
The Product Owner (also called PO in the agile world) is the guy in the background wearing a gold armband and indicating where he wants the big stone moved to. He doesn’t care about the details: what kind of rock, how many slaves are needed, or how many ropes. He just knows where he wants the big stone.
The slavedriver (called ScrumMaster in the agile world) is the big bald guy with the earring holding a whip. The slavedriver gets his very generic instructions from the Product Owner, then uses his detailed knowledge of the specifics (type of rock, how much friction, how many slaves, what kinds of rope, whether to use a lubrication such as water or sand, etc.) to “motivate” his team to do what the Product Owner wants. It’s all about motivation.
If the people are all suffering, we call this slavery. If the people are all having a good time, we call this the Agile Methodology. But both are the same.
A mathematician would say “slavery and the agile methodology are topologically equivalent to each other.” In the field of computer science or enterprise architecture, we use the term “separation of concerns.” The Product Owner is concerned about getting the big stone to where he needs it; the slavedriver and slaves are concerned about the details to make that happen.
In short, the slavedriver makes the connection between the generic world (of the Product Owner) with the highly specific working world (of the slaves). The computer driver makes the connection between the generic world of the operating system, and the specific details of the hardware. And the database driver makes the connection between the generic world of the programming language, and the specific details of the specific database product.