Las diferencias entre ciencia de datos e ingeniería de software

← Back to blog

Estas son las notas que hice para este video, pueden tener errores ortográficos; advertido estás.

Científico de datos vs. ingeniero de software

Primero que nada quiero aclarar que para este video me estoy basando solamente en mi experiencia como desarrollador de software y en mi corta experiencia como “científico de datos”, particularmente en el desarrollo de modelos predictivos y análisis de datos. No clamo tener la verdad absoluta; esto es solo mi opinión.

Cuando el trabajo se termina

La primera gran diferencia que me he encontrado es que mientras que cuando desarrollas software los requisitos están claramente definidos, en la ciencia de datos pareciera que siempre le puedes mejorar tus resultados moviéndole a algún parámetro o consiguiendo más datos. En el desarrollo de software tienes las pruebas, ya sean unitarias, de aceptación, de regresión… en fin, cualquier tipo de pruebas para estar seguro de que tu tarea está completada y que no hay nada más que hacer; en la ciencia de datos (al menos cuando estás desarrollando un modelo predictivo) existe algo similar, y es que usualmente los primeros pasos es establecer un punto de referencia contra el cual compararemos nuestros resultados subsecuentes, además de que aquí es donde el científico de datos debe darse cuenta de cuándo hay que detenerse y dejar de invertir recursos en algún modelo que llegado cierto momento deja de entregar mejores resultados.

Comunicación

La comunicación que tienes como científico de datos es bastante diferente al que se tiene como software developer, y es que como científico de datos es muy probable que en algún momento tengas que explicar algunos de tus resultados a partes no técnicas del negocio, desde gente de ventas, el manager de tu manager, o, dependiendo del tamaño de tu compañía hasta el CEO. Mientras que, como desarrollador de software creo que nunca tienes que explicarles el por qué (o cómo es que tu código funciona) más que a tus compañeros.

Nuevas tecnologías

Tal vez esto sea por que tengo mucha más experiencia desarrollando software, pero a veces siento que los nuevos avances en el desarrollo de software son más accesibles para el desarrollador de software que los nuevos avances en machine learning e inteligencia artificial para el científico de datos promedio. Y es que la ciencia de datos, en particular todo el asunto de modelos predictivos, redes neuronales son campos que están siendo estudiados e investigados activamente; y muchas veces requieren acceso a grandes cantidades de datos o una gran capacidad de procesamiento de datos.

Forma de escribir código

Esto está cambiando, creo yo, pero en mi experiencia la forma en la que los científicos de datos escriben código no suele ser la más… bueno, y es que no me lo tomen a mal, pero en mi experiencia, mientras que el código de un desarrollador de software tiende a ser ordenado, con enfoque en la reúsabilidad, e idealmente optimizado. Por el otro lado tenemos código que está enfocado en experimentación e iteraciones rápidas. Nuevamente, creo yo que esto está cambiando, y en definitiva hay gente que puede hacer las dos cosas.

Conocimiento del dominio

Mientras que inicialmente un ingeniero de software no necesariamente debe conocer el dominio de la empresa en la que trabaja, un cientítifco de datos si debería conocerlo y tomarlo muy en cuenta para el proyecto en el que está trabajando.

Presión para adquirir nuevo conocimiento

Ambas profesiones requieren de actualización constante, pero mientras que un ingeniero debe actualizarse en cuanto a frameworks, lenguajes y arquitecturas, el científico de datos debería estar más presionado por conocer el dominio en el que está trabajando, así como nuevas técnicas y algoritmos.

¿Qué prefiero yo?

Pues podrá sonar muy trillado, pero yo prefiero algo entre los dos mundos. Me agrada la relativa “rapidez” con la que un desarrollador de software puede crear algo, además de la sensación de satisfacción al ver que todos los tests pasan, sin embargo también me gusta las posibilidades de experimentación y las cosas que se pueden crear con los datos.