Designing APIs is a subtle blend of craft and engineering