Puesto: Ingeniero Senior Golang
Tipo: Remoto
Horario
Pacífico (8:00 AM – 5:00 PM PST)
Descripción del puesto
Buscamos un Ingeniero Senior Golang con experiencia para unirse a nuestro equipo de ingeniería. Este rol se enfoca en construir y mantener aplicaciones cloud-native a gran escala con Golang, trabajando extensivamente con Kubernetes, contenedores y sistemas distribuidos. El candidato ideal tiene experiencia profunda en Golang, disfruta depurando entornos de producción complejos y prospera en una cultura de ingeniería de ritmo rápido con un fuerte énfasis en la calidad del código y el Desarrollo Guiado por Pruebas (Test Driven Development).
Responsabilidades clave
Desarrollo en Golang
- Diseñar, desarrollar, refactorizar y mantener bases de código Golang a gran escala.
- Demostrar conocimiento profundo de Golang, incluyendo el funcionamiento interno del lenguaje.
- Leer, comprender y contribuir a bases de código existentes complejas.
- Escribir pruebas unitarias y de integración completas utilizando la biblioteca estándar de Golang, Ginkgo y Gomega.
- Aplicar prácticas de Desarrollo Guiado por Pruebas (TDD) durante todo el ciclo de vida del desarrollo de software.
Solución de problemas y depuración
- Solucionar problemas de aplicaciones en producción utilizando logs, profiling y herramientas de depuración.
- Investigar y resolver problemas de rendimiento en sistemas distribuidos.
- Analizar problemas de producción e implementar soluciones a largo plazo para mejorar la confiabilidad.
Kubernetes y Plataformas de Contenedores
- Desplegar, escalar y mantener aplicaciones que se ejecutan en Kubernetes.
- Trabajar con el funcionamiento interno de Kubernetes, incluyendo la gestión de cuotas de recursos y el comportamiento del clúster.
- Optimizar cargas de trabajo que se ejecutan en entornos contenerizados.
- Utilizar Docker y tecnologías de contenedores como parte del ciclo de vida de entrega de software.
Linux, Infraestructura y Monitoreo
- Aprovechar el conocimiento del sistema Linux, incluyendo grupos de control (cgroups) y gestión de recursos.
- Trabajar con bases de datos PostgreSQL en entornos de producción.
- Utilizar Prometheus y herramientas de monitoreo para observar la salud y el rendimiento de las aplicaciones.
- Contribuir a la confiabilidad y observabilidad de los servicios cloud-native.
Desarrollo de API y Microservicios
- Diseñar y desarrollar servicios de API RESTful utilizando Golang.
- Construir microservicios escalables basados en web y HTTP.
- Colaborar con equipos de ingeniería para entregar aplicaciones distribuidas confiables y de alto rendimiento.
Calificaciones
Educación y Experiencia
- Título de grado en Ciencias de la Computación, Ingeniería o un campo relacionado (preferido).
- Más de 5 años de experiencia profesional en desarrollo de software utilizando Golang.
- Experiencia comprobada trabajando con Kubernetes y tecnologías de contenedores.
- Sólidas habilidades para la resolución de problemas y capacidad para trabajar eficazmente en un entorno de ritmo rápido.
Habilidades Técnicas
- Profunda experiencia en desarrollo Golang.
- Fuerte comprensión del funcionamiento interno de Kubernetes y la gestión de recursos.
- Experiencia práctica con Docker y tecnologías de contenedores Linux.
- Experiencia en el desarrollo de APIs y microservicios.
- Dominio de PostgreSQL.
- Experiencia utilizando Prometheus o plataformas de monitoreo similares.
- Fuertes habilidades de depuración y profiling de rendimiento.
- Experiencia practicando Desarrollo Guiado por Pruebas (TDD) con Ginkgo y Gomega.
Habilidades Preferidas
- Experiencia leyendo y comprendiendo código Java.
- Fuerte experiencia en programación en Python o Java junto con entornos Kubernetes.
- Experiencia trabajando con monorepositorios.
- Familiaridad con herramientas de CI y pipelines de compilación automatizados.
- Experiencia con Bazel como sistema de compilación.
Habilidades Blandas
- Fuertes habilidades analíticas y de resolución de problemas.
- Excelentes habilidades de comunicación y colaboración.
- Capacidad para trabajar de forma independiente y contribuir eficazmente dentro de un equipo de ingeniería distribuido.
- Comodidad trabajando en un entorno altamente técnico y de ritmo rápido.