En este artículo te contamos todo lo que necesitas saber sobre la profesión de Data Engineer o Ingeniero de Datos. Qué es, a qué se dedica, cómo es su día a día y qué habilidades se necesitan para ocupar esta profesión.
Dentro del paraguas de los empleos de IT, y de Data en concreto, encontramos al Data Engineer, que se trata de un perfil bastante técnico, a medio camino entre los equipos de desarrollo y de analítica, obseso por la automatización, y al servicio de las unidades de negocio y Data Scientist.
Por otro lado, si lo que quieres es informarte sobre lo que cobra un Data Engineer, te recomiendo que te pases por nuestro artículo de salarios de Data Engineer. Y si quieres conocer las tecnologías con las que trabaja el Data Engineer, tenemos otro artículo sobre las 10 tecnologías imprescindibles.
¿Qué es un Data Engineer?
Un Data Engineer es un profesional especializado en diseñar, mantener y optimizar infraestructuras que sirvan para la recolección, transformación, etiquetado, clasificación y limpieza de datos en bruto, con el objetivo de presentarlos en un formato mucho más útil para que los puedan explotar sus usuarios finales.
Funciones de un Data Engineer
La cantidad de responsabilidades normalmente es inversamente proporcional al tamaño de la empresa. Lo que significa que en empresas grandes, con equipos grandes, el trabajo está mucho más desagregado y especializado, y por tanto el empleado tiene más acotado su radio de acción. Eso no quiere decir que tenga menos trabajo, sino que lo tendrá más focalizado en unas áreas concretas.
Vamos a enumerar las responsabilidades del Data Engineer, donde las primeras serían las más habituales:
- Proveer de datos a las unidades de negocio: es la persona responsable de proveer de datos estructurados, limpios y fiables a los usuarios finales, para que sean ellos los que lleven a cabo la analítica.
- Orquestación y automatización de procesos: para tener una consistencia en las analíticas, es necesario que todos los días se carguen en la capa analítica las mismas estructuras de datos, y para ello lo más sencillo y eficiente es automatizar pipelines de procesado de datos.
- Documentación, taggeado y mantenimiento del dato: al ser responsable de la creación de nuevas estructuras de datos, es importante documentarlas bien, definir qué roles se van a encargar de su explotación, niveles de privacidad, qué validez tiene el dato o decidir a partir de qué fechas se guarda el dato en frío.
- Gestión de recursos en la nube: la automatización de procesos conlleva en muchas ocasiones el despliegue de infraestructura en la nube. Para esto debería haber un Cloud Engineer, pero no siempre es así.
- Despliegue y mantenimiento de bases de datos: es posible que el Data Engineer no solo se encargue de el desarrollo de pipelines automatizados con los que cargue datos en una base de datos, sino también de la elección del tipo de base de datos, de su despliegue, control de accesos y mantenimiento.
- Puesta en producción de software: esto se acerca más a un perfil DevOps, pero es posible que tenga que subir a producción las aplicaciones de datos desarrolladas por el equipo de Data Scientist, como por ejemplo un modelo de Machine Learning.
- Analítica: podríamos pensar que esto corresponde con el trabajo del Data Analyst, pero un Data Engineer también necesita tener un pensamiento crítico y analítico, ya que es el encargado de proporcionarle los datos a los equipos de analistas.
- Arquitecto de datos: como en casos anteriores, ya hay un puesto de trabajo que se dedica a ello, el Data Architect, pero es posible que el Data Engineer tenga que asumir ese rol. Básicamente se van a encargar del modelado de datos y diseño de la estrategia del dato de la compañía a más alto nivel.
Como ves, es difícil concretar las responsabilidades del Data Engineer, ya que es un perfil muy versátil y que, como comprobarás en la siguiente sección, requiere de una gran cantidad de conocimientos técnicos. Ahora bien, el core del Data Engineer es poner los cimientos en los proyectos de datos, ya que tienen que formar una base muy sólida de estructuras de datos confiables, sobre las que trabajan Data Scientist/Analyst, y por ello los tres primeros puntos son fundamentales.
¿Qué habilidades debe tener un Data Engineer?
Hard Skills
Este es el principal escollo y por el que muchas personas o no se meten en esta profesión, o tiran la toalla antes de tiempo, y es que se necesita una gran cantidad de conocimientos técnicos para llevar a cabo el trabajo.
Ahora bien, esto no significa que tengas que ser un experto en todo. Irás aprendiendo poco a poco y especializándote en las áreas donde te sientas más cómodo. Un buen Data Engineer debe saber de:
- Redes: es necesario un fuerte background de redes y protocolos de comunicación para poder orquestar todos los procesos y servicios productivos.
- Programación: desde lenguajes como Python o SQL a Java, Scala, C o C++.
- Manejo de sistemas operativos: la mayoría de despliegues de software se realizan sobre máquinas Linux, por lo que es muy importante desenvolverse bien con este sistema operativo.
- Cloud: cada vez se realizan menos despliegues de software on premis, y nos abstraemos más de la infraestructura que llevan por debajo nuestras aplicaciones. Por lo que es imprescindible conocer las principales plataformas cloud y lo que se puede hacer con ellas.
- Seguridad: otro punto fuerte y que se suele dejar de lado es la seguridad, tanto en el desarrollo de aplicaciones como en el control, acceso y seguimiento de los datos de la compañía.
- Procesamiento de datos (ETL): aquí hay que desenvolverse con mucha soltura. Es muy probable que la mayor parte del tiempo de tu trabajo se lo tengas que dedicar a desarrollar pipelines de procesamiento de datos para servirlos a los Data Scientist. Y además, que estos pipelines corran de forma autónoma, sean escalables y flexibles ante cualquier cambio de especificaciones.
- Diseño y administración de bases de datos: los datos hay que almacenarlos y gestionarlos desde algún sitio. Dependiendo del tamaño de la empresa, el Data Engineer tendrá que ocuparse del despliegue y gestión de las BBDD.
- Orquestación y automatización de procesos: otro de los aspectos clave. El Data Engineer va a tener que comunicar todos los procesos, servicios y pipelines, de forma que haya que intervenir lo menos posible en su ejecución, y sus evoluciones no sean un dolor de cabeza.
- Testing y monitorización: si hablamos de automatización, hay que tener muy presente el control y monitorización de los procesos, así como el correcto desarrollo de baterías de pruebas para la puesta en producción del software.
- Puestas en producción de software: existe el perfil de DevOps, que se encarga de realizar esta tarea de una forma ágil, pero dependiendo del tamaño de la empresa, es posible que le toque al Data Engineer.
- Data Analysis: el Data Engineer no es un Data Analyst, pero sí tiene que saber interpretar los datos y tener un pensamiento crítico.
- Basics de Machine Learning: tampoco necesita ser experto en Machine Learning, pero si tiene que poner en producción algún modelo, resulta interesante que conozca la metodología de trabajo de Machine Learning y sus limitaciones.
Como ves, no son pocas las áreas de conocimiento que abarca un Data Engineer. No obstante, hasta el Data Engineer más senior no va a ser experto en todas ellas, tendrás que buscar tu nicho y tu zona de confort. Quizá te sientas más cómodo con las ETLs, o con subidas de software a producción, o desplegando recursos en cloud. Esta carrera profesional es un aprendizaje continuo y cada uno tiene que encontrar su lugar en base a sus skills y preferencias. Incluso es posible que comiences de Data Engineer y evoluciones a otros puestos como Cloud Engineer, Data Scientist o Data Arquitect.
En esta sección tienes todas las competencias que debería adquirir el Data Engineer, pero si lo que quieres es saber y qué tecnologías y herramientas utiliza, te recomiendo que visites el artículo de Tecnologías de Data Engineer.
Soft Skills
Tendemos a centrarnos únicamente en las hard skills, pero las soft skills son igual o más importantes. Que tengas algunas carencias de conocimiento en una entrevista de trabajo no es algo grave si eres una persona proactiva, con ganas de aprender y resolutiva. Sin embargo, si vas sobrado de conocimiento pero no sabes transmitirlo, ni trabajar en equipo, y mantienes una actitud pasiva en los proyectos, ahí si tenemos un problema. A las empresas les compensa más contratar empleados con muy buenas capacidades, aunque les falte algo de conocimiento. Veamos las soft skills más importantes:
- Comunicación: comenzamos con el primer clásico en soft skills, y es que en los trabajos técnicos es fundamental, al tener que tratar con equipos tanto técnicos como no técnicos. Además de que hay que documentar bien todo lo que hacemos para cuando terceras personas hereden nuestro trabajo.
- Trabajo en equipo: seguimos con los cásicos en soft skills. En el caso del Data Engineer resulta de especial importancia puesto que tendrá que trabajar mucho en equipos multidisciplinares con data scientists, analistas, directivos y personal de IT.
- Mente inquieta: un ingeniero tiene que ser curioso, proactivo y cuestionarlo todo.
- Pasión por aprender: no hay que conformarse con lo que se tiene ni con lo que se sabe. Esta carrera es un constante aprendizaje, especialmente en tecnologías, puesto que estamos en un punto en el que ya casi evolucionan más rápido que nuestra capacidad de adaptarnos.
- Adaptabilidad y soltura con la tecnología: es imposible dominar todas las tecnologías relacionadas con esta profesión, por lo que estoy seguro que cada poco tiempo, ya sea en tu trabajo o porque te has cambiado, tendrás que aprender y adaptarte a algo nuevo.
- Pensamiento crítico y toma de decisiones: el Data Engineer es responsable de decisiones que implican cambios estructurales en la empresa, en la metodología de trabajo y costes en infraestructura. Es muy importante tener claras las cosas y no tomar decisiones a la ligera.
Diferencias con Data Scientist, Data Analyst y Machine Learning Engineer
Es importante poner en contexto al Data Engineer, dentro del paraguas de profesionales que se dedican al mundo de los datos. Como ya hemos mencionado anteriormente, el Data Engineer se encuentra entre los perfiles de desarrollo y los de analista. Necesita un fuerte background en programación y redes, pero tampoco es necesario que sea un experto en matemáticas estadísitca y modelos. Serán los Data Analyst y Machine Learning Engineers los que trabajen con los datos ya previamente tratados por el Data Engineer, desarrollando modelos y extrayendo insights para las unidades de negocio, de cara a la posterior toma de decisiones.
Por tanto, el Data Engineer trabajará en una primera etapa de los proyectos, poniendo los cimientos mediante el desarrollo de estructuras de datos con los que se puedan trabajar. Es posible que tenga que realizar los despliegues de la infraestructura necesaria para el volcado de datos, o que se delegue en el experto en Cloud Engineer. Por otro lado, todas esas estructuras de datos que automatice tendrá que taggearlas y documentarlas, si no hay una persona de Data Governance dedicada en ello. Además, en el desarrollo de las estructuras es posible que necesite trabajar mano a mano con un Data Architect, que se encargue del modelado de datos.
Una vez termine el trabajo de automatización mediante el cual provee de datos limpios, y confiables en la capa analítica, habrá un proceso de realimentación mientras los Data Scientist trabajan con estos datos, en el cual tendremos que realizar cambios y nuevas subidas a producción con las necesidades que vayan surgiendo. Es posible que sea el propio Data Engineer el que se encargue de la elección y mantenimiento de herramientas de BI que usen los Data Analyst para explotar los datos.
Y es en la última etapa del proyecto donde vuelve a tener un papel protagonista el Data Engineer, puesto que en cuanto haya un producto de datos ya desarrollado, ya sea un modelo o un dashboard que se quiera automatizar su actualización, si no existe un perfil de DevOps dedicado a ello, será el Data Engineer el encargado de la subida a producción, testeo y monitorización.
¿Qué hace un Data Engineer? Ejemplo de un día a día
La teoría está muy bien, pero creemos interesante poner algunos ejemplos donde poder ilustrar el papel que desempeñan los Data Engineers dentro de un proyecto de data. Veamos algunos ejemplos de tareas que lleva a cabo un Data Engineer en su día a día:
- Servir datos para la capa analítica. Este es el trabajo más habitual del Data Engineer. Recibirá los datos en crudo en una base de datos y tendrá que desarrollar, por ejemplo en Python, una serie de ETLs para agregar y limpiar esos datos que vienen en crudo. Estos procesos de limpieza estarán acordados con sus usuarios finales, es decir, aquellas personas que vayan a usar la capa analítica.
- Puesta en producción de un modelo. Tras servir los datos en la capa analítica, los Data Scientist han desarrollado un modelo que usa los datos de un formulario rellenado por los clientes desde la página web de la empresa. Por tanto, el Data Engineer tendrá que productivizarlo, montando una API en AWS, para que el equipo de full stack pueda llamar a esa API y dejar los resultados en una base de datos, que o bien consumirán directamente los Data Scientists, o tendremos que volver al punto 1 en el que montamos un proceso de limpieza para el posterior consumo.
- Despliegue de recursos: en los dos puntos anteriores hemos hablado de bases de datos, explotación del dato, APIs… Todo esto son recursos que habrá que desplegar. Siguiendo con el ejemplo en AWS, la capa analítica podría ser un MySQL desplegado en Amazon RDS, la API se podría desarrollar en Flask y alojarse en Elastic Beanstalk y los outputs de los modelos los puede enviar el equipo de full stack a un mongoDB.
- Se producen actualizaciones en los modelos: Pasa un mes y tenemos datos nuevos como para reentrenar los modelos. Primero habrá que asegurarse que los datos llegan correctos y actualizados en la capa analítica. Y si queremos automatizar el proceso de reentrenado al 100%, podemos contar con algún orquestador como Airflow para llevar a cabo estas tareas, o un Scheduler para que corra el reentrenado siempre el día 1 de cada mes… Por fortuna, hay muchas opciones.
- Tareas de data governance: hemos creado la capa analítica y los analistas van a consumir los datos que les suministramos. Tendremos que desarrollar el metadatado de estos datos mediante herramientas como Dataplex, donde se definen permisos de usuario, se describen los datos y establecemos el nivel de privacidad de los datos de las tablas.
Un Data Engineer participa sobre todo al inicio y final del proyecto. Al principio para estructurar los datos, y una vez han desarrollado el producto de datos, vuelven a entrar en escena para la puesta en producción, seguimiento y monitorización. Aunque esto no quiere decir que entre medias no vaya a participar, ya que los cambios de especificaciones en la capa analítica y peticiones nuevas, son muy habituales.
¿Qué hace un Data Engineer Junior?
Un Data Engineer junior generalmente se involucra en tareas más específicas y supervisadas dentro del equipo de ingeniería de datos. Sus responsabilidades pueden incluir la implementación y mantenimiento de flujos de datos más simples, la extracción, transformación y carga (ETL) de datos en diversas fuentes, y el apoyo en la creación y administración de pipelines de datos.
¿Qué hace un Data Engineer Senior?
Por otro lado, un Data Engineer senior asume un rol más amplio y estratégico en el equipo. Son responsables de diseñar arquitecturas de sistemas de datos a gran escala, liderar proyectos de ingeniería de datos complejos y tomar decisiones sobre la selección de tecnologías y enfoques para optimizar flujos de datos y garantizar la escalabilidad. Los Data Engineers senior también se involucran en la resolución de problemas técnicos complejos, como la optimización del rendimiento y la gestión de datos en tiempo real.
¿Cómo ser un Data Engineer?
La web está llena de cursos y recursos de todo tipo donde aprender las habilidades necesarias para convertirse en un Data Engineer. Nuestro objetivo no es reinventar la rueda, sino guiarte en tu aprendizaje, ya sea con nuestro material totalmente gratuito o con el que te recomendemos de otras webs.
Si quieres trabajar como Data Engineer, hemos desarrollado un roadmap de aprendizaje donde te mostramos el paso a paso de las tecnologías y habilidades que tienes que dominar, desde que eres un junior hasta que tengas ya unos años de experiencia. ¡Comienza con los fundamentos de Data Engineer!
Conclusiones
El Data Engineer es un perfil de lo más complejo, que exige tener unos conocimientos técnicos muy sólidos y un nivel alto de responsabilidad. Ahora bien, por otro lado, al ser un perfil cuya formación no se adquiere de la noche a la mañana, la oferta es baja, y por fortuna, de momento la demanda por parte de las empresas es alta, por lo que el salario es bastante competente. Si quieres más información sobre salarios, oferta de puestos y formación, te recomendamos nuestro otro artículo sobre el empleo del Data Engineer.
Como siempre, te aconsejamos andar antes que correr, y que te centres en adquirir un fuerte background en redes, programación y sistemas, antes que intentar chapurrear las tecnologías que piden en las ofertas de trabajo. Lo primero, porque en las ofertas se pide mucho más de lo que en realidad se necesita, y lo segundo, porque si tienes la teoría clara, después aprender una herramienta u otra, te va a resultar mucho más sencillo.
Pingback: We Learn Data