Como preámbulo, una aclaración. Si bien en mi título académico no dice «Ingeniero de Software», me permito considerarme uno por mis años de experiencia en esta disciplina. Por lo tanto, enfoco este artículo hablándonos a los que ejercemos esta profesión.
Ahora bien... Reconozcamos algo: el software es un producto. Esto, que a primera vista parece obvio y que queda claro incluso en material de referencia básico de Ingeniería de Software —como el libro «Software Engineering: A Practitioner's Approach» de Roger Pressman, por citar uno—, no resulta tan obvio para muchos si vemos algunas piezas de software que pululan por allí...
En general —si bien, como expresa el dicho, «toda generalización es mala, incluso ésta»—, los desarrolladores de software no suelen ver al software como producto... al menos no desde el principio. Tal vez, con la buena guía de personas experimentadas o con muchos años encima, puede ser que sí. Pero no desde el principio. La academia debería dar este enfoque, pues no todo es perderse en cuestiones estrictamente técnicas —al menos, en términos computacionales.
Para esto suelen ser buenos los Analistas de Sistemas —he sido uno de ellos hace unos cuantos años— o, mejor aún, los Diseñadores Industriales orientados a la Informática —he tenido el gusto de trabajar con algunos de ellos. Los primeros porque, si ejercen bien su profesión, ven al software como una herramienta que apoya al sistema. Los segundos, porque debido a su propia profesión ven al software como producto y los que tenemos experiencia en el asunto no tenemos que andar explicándoles esta obviedad. No digo que los Ingenieros de Software no podamos ser también buenos en esto, pero lo cierto es que vaya uno a saber por qué extraña razón, solemos estar más orientados a pensar en el software como software, ese conjunto de modelos, código y documentación varia, sin olvidar la metodología, dejando muchas veces en un segundo plano lo que más importa...
En ambos casos, Analistas de Sistemas y Diseñadores Industriales orientados a la Informática, suelen hacer estudios con distintos enfoques metodológicos para comprender el entorno en el cual el software operará y, lo que es más importante aún, quién lo va a usar. Sí señores, el famoso... ¡usuario!
Tal vez la característica más clara de quien diseña una pieza de software bien hecha, es que jamás pierde de vista a quien, en definitiva, operará —o sufrirá, depende del caso— el software. ¿Dónde lo operará? ¿Estará haciendo algo mientras vaya a operarlo? ¿Qué? ¿Podrá operarlo en una forma que consideramos tradicional o tendríamos que pensar en alternativas de interacción con el mismo? Y otra serie de preguntas que apuntan en el mismo sentido: lo que podríamos calificar como «diseño enfocado en el usuario».
Los Ingenieros de Software deberíamos tomar algunos buenos lineamientos del dominio de esta gente. Por ejemplo, podríamos dejar de pensar en algo etiquetado como «diseño de interfaz gráfica de usuario» y reemplazarlo por algo que llamaríamos «diseño de interacción». ¿Quién dijo que siempre la mejor solución es implementar una interfaz gráfica de usuario? Puedo mencionar un sinnúmero de ejemplos en los cuales esto no sería eficiente. Nosotros deberíamos detectar estas cuestiones, y no vale decir que «el usuario no me lo dijo».
Tenemos que salir de la caja y borrar el preconcepto de que la forma de interactuar con el software es una combinación de monitor, teclado y mouse. Se puede ir más allá. Se debe ir más allá. Hay muchas otras alternativas y, si no hay ninguna que satisfaga las necesidades de los usuarios, deberíamos ser lo suficientemente creativos como para idearla o colaborar en idearla —después de todo, somos «Ingenieros» y de eso se trata... Nuestra obligación profesional es trabajar para ayudar a los usuarios a que cumplan con su cometido en una mejor forma —eso es calidad—, y no complicarles la vida... Nuestro compromiso con el usuario debe manifestarse en términos de usabilidad.
Para ir terminando, los dejo con una recomendación casi obvia para el caso. Se trata del ya viejo libro «The Inmates are Running the Asylum» —que han traducido al castellano como «Presos de la Tecnología»— de Alan Cooper, excelente tanto para gente de Computación como para el conjunto de tomadores de decisiones de las empresas. Es, para mi gusto, un imprescindible para la biblioteca de todo Ingeniero de Software.