How To Design A Good API and Why it Matters