How to Design a Good API and Why it Matters