My first printer was a black-and-white Samsung laser device that caught my eye in a brick-and-mortar shop by sporting a brave Linux sticker on the front side. These were the early 2000s, mind you, and finding hardware that openly advertised Linux compatibility was quite unusual. The same sticker also showed a Windows and Apple logo, to be honest.
Linux compatibility in those times meant that you were a mere 37 friendly steps away from printing a page, which is quite an achievement if you remember that Linux printing in those ages was still reserved to a very small number of gurus worldwide. You needed to re-compile your kernel, install the correct kind of USB support, a variety of device drivers, a couple of daemons, a postscript interpreter, some fonts, and all the extra cruft that comes bundled with those packages. Under Debian this goes as a simple apt-get but RPM-based distros were less automated. You had to dig through dependencies yourself and keep throwing packages at your hard drive until the damn thing stopped complaining. Tedious. And then you could finally start editing the printer configuration files. If you have never configured these horrors, think of a mix between sendmail.cf and procmailrc.
Since then CUPS has changed the game. Config files are just as obscure but are now XML-based (now you have two problems). CUPS forces you to assign network permissions to access your very local USB device, requiring at least some knowledge of basic network security to be able to print a page. You also had an option to configure CUPS through a web interface, but that also required manipulating some networking rules and authorizations in an XML file to just bring up the page. Oh the joys of manual CUPS configuration!
Cue to 2007: I purchased a combined color printer and scanner from HP for close to nothing, hoping I would not need the ink. Instead of hooking it into a Linux box, I decided to take the easy path and attach it to a Mac. This is still running CUPS but at least things are a bit automated with Apple: click "Add Printer" and follow the steps until it says it works. Surprisingly enough, you needed to delete and re-add the printer every time you upgraded the OS, but thanks to the provided wizard this was not such a pain.
This HP stuff did not work so well. It printed alright, but the cartridges seemed to empty at lightspeed. The scanner was incredibly slow, it could not be controlled from any other machine than the one connected through USB. Better than nothing, I suppose.
Cue to 2014: I saw this fantastic discount for a multi-function color printer and scanner from Epson, for a mere 40 euros. That is about the price of ink cartridges for other printers. Count me in! I had the thing delivered to my place the next day.
Without having read any of the documentation I tried to get the printer to work while attached to a Windows PC. Several hundred megs of software were downloaded, installed, configured, and the results were appalling. The printer would not connect half of the time, I managed to print a test page and that was it.
And then I saw the WiFi logo on the box. WiFi? Sure enough, there was also an RJ45 plug on the back. Still armed with my best pioneer spirit, I painfully configured a WiFi connection on the printer itself -- on a tiny 2-inch screen -- and lo and behold: the printer became immediately available on the local network for everyone's enjoyment! Seems this time they stuffed the complete CUPS layer directly inside the printer, and it actually worked! Oh wow.
Ok, it does not always work. You still need to delete a re-configure the printer every now and then but it has become a lot less painful than kernel re-compilation or XML editing.
I really can't complain. Printing now works from pretty much any machine at home without having to install a metric ton of crapware and keeping it updated. The same machine also offers a "Scanning to the cloud" option that sometimes works. It seems every document I scan for myself has to be first sent to China for approval before it can reach my email or my Dropbox account. Just don't scan stuff when the Chinese guy is having a cigarette pause. As a better option, I put a USB stick into the printer, scan and save onto it, and manually carry the stick back to a computer. And then I lose the USB stick, and it takes me ages to figure out where it is, but that part is only my fault.
I was not so lucky at work. Configuring a printer on a laptop is still as cumbersome as ever. To be fair, I have never seen a printer configuration task use less than three experienced engineers to achieve. Repeat every time the document you want to print is important and on a tight deadline. In many cases I completely gave up configuring a work scanner. Life is too short.
The time is 2016 and we still have not figured out how to print and scan easily in a standard household or office. As a friend of mine recently told me: "If we ever reach the Singularity one day, we'll just ask the AIs to configure a printer. That should buy us enough time to invent spaceships and leave the planet before they enslave us all."