¿Excel como lenguage de programación?

Hace un tiempo vi la presentación «Functional Programming in Excel» (Programación Funcional en Excel) de Felienne Hermans en GOTO Amsterdan 2016. Ella es Profesor Asistente en Delft University of Technology en Países Bajos. En mi opinión, el trabajo que ella ha desarollado analizando usuarios y usos de las hojas de cálculo es uno de los temas más interesantes sobre Excel que he visto en los últimos años.

Dos cosas llamaron mi atención en su presentación:

  • Era la primera vez que alguien comparaba Excel con un lenguage de programación, con ejemplos muy concretos.
  • En la sección de comentarios del video, algunos usuarios descartaban la idea, algunos incluso de forma muy despectiva.

Sobre lo primero, ya desde hace tiempo he puesto en práctica una idea: Para utilizar Excel de forma eficiente, debiamos aprender a pensar como un programador, y esto va más allá de aprender macros o VBA. A lo que me refiero con esto, es que los programadores deben ser expertos en llevar problemas complejos a su expresión o partes más sencillas. Una vez deconstruido el problema, ellos desarrollan los algoritmos necesarios para cada parte del problema y finalmente los implementan en algún lenguage de programación.

Si vemos esto con un ejemplo concreto en el uso de Excel, muchas veces me han preguntado algo similar a esto: Quiero añadir información actualizada a mi archivo de forma automatizada todos los cierres de mes ¿tienes una macro para hacer eso? Y mi respuesta siempre es la misma: No, seguido de una larga explicación.

¿Por qué respondo de esta forma? Por lo general son dos razones.

Primero, lo que el usuario pide es posible, sin ninguna duda. Sin embargo, involucra completar varios pasos (o partes del problema) antes de llegar a un resultado satisfactorio. El problema ocurre cuando el usuario no logra identificar esos pasos previos, ya que sólo se concentra en el resultado final. Aquí es importante que veamos a Excel como un lenguaje de programación. Como ya dije, no sólo con VBA, la misma idea puede aplicarse a cualquier documento que involucre constantes, variables y funciones, así no tenga nada de VBA. Lo importante es entender e identificar los pasos o partes del problema que debemos solucionar. Si queremos ayudar a un usuario, debemos hacer énfasis en esto.

Algo que deja en evidencia esa situación es cuando un usuario copia y pega algún código que encuentra en internet y luego no entiende porqué no le funciona.

Esto me lleva al segundo punto: Cada caso es diferente. Aunque se han desarollado muchas macros que realizan tareas rutinarias como importar un archivo ó consolidar información de varias fuentes, la verdad es que siempre requieren algún tipo de ajuste para adaptarse perfectamente a la situación que tengamos a la mano. Esto no es inusual y todo usuario avanzado de Excel está acostumbrado a hacerlo (como todo buen programador), pero las personas que apenas están comenzando suelen pasar este punto por alto.

He visto infinidad de casos donde los usuarios quieren copiar una macro que encontraron en internet, pegarla en su editor de VBA, ejecutar y tener ya un resultado perfecto. Es importante que se entienda, no funciona así. Para adaptar una macro debemos primero analizarla, entenderla y modificarla para que pueda sernos útil, por lo que si no conocemos VBA, al menos de forma básica, realizar esta tarea usualmente termina en mayor frustración y pérdida de tiempo.

En los pocos casos que funciona, suelen hacerlo por corto tiempo, ya que cualquier cambio en el proceso (ubicación de un archivo, modificación de un reporte…) suele terminar en un desastre e incluso pérdida de información.

Aquí es poco lo que se puede hacer, ya que dar una clase de VBA mientras se programa suele ser algo bastante laborioso. Es importante educar a los usuarios y proveer recursos para que puedan aprender VBA, pero no mientras desarrollamos una solución.

En relación a los comentarios sobre la presentación de Felienne que descartaban la idea de ver Excel como un lenguaje de programación, vale decir que parecían venir de programadores, pues en ellos se mencionaban ‘lo que faltaba’ en Excel para ser un lenguaje de programación real. La verdad es que durante la presentación se aborda en parte ese rechazo y se mencionan algunas de sus causes, pero no con ánimo de imponer una idea, sino de entender el alcance de la misma.

Felienne no argumenta que Excel va a reemplazar a C, Python o cualquier otro lenguage. La idea principal es que hay muchos elementos en Excel que lo acercan a un lenguaje de programación y por lo tanto, enfocar su uso de esta forma, puede traer muchos beneficios.

Para los que hemos estado desde hace tiempo en esto de las hojas de cálculo y VBA, seguro en algún momento nos hemos topado con algún programador experto que critica o descarta nuestro código. Este rechazo viene en parte por la reputación que se ganó VBA en sus inicios. Al ser tan accesible y sencillo de aprender, introdujo muchos usuarios y ‘malas prácticas’ de acuerdo a lo que se había hecho tradicionalmente en otros lenguajes. Para los programadores serios, era un lenguaje para novatos. Estos encuentros entre usuarios de Excel y programadores, simpre los he visto como una oportunidad de aprender y adoptar las prácticas de los expertos para mejorar nuestro trabajo.

En la medida que los usuarios de Excel adoptamos esas ‘mejores prácticas’ y nos acercamos a la forma de pensar de los programadores, vemos que nuestro código mejora, es estéticamente más limpio y funcionalmente más eficiente.

Finalmente, quisiera dejar claro un último punto relacionado a este tema. Lo que he dicho aquí no siginifica que debamos convertirnos en programadores para utilizar Excel. Aunque realmente no es algo imposible, no todos tenemos tiempo para realizar un cambio de profesión. Lo que si podemos hacer es aprender de los expertos e implementar las mejores prácticas que están documentadas en muchos libros, videos y cursos sobre Excel y VBA.

Para despedirme les recomiendo ver la presentación de Felienne (sólo está en inglés) y me dejen sus comentarios al respecto:

Si quieren conocer un poco más acerca del trabajo de Felienne, en su página web pueden obtener mucha información:

http://www.felienne.com

Hasta un próximo artículo.

 

 

 

 

 

Tu comentario es importante para nosotros

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.