Los inicios son siempre difíciles, en casi todo, y los proyectos con datos no van a ser menos. Muchos de los que leáis este post estarán de acuerdo conmigo y si tuviéramos que empezar ahora de cero, seguramente, no haríamos las cosas igual. Sin embargo, hay prácticas que, a medida que se van desarrollando proyectos, generan un retorno, a menudo no cuantificado, y que nos permiten abordar los nuevos retos de una manera más efectiva y productiva.

La implementación y aplicación de estas prácticas no son gratis, hace falta un esfuerzo de diseño e inversión previa pero que permitirá evitar otro tipo de frustraciones y desmotivaciones en el futuro. 

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. En particular, desde PiperLab, os proponemos: 

  • Crea una ficha de proyecto: a modo de Business Model Canvas, identifica claramente qué problema quieres solucionar, qué datos son clave, qué actividades dentro del proyecto lo serán, qué recursos necesitas y cuáles van a ser las vías de monetización de este desarrollo. 
  • Asocia problemas concretos de negocio con desarrollos: independientemente de la metodología de gestión del proyecto, asocia preguntas concretas que responder a procesos de análisis de datos. Identifica las entradas y las salidas de cada pregunta y ten en mente la foto general del proyecto. 
  • Aplica las best practices del mundo del desarrollo software: aprovecha los procesos de CI/CD de la compañía, la correcta utilización y políticas de versionado de código, documenta el código, ten un plan de releases y entregas incrementales, … 

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 errores 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: 

Construye 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, los que de verdad se beneficiarán de la consecución exitosa del proyecto, tendremos una mayor visión sobre el reto y una opinión crítica que busca optimizar el resultado al máximo. 

Si puedes, cuenta con más de un data scientist en el proyecto: creo que, 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.

Esto evita dependencias demasiado grandes sobre recursos individuales del equipo, provoca conversaciones y discusiones constructivas acerca de la mejor solución y crea un ambiente de colaboración entre las miembros de los equipos de datos. Además, puede dar lugar a formas de reutilización entre casos de uso que, a su vez, aceleren el desarrollo. 

Reutiliza desde el primer día 

Siguiendo con el último punto es esencial no reinventar ni repensar cada cosa que queremos solucionar. Desde el punto de vista 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?