Grado de Multimedia Universitat Oberta de Catalunya

Complejidad

César Córcoles

En febrero del 2013, en The Verge se publicaba una pieza, Photoshop is a city for everyone: how Adobe endlessly rebuilds its classic app, que resulta lectura imprescindible para todos aquellos que en algún momento nos hemos enfrentado con piezas de software que han tenido un recorrido y presentan un grado de complejidad tan enorme como Photoshop y sus más de veinticinco años de historia. Y quien habla de Photoshop habla de Flash, o de Final Cut, o de Microsoft Office, pero también de cualquier sistema operativo con un mínimo de historia o, incluso, cualquier sitio web complejo, como el de cualquier gran tienda en línea.

La característica común que une a todos esos sistemas es que absolutamente nadie que los usa habitualmente está completamente satisfecho con ellos: todo usuario experimentado ha topado con algún aspecto de su sistema operativo que va radicalmente en contra de su intuición, sin importar que se trate de Windows, el sistema que a todos nos encanta odiar, o Mac OS X o cualquier versión de Linux: si no te has encontrado con ese detalle que te hace hervir la sangre, es que no lo has usado lo suficiente. Y lo mismo pasa con cualquier otro de los ejemplos que hemos citado en el párrafo anterior. Si no es el tratamiento de tipografías de Photoshop, es el funcionamiento de la inserción de imágenes en Word, el editor de código de Flash, el consumo de memoria de Firefox…

Lo grave es que, si investigamos a fondo cualquiera de esos defectos que nos resultan obvios y casi literalmente dolorosos, en la inmensa mayoría de casos —si es que no en todos— descubriremos, en primer lugar, que sí, que el diseñador, desarrollador, product manager o responsable de turno es consciente del problema desde hace tiempo (probablemente desde antes que nosotros). Y si no se ha resuelto es, casi siempre, por uno de dos motivos. El primero es que ese bloque de código, aparentemente pequeño e inofensivo, es una pieza esencial de muchos otros bloques de código de los que dependen un buen montón de funcionalidades esenciales del programa. Esto suele venir agravado, en más ocasiones de las que debería, porque con los años el código se ha vuelto tan complejo y la documentación no está a la altura que la inversión en personas-hora que requeriría su corrección sería tal que de ninguna forma compensa los problemas que causa actualmente. El segundo es que ese cuadro de diálogo de selección de tipografía que tanto odiamos es el mismo cuadro de diálogo que centenares, miles o, si hablamos de algo tan grande como Photoshop, probablemente decenas y decenas de miles de otros usuarios consideran perfecto e intocable…

Sobre el primer aspecto, una anécdota, probablemente apócrifa, de un empleado de Microsoft, unos meses antes del lanzamiento de una nueva versión de Windows (95, si no me falla la memoria), dirigiéndose a una gran tienda informática para comprar todas las aplicaciones, probarlas una a una contra el sistema operativo aún en pruebas. El resultado (cuenta la leyenda, de nuevo) es que en el código de Windows siempre ha habido decenas de miles de líneas de código dedicadas a hacer que viejas aplicaciones, programadas para explotar bugs de versiones anteriores del sistema, sigan funcionando. Con el consiguiente efecto negativo sobre el rendimiento y la mantenibilidad globales del sistema.

(Por cierto, que un artículo muy recomendable sobre el tema es Martian Headsets, de Joel Spolsky.)

Sobre el segundo aspecto, el de la existencia de una base de usuarios que se ha acostumbrado al funcionamiento de la aplicación que sea, basta recordar el clamor popular cuando Microsoft lanzó Office 2007 y su interfaz ribbon. A pesar de ser el resultado de una exhaustiva investigación en el campo de la interacción persona ordenador, millones de usuarios se rebelaron contra el cambio y muy probablemente dejaron de comprar una actualización, con la consiguiente y millonaria pérdida de ingresos por parte de la empresa de Redmond.

¿Son estos problemas solventables? Hasta cierto punto. Parece que hay empresas que tienen el pulso más firme a la hora de dar pasos adelante. Apple, con sus actualizaciones del sistema operativo que, con una cierta frecuencia, resultan incompatibles con versiones relativamente recientes de softwares populares, o con sus cambios de arquitectura (de la primera Motorola 68000 a PowerPC y finalmente a Intel) parece haber salido airosa casi siempre (la horma de su zapato la encontraron con el caso Final Cut, pero ese es un caso relativamente menor). Por lo que respecta a los cambios en la interfaz, un buen ejemplo es el de Facebook, que afronta con determinación la enorme crisis de relaciones públicas que ha supuesto cada cambio a su ‘muro’ y sólo evalúan si el cambio debe retirarse o no unos días después, cuando ha retrocedido la inevitable ola de quejas ante cualquier cambio más o menos radical.

Para los que dentro de un tiempo seréis graduados y graduadas en Multimedia, el desarrollo de aplicaciones complejas no es, seguramente, el campo que más os afecta. Pero sin duda os encontraréis, tanto en el rol de usuarios como en el de creadores o productores, batallando con sistemas que presentan factores como estos. Y es muy importante anticipar la inevitabilidad de estos problemas para, en la medida de lo posible, minimizar su impacto futuro sobre vuestra actividad.

Querría cerrar con un par de anécdotas. En primer lugar, quizás, la mejor ilustración del problema que conozco: una tira cómica publicada en xkcd.com, casualmente apenas unos días antes que el artículo con que abríamos esta pieza.

Cómic. Sólo contiene el siguiente texto, en inglés: Changes in version 10.17: The CPU no longer overheats when you hold down spacebar. Comments. Longtimeuser4 writes: This update broke my workflow! My control key es hard to reach, so I hold spacebar instead, and I configured emacs to interpret a rapid temperature rise as Control. Admin write: That's horrifying. Longtime user4 writes: Look, my setup works for me. Just add an option to reenable spacebar heating.

Y, en segundo y último lugar, un enlace (http://computerhistory.org/atchm/adobe-photoshop-source-code/) desde el que podréis acceder al código fuente original , en Pascal, para Mac sobre arquitectura Motorola 68000 de la versión 1.0.1 de Photoshop, de 1990, que «apenas» contiene 128,000 líneas de código y que cabe, comprimido, en un solo diskette de la época (algo absolutamente impensable apenas unas versiones más tarde).