I am a big fan of the concept of the API. I have been ever since I realized in the earlier part of my career that you could actually share code across program "boundaries". One of my pet gripes over the years however, is that often when people think about interfaces, they instantly think about GUIs and the most dumbed-down representations that they can get away with in order to avoid "users" getting themselves into trouble. Even some of the more hardened API developers out there seem to find it hard to get their heads out of the mindset that a GUI is simply one type of interface, and that there are many more types that require the same attention to detail that a GUI does.
I have seen some really horrible API interfaces over the years, and truth be told I've even created a few horrible APIs of my own. Still, it hasn't all been a mere fruitless exercise, and years of hiding away in the proverbial 'dark corner' churning out API after API has taught me a thing or two. In that time, I guess you could say I've developed into a bit of an "API-Connoisseur", or as some of my colleagues might think of me as an "API-Snob".