Programador Back-end Python
- Servicios Python de alto rendimiento y mantenibles: manejo de async/await, tareas en background, timeouts, reintentos y optimización básica de recursos.
- APIs robustas y evolutivas: contratos claros, versionado, compatibilidad forward/backward, manejo de errores y límites de uso.
- Consistencia y resiliencia en sistemas distribuidos: workflows claros, deduplicación, reintentos con backoff y estrategias de compensación cuando aplique.
- Capa de datos a escala: buen modelado, índices, uso inteligente de caché, migraciones seguras e integridad de datos.
- Operabilidad y entrega continua: observabilidad integrada, SLOs básicos, CI/CD con pruebas y checks de calidad.
Desarrollo con Python:
- Experiencia construyendo servicios backend con Python (FastAPI, Django REST o Flask en producción).
- Uso sólido de la stdlib (asyncio, logging, typing) y organización limpia de módulos.
- Aplicación de Arquitectura Hexagonal, DDD y CQRS en proyectos reales o de práctica avanzada.
- Diseño y consumo de APIs RESTful (gRPC como plus), manejo de lógica de negocio compleja, validaciones consistentes e idempotencia en endpoints críticos.
- Clean Code + SOLID adaptado a Python; pruebas automatizadas (unitarias e integración) con pytest o unittest, mocks y criterio para aplicar TDD de forma pragmática.
Diseño de Arquitectura y Escalabilidad:
- Contenedores con Docker y despliegue en Kubernetes o plataformas equivalentes.
- Microservicios y comunicación asíncrona/event-driven (RabbitMQ/Kafka/NATS/Pub/Sub como plus).
- Integración con PostgreSQL (SQLAlchemy, psycopg, migraciones con Alembic) y MongoDB (driver oficial o motor).
- Uso de Redis como caché para alta concurrencia; diseño de claves, TTL y estrategias básicas de invalidación.
- Observabilidad end-to-end: logs estructurados (logging/structlog), métricas (Prometheus) y trazas con OpenTelemetry.
Colaboración y Flujo de Trabajo:
- Documentación clara de decisiones técnicas, arquitectura y endpoints (ADRs, OpenAPI/Swagger, diagramas C4).
- Fluidez con Git bajo flujos colaborativos (feature branches, pull requests, code reviews).
- Participación activa en Scrum/Kanban, entregas iterativas y proactividad para proponer mejoras técnicas y de producto.
- Mentalidad de Solución: Personas que vean los problemas como oportunidades para diseñar y ejecutar soluciones creativas y efectivas.
- Balance entre Velocidad y Estabilidad: Capacidad para entregar con rapidez sin comprometer la calidad ni la estabilidad del software.
- Pasión por los Retos Técnicos: Interés genuino por enfrentar desafíos complejos y aprovecharlos como espacio de aprendizaje y mejora continua.
- Flexible en la Colaboración: Valoramos a quienes se involucran donde pueden aportar, más allá de lo que indica su rol. Creemos que los equipos funcionan mejor cuando cada persona está dispuesta a sumar donde más se le necesita.
- Cultura de Pruebas: Queremos fomentar una mentalidad donde las pruebas son parte del diseño y no un paso posterior. Valoramos saber cuándo aplicar TDD de forma práctica y cuándo priorizar velocidad sin perder calidad.