API Design anti-patterns
log in to bookmark this presentaton
Whenever we write code we should always be thinking about how other code (whether our own, or other people's) will interact with ours (an "API", in common parlance). Indeed, the most common and terrible mistake in API design is... not doing any! -- i.e., not providing any designed, architected way for other code to interact with ours. That's fortunately less common when "our code" is a library or framework;-), but, alas!, sadly widespread when "our code" is an application or website -- that's why questions about screen-scraping the web and simulating keystrokes and mouse gestures need be so tragically frequent all over the web.
Once past the obvious hurdle of not having any API at all, there's still plenty of ways we can go badly wrong in the process of designing one -- and many of those ways fall into recognizable categories, i.e., patterns. Specifically, since they're frequently observed categories of defective design, they're anti-patterns -- and that's what this talk is in fact about (as the smartest among you could tell from the title...).
I'm eminently qualified to present on this subject, since, in a lifetime spent mostly stumbling into software (after actually qualifying to design hardware in college, but only doing that for a few years), I've been responsible for more of my shares of API design fumbles (plus, of course, just like every other programmer, I've done my share of swearing at the design fumbles of other API designers). And, as novelist Richard Bach reminds us, "You teach best what you most need to learn"!-)