Sesgos Cognitivos en el Desarrollo y Pruebas de Software (parte 1)

Un sesgo cognitivo es un fenómeno natural que se presenta e interviene en la forma en que interpretamos la realidad en nuestro día a día, comúnmente se le atribuyen a estas ideaciones del contexto –y de nosotros mismos– características negativas o al menos erróneas, es por ello, que no es difícil encontrar asociadas al significado de sesgo cognitivo palabras como “error”o “fallo , el cual deriva a su vez, en una conducta equívoca del individuo. En este breve artículo, analizaremos los sesgos, separándolos de la idea de que son simplemente errores interpretativos, y me enfocaré en sus características fenomenológicas en relación con las pruebas de software. Los consideraremos, por consiguiente, como un aspecto humano cuyos efectos pueden abordarse a través de la experiencia y comprensión, más que como un error.

El campo de las ciencias sociales y de la mente ha identificado un creciente número de sesgos cognitivos, un fenómeno en constante expansión año tras año. Algunos de estos sesgos se manifiestan de manera particular en el ámbito del desarrollo y la calidad del software, lo que los convierte en foco de interés relevante para nuestro caso. A continuación, destacamos algunos de los más significativos:

Existe un número bastante interesante (que crece año a año) de sesgos cognitivos estudiados por las ciencias sociales y las ciencias de la mente. Algunos de estos sesgos se manifiestan de manera particular en el ámbito del desarrollo y la calidad del software; entre algunos de los más interesantes para nuestro caso podemos encontrar los siguientes:

Generalización: Como lo indica su nombre este sesgo se suele presentar cuando basándonos en un incidente aislado generalizamos sus resultados o contenido como una realidad mucho más amplia… “no falló la prueba end to end, no fallará ninguna otra”. En otras palabras, (y para nuestro ejemplo en particular) se refiere a la tendencia a hacer suposiciones generales sobre un software basándose en información limitada o en casos particulares. Esto puede llevar a conclusiones incorrectas o inexactas sobre el comportamiento o la funcionalidad del software en situaciones más amplias. 

Post hoc, ergo propter hoc (después de esto, luego a consecuencia de esto): Posiblemente uno de los más comunes de encontrar en los procesos de pruebas y debugging; trata sobre suponer como lógica común (y verdad) que si un hecho ocurre luego de otro, el segundo siempre es consecuencia del primero. En términos de pruebas, esto implica principalmente buscar la solución a un problema de manera inicial en la supuesta causa, es decir en la acción que precede al error. Permíteme simplificarlo con un ejemplo sencillo;

“algunas veces cuando envío este formulario con cierto mail, ocurre un error no controlado”

Lo básico sería reportar un bug para que se revise el formulario y el método de envío. El desarrollador realiza ajustes, tal vez mejoras en el formato de entrada en los campos, etc. Pero el error continúa. En una revisión más exhaustiva (por tanto más costosa) se han percatado que el error se originaba en el campo mail de la base de datos, debido a un mal diseño de la misma este campo solo permitía 10 caracteres, por el contrario, en el formulario del front este campo permitía 20 caracteres. Si bien, se podría establecer una lógica lineal causa-efecto, nótese como el error podría presentarse también en otros usos de la BD, por ejemplo si en otra parte del flujo se requiere actualizar el mail. Por tanto, el problema existe en un ámbito independiente del formulario reportado inicialmente; se podría limitar el campo del mail a 10 caracteres, pero aquello solo solucionaría ese problema particular y no la raíz del mismo.

No hay texto alternativo para esta imagen

Imagen referencial. (Daniel Paz)

Sesgo de Confirmación: Esta es una tendencia con la cual buscamos confirmar nuestras propias creencias, ideas, información previa o hipótesis sobre un tema equis dejando de lado información que va en contra de lo creemos como cierto. En lo que respecta al aspecto netamente psicológico de esta tendencia, podríamos encontrar factores como; un intento de disminuir los niveles de ansiedad que provoca confrontar información divergente con nuestras propias ideas, también puede tratarse de un patrón presente en personalidades con rasgos ególatras. Pero no se mal entienda; el sesgo de confirmación está presente en todos nosotros, así como las características y sesgos antes mencionados se encuentran en uno u otro grado en cada ser humano. El sesgo de confirmación puede ser el más frecuente de identificar cuando hablamos del cómo comprobamos el funcionamiento, las características y/o calidad de un software, pues implica una reflexión crítica sobre algo que nosotros mismo hemos realizado, y con esto quiero decir, que afecta literalmente a toda creación propia, ya sea física o mental. 

 

En el próximo post revisaremos sus implicancias en el desarrollo y pruebas de software.