Filled
This offer is not available anymore

Lead Developer in Madrid

UrbanDataAnalytics

Workplace
Onsite
Hours
Full-Time
Internship
No
Share offer

Job Description

¿Quiénes somos?

Somos urbanDataAnalytics, una empresa de Machine Learning y BigData con sede en Madrid. No, no son buzzwords, lo usamos de verdad, evri dei. Si quieres conocernos mejor, en esta charla te lo contamos.

Desarrollamos tecnología, datos y servicios para empresas del sector inmobiliario, intentando dar claridad y transparencia en un sector tradicionalmente oscuro y opaco. Estamos dentro de la nueva corriente de las PropTech: startups tecnológicas que están revolucionando el sector del real estate, uno de los pocos grandes sectores que falta por digitalizar.

¿Qué buscamos?

Un Lead Developer para nuestro equipo de backend, principalmente orientado a desarrollo de APIs (RESTful, GraphQL, gRPC...) que exponen algoritmos predictivos y modelos estadísticos.

Serás también nuestro primer Devops, ayudando a definir e implementar la infraestructura en la nube.

Nuestro stack en una línea:

Python + [Django | Flask] + Postgres + PostGIS + Docker + Kubernetes + GCloud

¿Qué ofrecemos?

  • Un puesto clave en uno de los equipos más importantes de la empresa: llegas en el momento justo al lugar adecuado, donde podrás aportar de verdad, desde el día cero.
  • Sueldo competitivo + phantom shares.
  • Buen ambiente, oficinas céntricas en Madrid (Metro Alonso Martínez), fruta, café, dulces, frutos secos...
  • Trabajo en remoto cuando lo necesites (pasando por la ofi algún día a la semana).
  • Cuenta en PluralSight para que te formes en horas de trabajo.
  • Presupuesto para asistir a conferencias.
  • Pero sobre todo, un proyecto donde te vamos a ayudar a que crezcas hasta el infinito. 🚀

¿Encajas?

Buscamos a alguien proactivo, apasionado del desarrollo de software que sea capaz de aprender mucho y rápido, pero que se haya pegado tortas reales, con software sirviendo datos en producción.

Alguien que no se asuste con cosas como...

  • Tomar decisiones técnicas difíciles, evaluarlas y corregirlas si no han sido las acertadas (no pasa nada, el que juega con fuego...)
  • Crear tecnología desde cero, sin dejarse llevar por buzzwords, pero entendiendo los beneficios que aporta cada nueva herramienta.
  • Enfrentarse a una base de código legacy: entenderla, aceptarla, evolucionarla iterativamente, y saber cuando se debe tirar o cuando se debe mantener (empezar from scratch no siempre es una opción).
  • Lidiar con muchos millones de filas en nuestro Postgres+PostGIS (tablas de 500M de rows no nos hace ni pestañear).
  • Desplegar en el cloud modelos de Machine Learning (+3GB en RAM) entrenados con scikit-learn (no son modelos de juguete, precisamente).
  • Operar nuestro cluster en Kubernetes y optimizar el entorno de desarrollo basado en Docker.

¿En qué consistiría tu día a día?

  • Desarrollar APIs (RESTful? REST-ish? GraphQL? gRPC?)
  • Manejarte en un stack basado en Python + [Django | Flask] + Postgres (simple como un chupete).
  • Evolucionar el diseño hacia arquitectura de microservicios (actualmente tenemos 4), pero sin volverse loco ni dejarse llevar por modas.
  • Escribir queries geográficas avanzadas en nuestro PostGIS (evolución temporal + distribución espacial = 🎉).
  • Mantener y evolucionar la arquitectura del cloud de Google: Docker, Kubernetes, Stackdriver, etc. (saca el Devops que llevas dentro).
  • Evolucionar el sistema de procesamiento en background basado en PubSub de Google (asincronismo FTW!).
  • Diseñar e implementar desde cero el sistema de monitorización y alertas (no más OMG!).
  • Evolucionar el sistema actual de deploy de modelos de Machine Learning (basado sharding).
  • Ser un referente técnico para el equipo. Tu código será un modelo a seguir para otros desarrolladores.
  • Definir e implantar la política open source de la compañía, gestionando y liberando los primeros repositorios.
  • Contribuir al equipo de Data, como un Data(Ops) Engineer más:
    • Automatizar despligues de código y datos (lo llamamos data-deploy, los datos se ponen en producción con la misma fiabilidad y control que el código).
    • Evolucionar la infraestructura en la nube analytics: servidor de entrenamiento de modelos, sistema ETL (extract-transform-load), API interna de productores-consumidores de datos, etc.
    • Mantener y evolucionar el sistema actual de captura de datos: RabbitMQ, Scala, Play framework, openvpn, Proxmox, Linux sysadmin...

¿Cómo serán tus primeros días?

En 1 mes...

  • Entenderás la arquitectura global de todo el sistema.
  • Habrás implementado tus primeras tareas (features y bug-fixes), reduciendo deuda técnica a corto plazo.
  • Entenderás el proceso de desarrollo y serás autónomo siguiéndolo.
  • Habrás mejorado el entorno de desarrollo local (basado en Docker).
  • Conoceras los repos principales y dónde comitear cada cosa.
  • Habrás hecho al menos 4 ó 6 deploys a producción.
  • Debes sentirte cómodo en tu día a día y con la confianza suficiente para meterte en jardines.

En 3 meses...

  • Serás autónomo para decidir qué partes requieren refactorización y cuales pueden aguantar hasta el medio plazo.
  • Tomarás tus primeras decisiones técnicas a nivel de arquitectura. Por ejemplo: ¿es suficiente con el uso que hacemos de Kong o deberíamos evaluar alternativas?).
  • Implementarás un sistema de API analytics para llevar un control exhaustivo del uso que hacen nuestros clientes del API.
  • Habrás hecho al menos un deploy cada 2 ó 3 días.

En 9 meses...

  • La arquitectura habrá cambiado sustancialmente, gracias a tus aportaciones. No sabemos si esto significa más o menos microservicios. Eso nos lo dirás tú.
  • El sistema de procesamiento en background (basado en Google PubSub) será mucho más resilente y escalable.
  • Habrás conseguido que el producto siga un modelo de Continuous Delivery: las ramas se pasan a producción en cuanto llegan a master.
  • Serás el mentor de nuevos integrantes del equipo de backend.
  • Serás capaz de desglosar las nuevas features en la secuencia de tareas óptima para implementarlas. Detectarás dependencias entre tareas y su camino crítico.
  • Habrás ido como ponente a alguna conferencia, para contar lo que estamos haciendo.

¿Y qué tengo que hacer?

No pensártelo más. Si crees que tienes la capacidad y el compromiso para incorporarte a nuestro proyecto, envíanos un email con tu CV, Git(hub|Lab) o lo que tengas interesante y una breve explicación de por qué te gustaría formar parte de nuestro equipo a: jm@urbandataanalytics.com

Hay oportunidades que no se presentan todos los días, así que no dejes pasar el tren! 🚂


 
  • Big Data

UrbanDataAnalytics company page is empty
Add a description and pictures to attract more candidates and boost your employer branding.

Other software engineer jobs that might interest you...