good API designs happens when designers think of … client programmers as users.
I wish more developers took this to heart. I’ll add my own law of API design:
Good API design makes common things simple while leaving uncommon things possible.
You can call it Moore’s law.
When comparing two API possibilities, I often just count characters in a couple common examples of usage. To me, the API choice that results in fewer characters for the client programmer is usually the better API. This can tip the balance for subtle choices, or help evaluate two libraries which do the same thing.