Introducción a la Ingeniería de Datos
La Ingeniería de Datos se ha posicionado rápidamente como una disciplina necesaria para que las empresas puedan aprovechar los datos que generan, tanto estructurados, semi-estructurados, como los no estructurados. La definición de esta disciplina, de acuerdo a los autores del libro Funtamentals of Data Engineering, es:
"La Ingeniería de Datos es el desarrollo, implementación, y mantenimiento de sistemas y procesos que toman datos crudos y producen información de alta calidad y consistente, que soporta otros casos de uso tales como analítica y aprendizaje automático. La Ingeniería de Datos es la intersección de Seguridad, Administración de Datos, DataOps, arquitectura de datos, orquestración, e ingeniería de software. Un Ingeniero de Datos administra el ciclo de la ingeniería de datos, comenzando con la obtención de los datos de los sistemas de origen, y terminando con la puesta en servicio para casos de uso, tales como análisis o aprendizaje automático."
¿Por qué es importante?
La Ingeniería de datos se está volviendo importante principalmente por dos motivos. El primero es que las empresas necesitan hacer análisis descriptivo con los datos que tienen, para poder tomar desiciones con estos datos. El segundo, cada vez más empresas que comenzaron a realizar aprendizaje automático sin tener una fundación sólida de sus datos, se dieron cuenta de que los resultados de los modelos entrenados eran sub-óptimos en el mejor de los casos. Por lo tanto, se ha vuelto una disciplina en sí misma, que requiere habilidades especiales para poder cumplir con la promesa de entregar valor al negocio, para que se pueda describir de forma acertada lo que sucedió y lo que probablemente sucederá. Puede leer más y observar un gráfico interesante sobre este tema en el siguiente blog: https://hackernoon.com/the-ai-hierarchy-of-needs-18f111fcc007
Un poco de historia...
Probablemente recordará que hace unos años el Data Warehouse y el Big Data eran tecnologías populares. De hecho, estas dos fueron las precursoras de lo que se conoce actualmente como Ingeniería de Datos. Los Data Warehouse permitieron a las empresas comenzar a analizar datos a una escala masiva, de ahí el nombre de la tecnología MPP, Massively Parallel Processing, que los hace posible. Con el tiempo, la cantidad de datos requerida aumentó, y pagar a un proveedor de Data Warehouse tradicional se volvió algo restrictivo. Fue cuando Google publicó un artículo sobre MapReduce, y que Yahoo! implementó los conceptos de ese artículo, que nace Hadoop, el primer sistema de Big Data open source. La tecnología de análisis de datos tomó un rumbo al extremo opuesto, prefiriendo tecnologías open source, y parecía que todos los problemas serían resueltos. Sin embargo, los ingenieros de big data dedicaban demasiado tiempo a mantener estos sistemas funcionando, en lugar de dar valor a sus empresas. Es entonces que al parecer se está llegando a un punto medio, donde se prefiere usar soluciones basadas en Nube, tales como AWS, Snowflake, Databricks, Ray etc. Todas ellas ofrecen plataformas de grado Enterprise, basadas muchas veces en proyectos Open Source, lo cual las vuelve económicamente viables, y con una capacidad de escalar desde unos cuantos GigaBytes, hasta PetaBytes de datos.
Habilidades de la Ingeniería de datos
Sin lugar a dudas, un Ingeniero de datos requiere distintas habilidades para poder cumplir los objetivos de su rol dentro de la empresa. El más importante es conocer los principios de una arquitectura de datos moderna, sin enfocarse en un proveedor en particular, para definir cuáles son las herramientas que realmente necesita para dar valor al negocio. En segundo lugar, habilidades de Comunicación, tanto para que el resto de la Empresa compre su trabajo, como para que entregue realmente valor al negocio, construyendo a partir de las necesidades del mismo. Por último, una variedad de tecnologías de programación principalmente, tales como SQL, Python, JavaScript. Aunque se recomienda que las customizaciones de código sean las menos posibles, debido a que cada línea de código escrita conlleva responsabilidad de mantenimiento, estas tecnologías son las principales para construir y entender cómo están construidas las soluciones en las que se apoya la Ingeniería de Datos.