Mostrando las entradas con la etiqueta Framework. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Framework. Mostrar todas las entradas

viernes, 9 de abril de 2021

Data Engineer vs Data Scientist

Si, hace mucho tiempo (varios meses) que no escribo una entrada para este blog de Idea Falaz, aquí en esta entrada quiero compartir algo que me encuentro aprendiendo de gran utilidad para el rol que actualmente desempeño laboramente como Data Engineer. Aquí aprovecho hacer una aclaración y es que voy a compartir mi opinión y sólo una pequeña parte de lo que he podido aprender y evidenciar, no es un hecho tácito y me gustaría conocer la opionión de otras personas con respecto al tema. (escribiendo esta entrada me alejé un poco de la parte técnica, voy a escribir otra entrada para la parte técnica)

Primero quiero comentar algunas de las dificultades que se me han presentado durante el desarrollo de algunos proyectos.

Un panorama difuso entre Data Scientist y Data Engineer; esto es algo a lo que me enfrenté en los últimos 2 años. En la industria del software no existía y aún no existe (con algunas excepciones) una distinción o claridad en cuanto al role y funciones que debe cumplir una persona dedicada al Data Scientist ó Data Engineer, es más, hay personas y empresas que todavía tienen la idea errónea de que el Data Scientist es toda una profesión en la cual se le delega como funciones tódo el trabajo y esfuerzo que se debe realizar como Data Engineer, ésto es un gran error tanto para una empresa de la industria del software como para las personas que están construyendo un perfil profesional en este tipo de industria, al final esto puede ser contraproducente, para ambas partes.

Al momento de escribir esta entrada no me considero un Senior ni mucho un Luminary como Software Developer, pero considero que tengo la suficiente experiencia para determinar que soy un mid-senior, con esto en mente y a raíz de la premisa del anterior parrafo, consultando con amigos que han estado relacionados tanto directamente como inderectamente con la industria del software y después de leer varios artículos y blog posts, encontré una zona común en cuanto a las diferencias más evidentes entre el Data Scientist y Data Engineer, esto me ayudó mucho a tener un panorama un poco más claro en cuanto a cuáles son mis intereses, como también definir profesionalmente mis skills y cómo integrarme a un gran equipo interdisiplinario dedicado a la industria del software con proyectos Big Data.


Data Engineer vs Data Scientist

Responsabilidades de un Data Engineer

Empezando a definir de forma general, el Data Engineer es alguien quien desarrolla, construye, prueba y mantiene arquitecturas como bases de datos y sistemas a gran escala. Los Ingenieros de Datos operan con datos "Crudos", estos datos casi siempre, pero que en la vida real es siempre, contienen errores ya sea humanos, provenientes de máquinas o instrumentos. Los datos puede ser no válidos o contener registros sospechosos, esto se debe a que los datos no tienen un formato o contienen códigos específicos de un sistema.

Los Ingenieros de Datos necesitan recomendar, ademas deben implementar formas de mejorar la confiabilidad, eficiencia y calidad de los datos. Para hacer esto, los Ingenieros de Datos necesitan emplear una gran variedad de lenguajes y herramientas para operar en conjunto o tratar de buscar nuevas oportunidades de adquirir nuevos datos desde otros sistemas adecuados para el sistema en específico, estos datos pueden convertise en información para que posteriormente sean procesados por los Data Scientists.

Los Ingenieros de Datos deben asegurar que la arquitectura implementada sea soportada con los requisitos de los Científicos de Datos, Stackholders y el tipo de negocio a la cual sea aplicada.

Al final de este proceso el equipo de Ingenieros de Datos deben generar conjuntos de datos que deben poner a disposicion de los Científicos de Datos para el posterior modelamientos de datos, mineria de datos y producción.


Responsabilidades de un Data Scientist

Empezando a definir de forma general, el Data Scientist obtiene los datos del Data Ingeneer que son inicialmente limpiados y manipulados para poder ser operados en un flujo de trabajo de forma tal que el Científico de Datos puedan usar estos datos para desarrollar sofisticados métodos y procesos que hacen parte de modelos predictivos o descriptivos.

