Senior Java Developer
VMetrix
Job Description
VMetrix es una empresa SaaS que desarrolla una plataforma financiera integral utilizada por bancos, fondos de pensiones, gestoras de fondos, corredoras y asset managers en Chile y América Latina. Nuestra plataforma cubre el ciclo completo de gestión de inversiones: desde la captura de operaciones y gestión del ciclo de vida transaccional, hasta la valorización, contabilidad, riesgo de mercado, compliance regulatorio y reporting.
Propósito del Cargo
Como Senior Java Developer, construirás y mantendrás servicios backend y módulos de plataforma que impulsan operaciones críticas de negocio. No necesitas experiencia previa en el dominio financiero — nosotros te enseñamos. Lo que necesitamos es un desarrollador que escriba Java limpio y performante, domine patrones de diseño, entienda sistemas distribuidos y use herramientas como Claude Code para moverse rápido sin sacrificar calidad.
Responsabilidades Principales
Desarrollo Backend
- Diseñar, construir y mantener servicios backend en Java 8+/Spring Boot: APIs REST, jobs de procesamiento batch, pipelines de transformación de datos y capas de integración.
- Escribir código limpio, bien probado y listo para producción, aplicando principios SOLID, patrones de diseño (Strategy, Factory, Observer, Builder, Template Method, entre otros) y las guías arquitecturales del equipo.
- Ser dueño de features end-to-end: desde el diseño técnico hasta la implementación, testing, code review y despliegue en producción.
- Optimizar el rendimiento de aplicaciones: identificar y resolver cuellos de botella en queries, llamadas a servicios, uso de memoria y throughput.
- Aplicar correctamente patrones de concurrencia y manejo de hilos en Java para operaciones paralelas y asíncronas.
Diseño y Arquitectura
- Participar en decisiones de diseño de software: selección de patrones, definición de contratos entre componentes, separación de responsabilidades y modelado de dominios.
- Aplicar principios de diseño orientado a objetos (encapsulamiento, herencia, composición, polimorfismo) y diseño por contrato en la construcción de módulos.
- Contribuir al diseño de arquitecturas limpias: separación de capas (controller, service, repository), inyección de dependencias, inversión de control y bajo acoplamiento entre módulos.
- Evaluar trade-offs técnicos entre diferentes enfoques de diseño, documentando decisiones y sus justificaciones.
Base de Datos e Integraciones
- Trabajar con Oracle Database: escribir y optimizar consultas SQL, stored procedures y packages PL/SQL para operaciones intensivas en datos.
- Construir y mantener integraciones con sistemas externos vía APIs REST, cubriendo ingestión, transformación y sincronización de datos.
- Diseñar patrones de acceso a datos eficientes usando JPA/Hibernate o JDBC, con atención a gestión de conexiones, caché de entidades y límites transaccionales.
- Implementar estrategias de resiliencia en integraciones: reintentos, circuit breakers, timeouts y manejo de fallos graceful.
Infraestructura y Despliegue
- Desplegar y gestionar aplicaciones en Kubernetes (OKE) con contenedores Docker y servidor de aplicaciones WebLogic.
- Trabajar con pipelines CI/CD (GitLab CI o similar) para flujos automatizados de build, test y deployment.
- Diagnosticar problemas en producción: analizar logs, métricas de aplicación y comportamiento del sistema para resolver incidentes.
Desarrollo Asistido por IA
- Usar Claude Code como herramienta principal de desarrollo: generación de código, refactorización, debugging, escritura de pruebas y exploración de codebases desconocidos.
- Escribir y mantener documentación técnica en Markdown que sirva como contexto de alta calidad tanto para herramientas de IA como para el equipo.
- Aplicar habilidades de ingeniería de prompts: descomponer problemas complejos en prompts claros y accionables, evaluando críticamente las salidas generadas por IA.
- Contribuir a las prácticas de desarrollo con IA del equipo: compartir patrones efectivos, identificar limitaciones y ayudar a establecer mejores prácticas.
Colaboración y Crecimiento
- Participar en revisiones de código con feedback constructivo y riguroso, enfocado en correctitud, legibilidad, patrones y mantenibilidad.
- Mentorear a desarrolladores junior a través de pair programming, discusiones de diseño y transferencia de conocimiento.
- Contribuir a discusiones técnicas sobre arquitectura, herramientas y mejoras de procesos.
- Grado en Ciencia de la Computación, Ingeniería de Software o áreas afines.
- 5+ años de experiencia profesional en desarrollo Java.
- Dominio sólido de Java 8+ (streams, lambdas, concurrencia, colecciones, Optional, API de fecha/hora) y Spring Boot 2.7+ (inyección de dependencias, REST controllers, seguridad, Spring Data, pruebas).
- Conocimiento sólido de patrones de diseño GoF (creacionales, estructurales, comportamentales) y capacidad de aplicarlos correctamente según el contexto del problema.
- Dominio de principios SOLID, DRY, KISS y YAGNI en la práctica diaria de desarrollo.
- Experiencia con diseño orientado a objetos: modelado de dominios, composición vs herencia, encapsulamiento, manejo de excepciones y diseño de APIs internas claras.
- Habilidades sólidas en SQL y bases de datos relacionales: optimización de queries, estrategias de indexación, joins complejos, gestión transaccional. Experiencia en Oracle es un plus fuerte.
- Experiencia con estrategias de testing: pruebas unitarias (JUnit, Mockito), pruebas de integración, test doubles y TDD o BDD como práctica habitual.
- Experiencia con despliegues containerizados: Docker, Kubernetes (cualquier distribución), pipelines CI/CD.
- Familiaridad con flujos Git (Git Flow o trunk-based), Postman/OpenAPI para desarrollo de APIs.
- Experiencia práctica con herramientas de desarrollo asistido por IA — especialmente Claude Code. Esperamos que uses IA diariamente como multiplicador de productividad, no como muleta.
- Comunicación escrita sólida: capacidad de producir specs técnicos claros, documentos de diseño y descripciones de PR.
Requisitos Deseables
- Conocimiento de patrones de arquitectura: caching (Caffeine/Redis), arquitectura event-driven, diseño metadata-driven, CQRS.
- Experiencia con arquitecturas de microservicios o modular monolith: estrategias de comunicación entre servicios, gestión de transacciones distribuidas, contract testing.
- Familiaridad con Clean Architecture, Hexagonal Architecture o Domain-Driven Design (DDD).
- Experiencia con herramientas de observabilidad: Grafana, Prometheus, métricas de aplicación, agregación de logs.
- Familiaridad con servidor de aplicaciones WebLogic o runtimes Java empresariales similares.
- Experiencia trabajando en plataformas SaaS o sistemas multi-tenant.
- Certificación Java (OCA/OCP) o certificaciones técnicas equivalentes.
Lo que Valoramos
- Calidad sobre velocidad: preferimos entregar código limpio y bien testeado un día después que debuggear un desastre por una semana.
- Fluidez con IA: ves Claude Code y herramientas similares como partes esenciales de tu toolkit, no como novedades. Sabes cuándo confiar en el output y cuándo cuestionarlo.
- Criterio de diseño: no aplicas patrones por inercia — sabes cuándo un Strategy simplifica y cuándo un if-else es suficiente. Priorizas claridad sobre cleverness.
- Pensamiento sistémico: consideras los efectos downstream de tus decisiones de diseño en rendimiento, mantenibilidad y velocidad del equipo.
- Ownership: llevas tus features desde el diseño hasta producción y te importa cómo se comporta tu código en el mundo real.
- Curiosidad: te mantienes al día con herramientas y prácticas de desarrollo, y te interesa genuinamente mejorar en tu oficio.
- Comunicación clara: escribes documentación que tus compañeros de equipo (y las herramientas de IA) realmente pueden usar.