The last half definitely devolves into Android API-bashing. The first half does generally apply to most APIs.<p>The main issue with most APIs boils down to documentation. Document it well, and it will largely be usable. This means everything from cross-references (&quot;If you are trying to do X, ThisOtherMethod may be a better fit&quot;) to examples, and also extends to the API itself (good naming, and discoverable methods). Most developers using your API do not live in your API -- they live in their application domain. So you need to put effort into ensuring jargon is explained, the API is discoverable, and basically they can use the API easily, and get on with their application.<p>I really like the idea of thinking of API design in terms of Developer Experience (DX), in the same way that user interface designers consider User Experience (UX) about much, much more than simply the layout and colors.