Los cientificos de datos necesitan tener acceso a las preguntas propuestas por la industria o el negocio en particular, para dar respuestas a estas preguntas se requiere que los Data Scientist tengan a su disposicion grandes volumenes de datos tanto de fuentes internas de la misma organización como también de fuentes externas a la organización, uno de los objetivos principales en este proceso consiste en identificar patrones en los datos.

Encontrar patrones en los datos incurre en generar un análisis para la adquisición de información que responda o no a las preguntas propuestas, deben tener habilidades para presentar informes a los stakeholders de forma clara sin tanto tecnicismo, una vez los stakeholders dan un parte de aceptación se debe asegurar que el trabajo realizado se pueda automatizar generando informes de forma recurrente ya sea diariamente, mensualmente o cada año.


¿Y ahora qué?

Bueno, pues aquí algo importante a tener en cuenta, tanto Data Engineer como Data Scientist, deberían trabajar coordinadamente, no son cómo el agua y el aciete, deben tener objetivos claros definidos al inicio de un proyecto, dado que el flujo de los procesos deben/están integrados en ambas partes.

En la vida real existen muchos inconvenientes dado que las teconologías usadas son muy variadas, en algunos casos tenemos Data Scientist expertos usando tecnologias como R, RStudio son muy buenos en eso pero carecen de conocimientos en Python y Jupyter Notebooks, contrario a algunos Data Engineers que son expertos usando estas tecnologías.

Este es un punto a tener en cuenta, la parte técnica podría convertirse en un cuello de botella en el flujo natural de los datos, en algunos proyectos he tenido la experiencia de vivir esto, por lo que buscando opciones de herramientas que permitan ambos mundos, Data Engineers y los Data Scientist, me encontré con una herramienta que actualmente me encuentro aprendiendo y espero compartir en otra entrada algunas razones por las cuales me parece interesante aprender y a tener en cuenta en futuros trabajos, esta herramienta se llama Kedro, desarrollada por el equipo de Quantum Black Labs, son lideres en la industria de los datos.



lunes, 25 de julio de 2016

Proyecto Inicial en Ionic2 y Angular2 usando una Plantilla en Blanco

En esta entrada quiero compartir mis primeros pasos en un intento por aprender a usar el Framework Ionic2 para desarrollar Aplicaciones Híbridas.

Ionic2 actualmente está en versión Beta, los desarrolladores del Framework han hecho importantes cambios, ahora ha sido desarrollado usando la ultima versión del Framework Angular2.

La versión de Angular2 también tiene importantes cambios, lo mas destacado es el uso de TypeScript el cual es un lenguaje de programación que hereda de JavaScript, TypeScript incorpora Tipado de datos y definición de Objetos basados en Clases. Con TypeScript podemos configurar la versión de ECMAScript para la cual el código TypeScript será compilado en código JavaScript nativo.



Entorno de Desarrollo


Para crear proyectos en Ionic2 primero tenemos que configurar nuestro entorno de desarrollo, para esto tenemos que instalar los siguientes programas:



Node.js

En la Internet existen muchos tutoriales de como instalar Node.js por lo tanto no voy a copiar y pegar en esta entrada como se hace la instalación, pero si recomiendo la documentación oficial de Node.js para realizar el proceso según el tipo de sistema operativo que se tenga.




NPM

Es un gestor de paquetes para Node.js con este programa podemos instalar paquetes desarrollados para Node.js JavaScript. Recomiendo la documentación oficial de instalación para NPM.




Ionic2

Suponiendo que se han instalado correctamente Node.js y NPM ahora el paso siguiente es instalar el SDK de Ionic2, igual que los programas anteriores no voy a copiar y pegar como se hace la instalación pero si recomiendo la documentación oficial.


Según la documentación oficial Ionic2 todavía está en versión beta pero podemos seguir creando proyectos de Ionic en la versión 1, por defecto al crear proyectos estos se crean por ahora en Ionic1.

Para poder crear proyecto en Ionic2 hay que indicarlo de forma explicita usando una bandera en el comando para crear el proyecto, esta bandera es --v2 un ejemplo sería:

$ ionic start proyecto --v2

