Our library system - which is excellent in practically every other way - recently bought and implemented a new catalog. It is terrible.
The programmer-monkeys who wrote it were... possibly librarians? Or optimists.
I'm not an especially good programmer but I do have an excellent grasp of how to make people do what you want in a computer system, which is the same in any system:
1) Make the desired behaviour the default, or the easiest thing to do, or preferably both.
2) Forbid the not-desired behaviour and make it as impossible as you can.
Our library system has no enforcement on records imported from the old catalog. There are books without authors. There are author names unlinked to author records, which means when you click the author name you don't always get all of the author's books. There are multiple unlinked author records for the same author. ("Required field" in combination with record search and cleanup.) "Book" is not a unique record type, so if you limit your results to 'books' you also get e-books, books on tape, websites, and comics. (Everything should be a unique record type, and nothing should have a nonexistent value by default, GAAAAH.) At one point it was charging everyone double fines. (I don't even know. A loop without a proper termination, or a batch that ran itself twice every night, or something.) If you cancel your own hold it sends you an email message telling you that your hold is cancelled. ("Is canceller-record equal to hold-owner-record? If yes, do not email.") The hold-notification crawler runs every hour or so, and therefore sends you six messages a day. (Annoying, but fairly minor.)
I have no idea who coded it originally, but it seems like bad librarians who taught themselves code, or something. It's terrible from a librarian perspective and even worse from a code perspective. I would expect decent programmers to make loops that will only run once - and I'd expect librarians to put authors on all the books.