Programación, diseño web y la ceguera

El otro día hablando con alguien me dí cuenta de que, para el que no conoce el tema de la programación, se hace complejo entender qué es lo que hace un programador. Y no voy a entrar en el tema de distintas clases de programadores, porque sería irse por la tangente.

En esencia, el trabajo de un programador es producir instrucciones que un ordenador entienda para realizar una acción, crear un programa determinado, ya sea un juego, una página web o un programa que consulta información en una base de datos y la muestra al cliente en un formato que pueda entender fácilmente. La forma en que programamos, pues, depende de cómo enfoquemos una tarea o las condiciones de cada proyecto o empresa.

En esta ocasión no voy a entrar mucho en el tema de la discapacidad, aunque sí que mencionaré en algún punto el tema de la ceguera (soy ciego total), y programo a ciegas. Sin embargo, creo que los ciegos podemos producir un programa (en adelante, código), igual que los demás.

El tema de las matemáticas y la programación: ¿Mito o realidad?

Ay las matemáticas, qué bonitas que son y qué necesarias que son para un programador… O no. Siempre que hablo de programación, hay alguien que me dice que bueno, tengo que saber mucho de mates, que si no, no se puede programar.

Oh, sorpresa. Eso es un mito.

Las matemáticas y la programación realmente tienen poco que ver. Pongamos algo en perspectiva:

Pongamos que estoy haciendo un programa para un cliente cuya función es conectarse a un servidor y realizar una serie de acciones como habilitar la entrada de una serie de usuarios con un correo electrónico, contraseña y a partir de ahí, dejarlos que descarguen una serie de archivos. ¿Necesito matemáticas? Para nada. Quizás hace 30 años, cuando la única manera de programar era con un lenguaje de programación de muy bajo nivel (qué digo, quizás hace 50 o 60 años).Con bajo nivel me refiero a que casi casi había que escribir en lenguaje máquina para que el ordenador te entendiera. En esos tiempos quizá eran más necesarias las matemáticas porque el lenguaje binario era muy complicado.

Pero para el caso que nos ocupa, no utilizaríamos para nada las matemáticas. Es más, en el programa del que hablábamos no utilizaríamos ni una fórmula matemática.

Ahora bien, digamos que estamos haciendo un juego de coches y hay que hacer un sistema de rotación basado en ángulos, velocidad de giro, aceleración, gravedad, fricción… Para eso sí que necesitamos matemáticas, física y demás. Empecé a hacer un juego de coches con esas características y, la verdad, es ponerse y acostumbrarse.

Programación vs. Diseño

Programar una web no es diseñar. Un ciego puede programar una web, pero no te haré el diseño gráfico. Eso no significa que la web que haga un ciego será fea, ni mucho menos.

Es verdad que mi web principal tiene un diseño completamente plano, pero eso es por vagancia pura y porque la mayoría de los que entran son ciegos y por eso pasé de ponerle css o imágenes. Pero hay formas de que un ciego haga una web bonita:

Una es a través de un gestor de contenidos (este blog está hecho en WordPress y tampoco es tan feo, ¿no?).

Otro método es hacer una web a mano, con Bootstrap por ejemplo, y ponerle un poco de css al menos, para que el diseño no sea tan uniforme.

¿Y si lo has hecho mal, cómo te das cuenta?

Alguien me preguntó que, siendo ciego, cómo me daba cuenta de si cometía un error a la hora de introducir código.

El hecho es que el ordenador te proporciona numerosas herramientas de debugging (deporación de errores). Digamos que cometes un error en una línea. Es verdad que te queda marcado en rojo y que visualmente se ve fácil, aunque no siempre es el caso. Muchas veces el error está en otro sitio e incluso visualmente es difícil saber dónde nos hemos equivocado. Pero la cosa es que aunque no puedas ver las marcas en rojo, hay herramientas que nos dicen qué es lo que el lenguaje de programación no sabe interrpretar y que nos hemos equivocado. No voy a entrar en detalle porque no viene al caso, pero es totalmente posible programar sin ver.

La interfaz de usuario: Si no ves…

Buena pregunta. Hasta hace relativamente poco, era bastante difícil diseñar interfaces sin ver. La interfaz es lo que vemos cuando interactuamos con un programa: En el móvil, tocamos en un mensaje de whatsapp para entrar en él y aparece otra ventana con el chat por encima. En un ordenador, tenemos botones y menús y accedemos a ellos con el ratón o el teclado. Eso es la interfaz.

Al no ver, no sabemos, en teoría, si posicionamos bien un botón en la pantalla, si luego una persona que vea lo verá bien. Esto es un tema que se ha debatido mucho siempre, pero cada vez las cosas se nos ponen más fáciles.

Uno de mis proyectos más recientes es un puzzle para dispositivos IOS IPhone, IPad, etc. Para ello he utilizado SwiftUI, que permite diseñar la interfaz a través de código. Pero podría haberlo diseñado perfectamente con otra librería como Flutter, que funciona también con Android. El tema está en que es mucho más sencillo diseñar una interfaz para móviles que una de escritorio y la razón es tan simple que cuando os deis cuenta diréis… Ah, claro!!!!

Una pantalla táctil y un programa lector que lee esa pantalla significa que un ciego puede tocar los botones y elementos que ha programado. Esto significa que, habiendo “tocado” otras aplicaciones, nos damos cuenta enseguida de si el diseño es más o menos adecuado. Vale que no te crearé un icono para cada elemento de la app, pero cuando alguien me pase los iconos hechos, los puedo poner. O mejor aún… Utilizaré un Emoji para sustituir al icono. ¿Os acordáis del puzzle para IPhone que os dije hace un momento? En las casillas vacías (que no tienen ficha) utilizo el Emoji de un círculo blanco vacío ⚪️. Hasta ahora, nadie se ha dado cuenta…

Conclusión

Sé que al principio dije que no hablaría mucho de la ceguera y que me centraría más en programación. En vez de ser todo un profesional y quitar esa frase, lo voy a dejar así. Pero no por vagancia. Si no para que os deis cuenta de que la ceguera influye a la hora de programar, pero positivamente: No se te cansa la vista, el teclado es mucho más rápido que el ratón ¿A que nunca habrías imaginado que con un atajo de teclado puedes moverte por el ordenador sin apuntar con el ratón, lo que conlleva perder tiempo valioso?, y además, hay un robotito que lee todo y al que tampoco se le cansa la vista porque es un programa. Algunos le llaman extraterrestre, otros robot… Pero se llama lector de pantalla y tú también lo tienes. Está en tu móvil, está en tu PC, en tu Mac, y ni siquiera lo sabías. Me apuesto lo que quieras.