Part of the issue is to get the details of how each chip works.
Example. You want to write a driver for a new wireless card. You get the data sheet from the Chip maker about how the chip is to be programmed, The you confer with the hardware engineer that did the layout design for a card your company has made using another company's chip.
So now you have to dig into the data sheets from one source and then talk to someone else about the implementation. Did he wire up the **** feature. ? He says "No, that is not needed, you can do it in software. We can save 50 cents a card by not having the extra components on the card."
Let's cut to the chase. Much later: "What will we call the new card? Just call it the *** Wi-Fi card, no need for a model number."
Three months later.
"Where is the driver for the new card?
Was it revision A or B or G or maybe the B-2?
Uhh, I think it is the f the Jolly wood retail package.
The you have to use the revision for the f A 2,
but only if it was made after June of last year.
Uhhh, let me get back to you.
That's how easy it is to make a software driver!.