Cómo detectar y evitar la dependencia del proveedor
¿Conoces la sensación de que alguien confíe en ti y, después, tú le falles?
Yo sí.
Comienza la anécdota.
Durante mi doctorado he tomado muchas veces el rol de “consejero” para ayudar a estudiantes de grado o máster.
Hace unos años, fui consejero del equipo de iGEM de la UPV. Este era un equipo formado por estudiantes de diferentes carreras (biotecnología, biomedicina, informática, electrónica, bellas artes, etc.) para participar en una competición a nivel mundial sobre biología sintética (iGEM).
El equipo tenía problemas para coordinar el trabajo entre los estudiantes de modelado matemático y los estudiantes de informática:
Los estudiantes de modelado tenían que desarrollar un programa que hiciese simulaciones para predecir el resultado de los experimentos.
Los estudiantes de informática tenían que desarrollar una web donde el usuario pudiese ejecutar estas simulaciones y ver el resultado gráficamente.
El problema estaba servido.
Es difícil conseguir una comunicación efectiva entre personas de ramas distintas del conocimiento. Y, mucho más, cuando se trata de estudiantes que aún no tienen claro:
- qué es lo que van a hacer y
- qué es lo que a necesitar.
Por suerte —o por desgracia— de los estudiantes, ellos podían confiar en mí para que mediara en sus conversaciones y les ayudase a planificar las tareas que tenían que hacer.
Mi plan consistía en tres pasos:
Les pedí a los estudiantes de modelado que programasen las simulaciones usando MATLAB. ¿Por qué les recomendé MATLAB? Porque sabía que era un lenguaje de programación que les «facilitaría la vida».
Una vez que hayan validado que sus modelos funcionen, les enseñaría cómo ejecutar las simulaciones desde la línea de comandos sin utilizar la interfaz gráfica de MATLAB. De esta forma, los informáticos podrían incluir fácilmente el resultado de las simulaciones en la web.
Por último, los estudiantes de informática utilizarían el programa de MALTAB de línea de comandos para ejecutar las simulaciones en el servidor. En este caso el servidor se trataba de una Raspberry Pi.
¿El problema?
MATLAB no se podía ejecutar en una Raspberry Pi. Por tanto, las simulaciones no se podían ejecutar desde la web.
Un fracaso.
«¡Pero qué tonto soy!» es lo que podrías haber escuchado dentro de mi cabeza.
Durante todo este tiempo, habíamos sido rehenes de MATLAB sin tan siquiera saberlo.
La situación era complicada.
Por suerte, uno de los estudiantes de modelado —que era bastante habilidoso programando— rehizo en Python todo el código que habían desarrollado en MATLAB. La ventaja de Python es que se puede ejecutar sin problemas en una Raspberry Pi.
Fin de la anécdota.
Dependencia del proveedor
La dependencia del proveedor ocurre cuando es imposible (o es muy costoso) que un usuario reemplace un servicio o una herramienta de un proveedor por otro proveedor.
En el caso de mi anécdota, teníamos una dependencia a MATLAB y cambiar de proveedor a Python tuvo un coste muy grande (esto lo puede confirmar el estudiante que se puso todo el código en el hombro y lo sacó adelante).
Dilema depender o no depender
Por un lado, utilizar servicios y herramientas de terceros amplifican nuestra capacidad de generar valor con nuestro trabajo.
Por ejemplo: las librerías de MATLAB permiten que los estudiantes puedan hacer las simulaciones que necesitábamos en tan solo unos meses de trabajo. Si no utilizásemos las librerías de MATLAB o Python, no sé cuánto hubiesen tardado los estudiantes (¿quizás años?). Tendrían que haber empezado desde cero, programando sus propios simuladores en C++…
Sin embargo, depender de un servicio o una herramienta para hacer nuestro trabajo nos deja en una posición de vulnerabilidad.
Esto fue justo lo que nos pasó. MATLAB no permite ejecutar sus programas en Raspberry Pi. Y si no podíamos usar MATLAB, el trabajo que habían hecho los estudiantes no tenía valor. Éramos rehenes de MATLAB.
Tenemos entonces un dilema: depender de algo nos vuelve frágiles y ser independientes nos quita potencial.
Cómo usar herramientas sin caer en la dependencia
Muchas veces no somos conscientes de cuánto dependemos de un programa.
Os dejo la siguiente lista de preguntas que os puede ayudar para determinar la dependencia que tengas a un programa:
¿Puedo ser propietario de mis archivos?
Si el programa no te deja hacer copias de seguridad de tus archivos, tienes una dependencia a ese programa. En este caso, pierdes la opción de “coger tus archivos e irte a otro sitio”. Esto es más común en programas online.
¿Utiliza tipos de archivos que se puedan abrir en otros programas?
Por ejemplo: si usas un programa para editar textos y los guardas como archivos .txt o .md, te aseguras poder utilizar otros programas. En cambio si se trata de archivos que solo puedes abrir con ese programa, dependes entonces de ese programa.
¿Puedo replicar el flujo de trabajo de la herramienta a mano?
Muchos programas nos permiten hacer cosas increíbles (por eso los usamos en un primer lugar). La pregunta que te tienes que hacer es: si este programa que usas en concreto desapareciese, ¿podrías replicar la funcionalidad a mano? Quizás replicar esa funcionalidad puede ser muy tedioso o lento, pero que exista esa opción te asegura no depender de esa herramienta completamente.
¿La funcionalidad que utilizo del programa está disponible en otros programas?
Hay funcionalidades de programas que quizás no podemos replicar a mano. Por ejemplo: visualizar un documento PDF. Pero es una funcionalidad que está disponible en una gran multitud de herramientas. Por lo que tu capacidad para visualizar un archivo PDF no depende de una única herramienta (depende en todo caso de todo un mercado de herramientas).
Si tu respuesta es “sí” a todas estas preguntas, lo más probable es que no tengas una dependencia a un programa en concreto.
Si tu respuesta es “no” a alguna de estas preguntas, acabas de encontrar una dependencia a un programa.
Conclusión: ¿depender o no depender?
La dependencia del proveedor no se limita solo a programas, también se aplica todos esos servicios y herramientas que utilizamos en nuestra vida: luz, agua, internet, combustibles, supermercados, seguridad, medicinas, etc.
En el mundo actual, todo depende de todo de forma directa o indirecta.
Y, ¡menos mal que es así! Porque es la forma de amplificar nuestra capacidad de trabajo. No me gustaría tener que empezar a pensar cómo hacer un fuego desde cero o cómo puedo cazar animales para alimentarme.
¿Depender o no depender?
En mi caso personal, prefiero no depender de ningún programa, servicio o herramienta en concreto. Pero, siendo prácticos, depender de algo acaba siendo inevitable (sobre todo, si quiero ser medianamente productivo).
Por lo que tiendo a conformarme con ser consciente sobre:
- qué cosas dependo y
- qué pasaría una vez que esas cosas fallen.
De esta forma, el día en el que me fallen, no me quedaré pensando…
…¡pero qué tonto soy! :^)
Y tú, ¿tienes dependencia a algún proveedor?
Entradas mencionadas o relacionadas:
- La lección más dura de mi doctorado
- Los consejos son una dirección
- Crecer es ser capaz de abordar problemas más complejos
Entradas que referencian a esta entrada: