Principios para diseñar kits de desarrollo que sean intuitivos, consistentes y faciliten la integración de servicios en múltiples lenguajes de programación.
Un SDK (Software Development Kit) es una biblioteca que abstrae la complejidad de interactuar con un servicio, proporcionando una interfaz idiomática en el lenguaje del desarrollador. Un buen SDK hace que la integración sea natural.
| Capa | Responsabilidad | Ejemplo |
|---|---|---|
| HTTP client | Comunicación con la API | fetch, axios, httpx |
| Serialización | JSON ↔ objetos del lenguaje | Zod, Pydantic, Jackson |
| Autenticación | Manejo de tokens/keys | OAuth refresh, API key headers |
| Retry/Error handling | Reintentos y errores tipados | Exponential backoff, error codes |
| Interfaz pública | Métodos que el desarrollador usa | client.users.list() |
| Herramienta | Input | Output | Tradeoff |
|---|---|---|---|
| OpenAPI Generator | OpenAPI spec | SDKs multi-lenguaje | Código genérico, poco idiomático |
| Smithy | Smithy model | SDKs AWS-style | Más control, más setup |
| Stainless | OpenAPI spec | SDKs idiomáticos | Comercial, alta calidad |
Un SDK bien diseñado multiplica la adopción de tu API. Reduce la fricción de integración, maneja errores de forma idiomática y proporciona tipos que guían al desarrollador. Un SDK mal diseñado genera tickets de soporte y frustración.
Principios y prácticas para diseñar interfaces de programación claras, consistentes y evolucionables que faciliten la integración entre sistemas.
Disciplina enfocada en optimizar la productividad, satisfacción y efectividad de los desarrolladores mediante herramientas, procesos y entornos bien diseñados.
Prácticas y herramientas para documentar APIs de forma clara, interactiva y mantenible, desde especificaciones OpenAPI hasta portales de documentación.
Principios para diseñar interfaces de línea de comandos intuitivas, consistentes y productivas que los desarrolladores disfruten usar.