En un pequeño Gist de GitHub la artista Melanie Hoff hace un esfuerzo deconstructivo frente al dualismo de usuario y programador:
"Cada vez que creas una carpeta o renombras un archivo en tu ordenador, las acciones que realizas moviendo el ratón y pulsando botones, se traducen en comandos basados en texto o scripts que finalmente se traducen en binarios."
— Melanie Hoff
Cualquier acción ―en cuanto interacción con la máquina― supone lo que Kirschebaum resumió en una frase: "Every contact leaves a Trace". Así, el usuario es un programador, interviene en la interfaz y deja su huella en la máquina, por lo que siempre estamos programando. Sin embargo, también sucede en el sentido contrario, el programador es también un usuario. Cuando un programador escribe en javascript, está utilizando funciones y variables pre-escritas y empaquetadas para llevar a cabo las acciones que quiere que haga su código. De este modo, al apropiarse de un diseño previo para crear el propio, el programador se convierte a su vez en usuario de aquel ejercicio y de su producto. ¿Qué es entonces lo que distingue al programador del usuario? ¿Qué es lo que mantiene a ambas agencias como distintas?
Si partimos de un enfoque forense que atiende exclusivamente a los aspectos técnicos de la comunicación, desestimando lo semántico, tal vez podríamos pensar de ese modo, en el que todo se reduce en lógica binaria. Por lo que la distinción usuario/programador al no partir de la máquina termina convirtiéndose sólo en una cuestión hermenéutica:
"La distinción existe y se mantiene por una industria tecnológica que quiere a la población computacionalmente pasiva."
— Melanie Hoff
Al final, There is Not Software. No obstante, si rescatamos lo semántico y atendemos a la computación no sólo desde las cargas de tensión en los transistores, hay algo que rescatar, hay una razón por la que construimos y hacemos carreras universitarias a partir de la distinción entre el usuario y el programador. Como en la metáfora de Ceruzzi, la computación es una cebolla: muchas capas de software que al final se encuentran con un núcleo de hardware. Hemos construido un usuario computacionalmente pasivo, que busca cumplir sus deseos inmediatamente a costa de sus posibilidades de acción. Esta constitución no es sólo mantenida por el interés de las gigantes tecnológicas, sino por su producto técnico: las interfaces. La definición de los lugares correspondientes del usuario y del programador son otorgadas por una negociación, una política entre la máquina y el ensamblaje económico-(geo)político.
Ejemplo de ello está en la inclinación hacia la complejidad en la historia de los sistemas computacionales. Omar Rizwan hace un apunte al respecto en su blog:
"La tendencia es que gran parte de tu ordenador (CPU, red, gráficos) está fabricado con transistores y ha seguido aproximadamente la curva de la Ley de Moore durante los últimos 40 años, pero los discos duros no. ¡Un disco duro es un plato giratorio! Su tiempo de búsqueda no ha mejorado mucho en 40 años; todavía hay que hacer girar el plato para acceder a los datos."
— Omar Rizwan
¿Por qué apuntamos en una línea y no la otra? Esa línea de complejidad y diseño, establece finalmente ―siendo parte de un mayor desarrollo de ensamblajes técnicos― quien es el usuario y quien es el programador. Esa inclinación también está en el software: en el Protected Mode. ¿Por qué la arquitectura de las CPU modernas restringe al usuario el acceso directo a la memoria, ocultando así funcionalidades? ¿Por qué nos hemos alejado de la máquina? ¿Por qué hemos desmaterializado al objeto? Estas preguntas son cruciales, y ya están siendo echas desde todos los frentes. No obstante, por lo mismo queda una pregunta: ¿Qué hacer frente a eso? Hay que articular una respuesta, una política de las interfaces.