En Ionic2 ya se implementa Angular2 por lo tanto no tenemos que instalar nada, por que Ionic automáticamente descarga y configura las dependencias necesarias.




Atom

Para escribir nuestro código JavaScript recomiendo el editor de texto inteligente Atom me ha gustado mucho usarlo ademas recomiendo instalar el paquete Atom TypeScript para el desarrollo de aplicaciones usando TypeScript que nos va a servir mucho.





Crear un Proyecto


Ahora que tenemos todo instalado podemos crear un primer proyecto en Ionic2, para esto tenemos que ejecutar desde una terminal el siguiente comando:

$ ionic start demo0 blank --v2

Como escribí inicialmente cuando se instala Ionic por defecto al crear los proyectos estos se crean con la versión Ionic1 y no con la versión Ionic2 por que actualmente está en versión Beta. Para crear un proyecto en Ionic2 hay que especificarlo con el uso de la bandera --v2.

Cuando se ejecuta el comando se crea el directorio demo0 para el proyecto, se descargan las librerías y plugins necesarias ademas se descarga la plantilla Blank para crear un proyecto en blanco desde el cual iniciar.



Estructura del Proyecto


El directorio demo0 del proyecto Ionic2 tiene la siguiente estructura:

.
├── app
├── config.xml
├── gulpfile.js
├── hooks
├── ionic.config.json
├── node_modules
├── package.json
├── plugins
├── resources
├── tsconfig.json
├── tslint.json
├── typings
├── typings.json
└── www

7 directories, 7 files


Por ahora solo nos interesa conocer lo siguiente, en el directorio app vamos a tener todo el código fuente que vamos a escribir para nuestra aplicación, se puede relacionar con el ambiente de desarrollo de nuestra aplicación, en el directorio www es donde se genera y código fuente compilado para poner en producción, es decir, es el código de nuestra aplicación que ha sido optimizado para ejecutarse. En el archivo config.xml se encuentra información sobre nuestra aplicación como el nombre, descripción y versión.

Si observamos el directorio app, tiene la siguiente estructura:

app/
├── app.ts
├── pages
└── theme

2 directories, 1 file


Si observamos el directorio www tiene la siguiente estructura:

www/
└── index.html

0 directories, 1 file



Ejecutar el Proyecto


Ahora podemos hacer una prueba de ejecutar el proyecto, para esto tenemos varias opciones:

Ejecuta la aplicación en el Navegador
$ ionic serve

Si tenemos dinero, ejecuta la aplicación en iOS
$ ionic run ios

Para los mas pobres, ejecutamos la aplicación en Android
$ ionic run android


Para hacer una prueba rápida ejecutamos la aplicación en el Navegador y podemos observar lo siguiente:

Ionic2 Plantilla Blank
Ionic2 Plantilla Blank


Realizar algunos Cambios


Esta es la plantilla en blanco que genera nuestro proyecto Ionic2 pero ahora queremos hacer algunos cambios para personalizar un poco nuestra aplicación.

Primero vamos a modificar el archivo config.xml para dar un nombre, descripción y numero de versión a nuestra aplicación.


Ahora si queremos cambiar el contenido que se muestra en la página de la plantilla en blanco debemos modificar el archivo home.html que está dentro del directorio app:

app/
├── app.ts
├── pages
│   └── home
│       ├── home.html
│       ├── home.scss
│       └── home.ts
└── theme
    ├── app.core.scss
    ├── app.ios.scss
    ├── app.md.scss
    ├── app.variables.scss
    └── app.wp.scss

3 directories, 9 files


NOTA: Es importante tener claro que no debemos modificar nada de lo que esté en el directorio www por que el contenido de este directorio se crea automáticamente por Ionic ademas todo lo que nosotros programemos debe estar en el directorio app.




Hacemos nuevamente una prueba rápida ejecutamos la aplicación en el Navegador y podemos observar lo siguiente:

Ionic2 Demo 0
Ionic2 Demo 0


Listo, por ahora eso es todo para empezar el intento de aprendizaje con Ionic2 y Angular2 próximamente voy actualizar esta entrada para mostrar la ejecución en un emulador y un dispositivo Android.