«People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones».
(Donald Knuth)
Existen varias definiciones sobre lo que es el Arte, pero en todos los casos, la definición utiliza elementos puramente subjetivos. En lo personal, pienso que no se limita en expresiones y no requiere patrones o cánones obligatorios para diversificarse.
Pero, ¿podríamos decir que practicar una ciencia es arte, aunque esto sea lea contradictorio? ¿Es posible que seguir un método formal para llegar a una hipótesis o resultado, sea producto de una manifestación artística y no solamente de una «cuadratura mental» pura y dura?
La forma en la cual se solucionan problemas a través de las Ciencias Computacionales podría ser casi como escribir un poema, pero con un giro práctico operativo, ya que utiliza un cierto lenguaje para escribirse, no tiene una forma preconcebida de dar solución al asunto, y muchas veces presenta un desafío intelectual.
Aquí no basta sólo con saber el problema y dar una solución, ya que se pierde la esencia de todo este arte, lo cual gira en torno a una idea original.
Tal vez sería irresponsable de mi parte decir que la computación se ha convertido actualmente en un verdadero arte, y sobre todo en un medio para crearlo, pero así lo creo. Veámoslo por todas partes: el software se está comiendo al mundo literalmente. Pero solo es el comienzo. Dentro de poco, quizá un pintor «posmoderno» utilice un pincel de realidad aumentada, con el cual dibuje una Mona Lisa 2.0, sobre un lienzo que persiste de manera ubicua, en una galería de arte virtual, que deberemos admirar accediendo a una especie de «Matrix», donde tendremos una segunda identidad bien definida que nos permita viajar a esa segunda realidad. The Matrix is everywhere…
Bienvenidos al mundo real
Todos los aspectos de nuestra vida cotidiana están rodeados de código computacional (y por las Ciencias de la Computación en general). Sin embargo, el hecho de aceptarlo, no significa que toda la gente deba ser una experta en la materia, sino simplemente entender conceptos de propósito común y comprender el impacto real en sus vidas cotidianas.
Materias como la Física, las Matemáticas o la Historia nos pueden mostrar cómo acercarnos a las ciencias y muchas de ellas conforman las herramientas necesarias para justamente entender adecuadamente el arte de la computación. Por ejemplo:
La Física te puede ayudar a entender que la idea de cómputo actualmente se encuentra muy relacionado a los estados de un electrón y traerá consigo un nuevo paradigma revolucionario (cómputo cuántico).
Las Matemáticas traen consigo toda la lógica preconcebida que existe para desarrollar notaciones y entender los métodos formales de desarrollo de software.
Y, por último, la Historia nos explica cómo la Computación se ha desarrollado a través del tiempo, su evolución, su impacto en las sociedades y hasta su probable futuro.
Ahora bien, normalmente cuando hablo acerca de las Ciencias Computacionales invariablemente viene a colación el concepto de programar, que yo visualizo como un puente uniendo al creador con su creación. Esta actividad se asemeja mucho a la música, no existe algún estándar para crear o hacer música; si bien está el pentagrama para escribir las notas y el tiempo en que esas notas se tocarán, no es una regla al momento de crear una pieza, sino más bien una herramienta para poder plasmarla. En consecuencia, puedes tomar tu instrumento y sólo tocarlo sin siquiera escribir una nota y será música.
La programación pasa por un mismo proceso «artístico» en donde cada «pincelazo» que se da tiene un «sentido» y cada «color» que se usa tiene un «propósito», brindándonos satisfacción emocional e intelectual, porque es un gran logro indudablemente derrotar a la complejidad y dar vida a nuestra creación. Nuestra paleta son algoritmos que pintamos en la memoria de un sistema y sus combinaciones/permutaciones nos llevan a crear en varias ocasiones algo sublime o hasta evocativo. Incluso cuando leemos el arte de los demás (el código de otros), podemos reconocer que muchos programas son genuinas piezas de arte: algunos son elegantes, otros son hermosos, algunos otros impactantes, aunque también los hay exquisitos.
Programar requiere mucha creatividad, además de los conceptos abstractos, herramientas y técnicas que podamos sintetizar; toda esa teoría representa sólo una pequeña fracción de lo que se necesita para hacer a un buen desarrollador.
Y aunque algunos acepten la programación como una forma de arte, no todos los artistas son iguales. Como las personas poseen diversas naturalezas, nuestras motivaciones, metas y desafíos siempre serán distintos, desde un primer momento. Pero al igual que los pintores o los músicos, hay muchos programadores que sólo replican cosas, nunca crean algo original.
Los artistas genuinos son diferentes. Se les ocurren cosas nuevas, re-definen los estándares del futuro, cambian el entorno actual para mejorarlo. No tienen miedo de las críticas. Porque quieren crear, porque quieren expresarse a través del código. Porque son simplemente libres de hacerlo, incluso si no se trata de algo grande que vaya a cambiar el mundo. Y porque hasta en este lugar existen virtuosos incomprendidos:
«No entiendo tu código. ¿Para qué son esas líneas justo después de tus lambda expressions dentro de tu Súper Clase?»
«¿Qué no ves? Esos objetos que van a ser creados mediante polimorfismo expresan mis sentimientos internos».
Los programadores son artistas.