Reflexiones sobre la automatización de software
Hoy tuve que automatizar la migración del proveedor de vídeo de inpractise.com de Contentful a Vimeo. El proceso implicaba descargar cada vídeo (alrededor de 500) y volver a subirlo a Vimeo. Luego vincular el vídeo al artículo correspondiente.
Pensamos en contratar a alguien para hacer esta tarea, pero como ingeniero, decidí escribir un pequeño script para hacerla en su lugar. Es una tarea tediosa que sería propensa a errores, y subcontratarla no sería escalable.
Cada vez que escribo este tipo de scripts de automatización, siento como si estuviera enseñando a un robot a hacer algo que yo quiero hacer. Es un buen ejercicio para darse cuenta del poder real de la ingeniería de software.
Sin embargo, hay un cuello de botella: "¿Puedo escribir las reglas para la tarea?". No todos los problemas encajan en esta descripción, pero algunos como migrar a Vimeo sí parecen un problema que podría definir.
Creo que hay otro tipo de problemas en los que puedes saber si el resultado es correcto o no, pero no puedes realmente explicar cómo hacer la tarea. Creo que ese sería uno de los dominios del aprendizaje automático (machine learning) (es decir, reconocimiento de imágenes).
Y estoy seguro de que hay problemas en los que no puedes saber si el resultado es bueno o no, y tampoco puedes explicar cómo hacer la tarea. ¿Qué tecnología nos permitiría abordar estos problemas? ¿Es el aprendizaje por refuerzo? ¿Se necesitan humanos todavía para esos problemas?
Solo una rápida reflexión aleatoria sobre la automatización de software.