Estamos buscando un Desarrollador Front-End a tiempo completo para diseñar y construir las partes orientadas al usuario de nuestra plataforma de trading de alto rendimiento. Ayudarás a crear interfaces claras y ricas en datos que permitan a traders y analistas trabajar de forma eficiente y efectiva.
Colaborarás estrechamente con el equipo de Desarrollo Back-End y con el Project Manager para entregar sistemas bien integrados. Una parte clave de este puesto es tu capacidad para debatir de manera abierta con el equipo los enfoques de solución, los compromisos, las limitaciones y los pros/contras, y no solo seguir un patrón o una librería específica.
## Responsabilidades clave
– Desarrollar y mantener las aplicaciones front-end de nuestra plataforma de trading.
– Trabajar con desarrolladores back-end y el project manager para asegurar una integración fluida entre sistemas.
– Crear maquetaciones de múltiples páginas, menús y flujos de trabajo que equilibren usabilidad con eficiencia.
– Contribuir a definir el diseño y la experiencia de usuario de la plataforma de trading, el gestor de rendimiento y riesgo, y el motor de backtesting.
– Construir y optimizar funcionalidades de charting y visualización de datos, usando librerías como TradingView o D3.js para soportar muchos tipos de gráficos (incluyendo tablas y packs de gráficos con múltiples series).
– Mejorar continuamente la UI/UX para lograr claridad, velocidad y una navegación intuitiva.
## Requisitos
– Excelentes habilidades de comunicación y capacidad para colaborar de forma efectiva con desarrolladores, project managers y partes interesadas del negocio.
– Buenas aptitudes de diseño: simplicidad y eficiencia, con capacidad para convertir necesidades complejas en interfaces limpias y fáciles de usar.
– Tener conocimientos de sistemas financieros o conceptos de trading es un plus.
## Stack principal (requerido)
– React 18 + Next.js (App Router), TypeScript, TailwindCSS.
– Buenas habilidades de gestión de estado para datos de alta frecuencia (p. ej., Zustand, Redux Toolkit, useSyncExternalStore).
## Datos en tiempo real y rendimiento
– Experiencia práctica con WebSockets/SSE, incluyendo reconexión/backoff, conexiones de socket autenticadas y re-suscripción de tópicos.
– Experiencia implementando backpressure, buffering, coalescing y windowing para evitar que la UI se “atasque” bajo miles de actualizaciones por minuto.
– Experiencia con virtualización de datos (p. ej., react-virtualized, react-window) para tablas grandes como órdenes, posiciones y operaciones.
– Familiaridad con Web Workers/OffscreenCanvas y el envío de mensajes para mantener el hilo principal con buena capacidad de respuesta.
– Comprensión de presupuestos de latencia y perfilado de tiempo de frames usando React DevTools y herramientas de rendimiento del navegador.
## Charting y visualización
– Experiencia práctica con librerías profesionales de charting (p. ej., TradingView Charting Library, Lightweight Charts, Highcharts, D3).
– Superposiciones en tiempo real como mejor bid/ask, profundidad del libro de órdenes, último OHLCV y anotaciones de órdenes/posiciones.
– Maquetaciones de paneles múltiples (precio, volumen, indicadores) con crosshairs sincronizados y escalas temporales compartidas.
## Arquitectura y acceso a datos
– Caché e invalidación en el cliente (p. ej., TanStack Query/React Query).
– UI guiada por esquema para instrumentos y centros/venues.
– Uso de Error Boundaries, Suspense e hidratación progresiva/streaming para páginas grandes de Next.js.
## Autenticación, seguridad y roles
– Comprensión sólida de flujos OIDC/JWT, refresco/rotación de tokens y autenticación de WebSocket.
– Activación de funcionalidades basada en roles (solo lectura vs permisos de trading).
## Testing, calidad y fiabilidad
– Tests unitarios para transformaciones/parsers críticos (p. ej., Playwright/Vitest para flujos end-to-end/interacción).
– Experiencia con feature flags, despliegues escalonados y monitoreo con Sentry/OpenTelemetry.
## Deseable
– Experiencia con interfaces tipo escritorio (paneles acoplables mediante arrastrar, grids redimensionables).
– Exposición a WASM para cálculos intensivos (p. ej., cálculo de indicadores).
– Familiaridad con detalles de FIX/cripto-venues como tamaños de tick, lot sizes y comportamiento de la sesión de trading.
## Preguntas de selección
Por favor, mantén cada respuesta entre 4 y 8 oraciones. Se permiten viñetas si son claras.
1) **Migración de UI (hrzk → Next.js):**
Elige UNA área de `hrzk.html` (p. ej., Órdenes+Operaciones, tabla de posiciones, Equity/Drawdown). Explica cómo la migrarías a React 18 + Next.js (App Router) + TypeScript + Tailwind. Incluye tu estructura de carpetas y qué construirías como componentes de cliente vs servidor. Valoramos tus compromisos, no un único método “correcto”.
2) **Ingesta de datos en tiempo real:**
Explica cómo manejarías WebSockets/SSE para actualizaciones de alta frecuencia, incluyendo reconexión/backoff, sockets autenticados y re-suscripción a tópicos. ¿Qué fallos esperas en producción?
3) **Backpressure + prevención de “UI thrash”:**
Asume miles de actualizaciones por minuto para órdenes/posiciones/operaciones. Describe cómo implementarías buffering/coalescing/windowing para que la UI siga siendo ágil. Explica cómo lo combinarías con gestión de estado (p. ej., Zustand/RTK/useSyncExternalStore) y virtualización (react-window/react-virtualized). ¿Qué medirías para demostrar que funciona?
4) **Enfoque de charting:**
Necesitamos gráficos rápidos, legibles y ricos en datos (p. ej., equity/drawdown, doughnut/barras). Elige un tipo de gráfico de `hrzk.html` y explica qué librería usarías, tu estrategia de frecuencia de actualización y los riesgos de rendimiento, además de tus mitigaciones.
5) **Auth + gating por roles:**
Explica cómo manejarías el refresco de tokens JWT/OIDC y la autenticación de WebSocket, y luego implementa gating por roles (solo lectura vs trading). Usa un ejemplo como “Cancelar todas las órdenes” o “Detener/Iniciar ejecución” y explica cuándo ocultarías, deshabilitarías o mostrarías una advertencia.
6) **Responsabilidad remota + trabajo en equipo:**
Comparte un ejemplo en el que asumiste la responsabilidad remotamente en una tarea ambigua. Luego describe cómo trabajarías con un equipo pequeño de desarrollo: cómo haces preguntas de aclaración, cómo comunicas riesgos temprano y cómo evitas enviar código de “óptimo local” que podría romper otras partes del sistema.
## Qué esperar (proceso de entrevista)
Nuestro proceso es mayormente asíncrono y se centra en trabajo real. Empezarás con la presentación de tu CV y una breve solicitud estructurada. Los candidatos preseleccionados completan una prueba técnica asíncrona. Los finalistas completan una muestra de trabajo pagada y con tiempo acotado, alineada al puesto. El proceso completo normalmente toma entre 4 y 6 semanas.
## Preguntas frecuentes
– **¿Necesito responder a las preguntas?** Sí. Por favor, responde en un formato abierto idealmente mediante una carta de presentación. Esto es obligatorio para la fase de selección.
– **¿Necesito entrevistas en vivo?** La mayoría de los pasos son asíncronos para minimizar la fricción de la agenda; las llamadas en vivo son mínimas.
– **¿Necesito estar en cámara para la muestra de trabajo?** No—basta con pantalla + voz.
– **¿Qué herramientas puedo usar para enviar grabaciones?** Cualquier herramienta común de grabación de pantalla o de compartición de archivos está bien, siempre que el video sea fácil de ver.
– **¿La tarea final está pagada?** Sí. Los candidatos finalistas preseleccionados completan una muestra de trabajo pagada y con tiempo acotado.
To apply for this job, please visit the application page
