Your interface must be easy enough for a beginner.
Your interface must be flexible enough to continue to be useful as your users' requirements change.
This should be true for your user interface and it should be true in your programmable interface.
The author mentioned SDKs in a passing comment, but it's really the crux of the solution and I think warrants more detail. SDKs allow you to implement language specific versions of APIs which can mask significant complexity and also make the functionality of the API accessible to a much broader group of developers within that language.