Desarrollo como arte.
Published: 2020-06-29 23:10:27

Existe en el inconsciente colectivo una fuerte relación entre el desarrollo de software y la matemática, lo digo porque desde antes de empezar a trabajar en la industria IT esa también era mi idea. Luego  de un par de años trabajando en este rubro  y de codearme (joke detected) con otros desarrolladores, comencé a pensar una idea diferente del proceso de desarrollo.

Antes de avanzar me gustaría establecer el contexto: el desarrollo de software del que vengo a charlar es, por lo general, llamado de alto nivel, esto quiere decir que existen distintos niveles (de abstracción) por los que el código tiene que pasar  hasta ser entendido por un computador.

En el camino que he estado transitando he conocido profesionales defensores del vínculo entre la programación y las matemáticas, quienes al solucionar un problema, se nota lo rígido y estructurados que pueden llegar a ser, lo que genera en ocasiones un nivel poco comprensible del código. Son esas personas que priorizan utilizar la menor cantidad de líneas de código posible, con una supuesta mayor eficiencia (digo supuesta ya que hoy día suele ser ínfima la diferencia entre la velocidad de cómputo de distintas soluciones). Muchas veces creemos que esta sobre complejidad e ilegibilidad es propia del proceso de desarrollo y que un código corto es un código prolijo.

Por otro lado, tuve la oportunidad de intercambiar con colegas que piensan más en el desarrollo como un proceso creativo, en el cual,  si bien existen reglas predeterminadas, programar se termina asemejando más a una actividad artística, en la que se priorizan cuestiones como la legibilidad del código, la reutilización, la comprensión y el entendimiento de lo producido. Esto genera una notable diferencia al compartir soluciones, ya que el foco está puesto por una parte en solucionar el problema, y por la otra, en la persona que va a leerlo . Cuando desarrollamos software sabemos que el código que hace funcionar nuestra aplicación es reescrito muchas veces, no solo por errores, sino también por cambios o actualizaciones del mismo.

Entonces, entendiendo estas dos posturas, decidí guiarme por esta creciente idea según la cual el código que produzco se vuelve más una especie de relato, que le indica de una forma particular a mi aplicacion qué debe hacer.

No desestimo ninguna solución, pues por suerte no somos todos iguales, no hay nada escrito en piedra y es una industria en constante evolución; pero, sin duda, considero que la idea de necesitar ser “científico de cohetes” para poder desarrollar software es cuestión del pasado. Lo que pretendo con esto, es subir ese telón que muchas veces aleja a potenciales profesionales a sumarse en esta área porque los invade la idea de tener que ser “matemático”, “brillante” o un “genio”, sin saber que, aún cuando la lógica y algunas bases son necesarias (y aprendibles), una de las habilidades que resultan útiles para programar es la creatividad. 

Claro que, como en cualquier profesión y labor, se requiere de un gran número de horas dedicadas a entender y profundizar en los conocimientos primordiales para  dar el primer paso  en esta carrera, que reitero, son elementos que se pueden cultivar en su transitar.

A ti que quizás lees esto porque tienes algún conocido o quieres emprender en este mundo y no te defines como un “buen matemático”, te comento que si bien no es fácil, tampoco necesitas de muchas habilidades numéricas para hacerlo; necesitas desarrollar la lógica, la capacidad de resolver problemas, tiempo y dedicación para lograr avanzar en esta industria.

Aunque si ese no es tu caso y eres un desarrollador arraigado al mundo de los números y las ciencias exactas con algún recorrido profesional, te ayudará saber que generar más vínculos con tu faceta creativa también te ayuda a crecer en lo profesional.

Y tú, qué compartes conmigo la importancia de esos dotes creativos y artísticos en la programación, sabrás que no es ningún secreto que las matemáticas también te ayudan a desarrollar habilidades resolutivas; para ello existen los code challenges, juegos de lógica y libros que nos pueden ayudar a promover en nosotros mismos esas capacidades numéricas.

No creo que exista una forma única para solucionar los problemas, por eso pienso que es muy importante nutrir y perfeccionar esa “membrana” que conecta nuestras habilidades creativas con nuestras habilidades lógico/matemáticas, con el fin de crear código legible, reutilizable, de alta calidad y con soluciones fluidas y limpias. 

Esta unión entre ciencia y arte, nos ha dejado grandes genios con gigantes aportes a la humanidad. Sin irnos muchos años atrás el famoso Brian May, quien además de haber formado parte de la banda británica Queen también es un destacado astrofísico. El bien conocido Albert Einstein fue un gran violinista. Por último y quizás con un tono redundante Leonardo da Vinci, a quien no sabría si definirlo, como un científico-artista o un artista-científico.