Artículo de Alejandro Llorente, co-fundador y data scientist en PiperLab.
En PiperLab, empresa de Big Data y Data Science, llevamos desde hace 7 años desarrollando soluciones basadas en datos, análisis, estadística y algoritmos que permiten dar respuesta a retos
En todo este tiempo, nos hemos encontrado con proyectos que nos han permitido dar rienda suelta a nuestra capacidad de entender la información, de ser creativos y profundos a la hora de analizarla o para aplicar toda la batería de algoritmos de Machine Learning para modelizar distintos fenómenos y obtener la mejor solución posible.
Abordamos más de 40 proyectos al año, en mas de 25 clientes, gestionamos un equipo con 30 perfiles técnicos…. En ocasiones, son proyectos completamente nuevos pero, en otras, tienen similitudes con otros ya realizados; a veces son proyectos con poca complejidad de datos y en otras ocasiones con una variedad de información tremenda; en otros, la infraestructura es muy estándar mientras que en otros es necesario manejar tal volumen de información que necesita de una componente de arquitectura muy fuerte.
En definitiva, el reto a día de hoy es, por un lado, manejar la complejidad que supone un equipo grande de científicos de datos e ingenieros de datos, un gran número de clientes y proyectos, y la gestión del conocimiento que se genera en los proyectos, y por otro lado, la implementación y la aplicación de buenas prácticas que generen un retorno y una nueva forma de abordar los nuevos retos de una manera más efectiva y productiva.
Si nos centramos en el primer objetivo sobre manejar la complejidad de los equipos y del conocimiento, somos muy conscientes de que esto no es algo que sucede en PiperLab exclusivamente. Sabemos que es algo que sucede a otras empresas del sector, en equipos de data scientist de nuestros clientes e, incluso, empresas de desarrollo software o consultoría tecnológica más tradicional.
De todos ellos hemos oído frases del tipo:
- “Queremos hacer un proyecto de segmentación de clientes. Sí, sabemos que ya se han hecho en otros departamentos de la compañía, pero no sabemos los detalles y tenemos que hacer uno nuevo”.
- “Tenemos un problema porque la persona que estaba haciendo un proyecto de Machine Learning se ha ido de la compañía y nadie del equipo quiere responsabilizarse para darle continuidad, por desconocimiento de lo generado y por no tener tracking de las decisiones que se han ido tomando”.
- “En nuestros procesos de desarrollo de proyectos con datos, no es sencillo validar o reproducir los resultados intermedios. En muchas ocasiones, parece que el software generado funciona y que los datos son razonables, pero es un proceso muy poco transparente”.
- “Es complicado gestionar la autonomía que requieren los data scientists con la estandarización del proceso de desarrollo de los proyectos de Machine Learning”.
Hasta ahora, estos riesgos, tanto de proyectos con clientes como internos, se mitigan con metodología: tener una documentación adecuada en cada una de las fases del proyecto, una cierta estandarización de entornos y formas de despliegue de proyectos según la tipología, abstracción de ciertos componentes software reutilizables, etc. Pero desde hace algún tiempo nos preguntamos: ¿puede la tecnología ayudarnos a resolver estos problemas? ¿existen herramientas en el mercado que aborden toda esta problemática de una forma integral?
En PiperLab nos hemos dado cuenta de que esto es un gap muy grande y que es hora de llevar el desarrollo de proyectos con datos a otro nivel y para ello hemos creado Datenea. Este software, un framework de colaboración y desarrollo para proyectos de data science, nace con la vocación de incrementar la productividad y efectividad de los proyectos de datos en las empresas, pero también con la intención de que las empresas reconozcan en estos proyectos activos digitales que tienen un gran valor. Para ello, nos hemos enfocado en resolver retos que, en nuestra experiencia, si se mantienen en el tiempo, pueden llevar a frustraciones, desmotivaciones y descrédito de los proyectos con datos en las compañías.
Gobierna el proceso de desarrollo
Cuando queremos iniciar un proyecto y en el propio desarrollo del mismo podemos establecer una serie de guías y prácticas que será la base sobre la que se hagan todos los proyectos. Esto no es algo estático, está vivo a lo largo del tiempo, pero nos ayudará desde el primer día. Tendemos a pensar que, en los proyectos con datos, la mayor parte del tiempo es el análisis y la modelización, pero no es así. Siempre buscamos convertir nuestros análisis en software y, con ello, estamos generando un activo que debe ser gobernado.
Aísla los entornos
Solo escribiendo estas líneas, me vienen sudores fríos. ¿A quién no le ha pasado alguna vez que una actualización de un paquete o el kernel de algún lenguaje de programación ha hecho que aquello que funcionaba como la seda comience a emitir errorres casi indescifrables? Aislar los entornos tiene muchas cosas buenas y una de ellas es evitar errores en el futuro como el que acabo de describir; otra, es la facilidad de poder gestionar un entorno de desarrollo lo más similar posible al entorno productivo. Potencialmente, esto puede llevar también a crear entornos de ejecución de procesos complejos fuera de nuestros entornos locales de una manera remota y distribuida. Implantar la tecnología necesaria para poder congelar las versiones de las que dependan tus procesos de análisis y tu software, de una forma automática y sencilla, acelerará la puesta en producción y facilitará el mantenimiento futuro.
Fomenta la colaboración
A menudo, sobre todo cuando una compañía empieza a desarrollar sus primeros proyectos de Data Science y Machine Learning, los equipos son unipersonales y, en ocasiones, se espera que funcionen casi como una caja negra: les damos los resultados y el problema y esperamos que en cierto tiempo den las respuestas. En un proyecto con datos no es solamente importante que lo que se desarrolle funcione, también tiene que tener sentido. En mi opinión, esto se consigue de dos formas:
- Construyendo equipos completos para el desarrollo del proyecto: es muy fácil hacerse trampas al solitario con los datos, convencerse de que lo que obtenemos está bien. Si conseguimos que se involucren los departamentos de negocio en el proyecto desde el principio tendremos una mayor visión sobre el reto y una opinión crítica que busca optimizar el resultado al máximo.
- Si se puede, contando con más de un data scientist en el proyecto: a menudo, es mejor tener a dos personas en dos proyectos distintos que a dos personas haciendo cosas completamente independientes. Muchas veces, por facilitar la gestión, tendemos hacia el segundo escenario, pero, en la medida de lo posible, puede que con distintas implicaciones y dedicaciones en cada uno, puede ser conveniente.
Reutiliza desde el primer día
Es esencial no reinventar ni repensar cada cosa que queremos solucionar. Existen bibliotecas y frameworks que facilitan múltiples tareas en los proyectos de Machine Learning. Por ejemplo, en nuestros desarrollos en Python usamos pycaret, Pandas Profiling, scikit-learn… en definitiva, buena parte de los paquetes típicos que están en cualquier toolbox de Data Science y nos ayudan en todas las fases del proceso, desde la descripción de los datos hasta la modelización o puesta en producción.
Sin embargo, hay otro nivel de reutilización que tiene que ver con el conocimiento interno que se genera en los proyectos de datos. Gestionar este conocimiento es esencial para no repetir errores, para reaprovechar lo que ya se ha pensado y diseñado, para mejorar a partir de un punto y no dar pasos hacia atrás. Esto se consigue con una buena documentación de proyecto, con una buena biblioteca interna de recursos, con organización en la formación, incluidos los procesos internos, y con la visibilización de los componentes y proyectos que la compañía realice.
Ninguna de estos puntos por sí solos garantizan el éxito en el aumento de la productividad de los proyectos con datos pero si, desde el principio, desde las primeras iniciativas, intentamos ser organizados en hacer las cosas de una determinada manera, implantamos una cultura de desarrollo con datos y nos creemos que es una buena manera, se notarán a medio plazo los resultados. Y tú, ¿eres un #CreyenteDelDato?