Tinselcity

Tabla de Contenidos

De largo, uno de los mayores problemas que he encontrado a la hora de discutir de temas técnicos con programadores es la incapacidad general para distinguir entre una serie de conceptos más o menos relacionados pero que no deben confundirse.

Lo correcto

Todo gira entorno a la idea del bien y el mal, pero la mayoría de gente prefiere evitar aparentes connotaciones religiosas o filosóficas y entonces acuden a las palabras correcto o incorrecto. Es un error común y ocurre de dos formas diferentes.

Para un grupo, existe un concepto universal de única verdad o de algo que es inequívoca y universalmente correcto y, obviamente, todo lo que no es lo correcto, es incorrecto. El otro grupo cae en el otro extremo: esencialmente no hay nada correcto ni incorrecto. Estos dos grupos, de una forma más bien inconsciente, se identifican el uno al otro en cualquier discusión. Uno empieza argumentando que “eso está mal” -o quizá intentando ser aparentemente más suave y conciliador, que “eso no es correcto”- y el otro responde con que es “perfectamente aceptable”. Y en cuanto esto ocurre, ya es difícil que ninguno de los dos llegue nunca a comprender el problema y la situación.

El problema fundamental es, por supuesto, que ni debemos aceptar posiciones dogmáticas de soluciones “universalmente correctas”, ni podemos argumentar lo adecuado de una solución por ser “aceptable”.

El dogmatismo lleva inequívocamente a problemas de rigidez y fragilidad. Tanto en el código producido como en el propio proceso de trabajo y en las personas que lo hacen. Una posición dogmática se basa no en los conceptos universales, sino en los dogmas, en una expresión concreta y limitada de esos conceptos. Por su naturaleza, tratar de resumir conceptos y factores que generalmente son complejos, abstractos y sutiles en un precepto que sea sencillo y manejable, es extremadamente difícil. En la práctica, todos los dogmas terminan limitados por su intención de ser universales.

Por otro lado, el relativismo termina llevando a que, a la vez que se abandona la idea de que algo sea correcto o incorrecto, perdemos la muchísimo más importante noción de que algo sea mejor o peor que otra cosa. Porque el relativismo extremo termina argumentando siempre que una cierta solución es aceptable o válida pero no se plantea que dadas dos soluciones ambas válidas, una de ella pueda ser mejor y por qué motivos pueda serlo.

Es triste ver este tipo de discusiones. Ambas partes se anclan a sus posiciones. Unos porque solo aceptan la suya como “buena”. Otros porque asumen que si todas son válidas, la suya es tan buena como cualquier otra. La mayoría de discusiones técnicas terminan entonces resolviéndose por medios insatisfactorios para una de las partes, o incluso para las dos. Esto generalmente significa que se recurre a argumentos extrínsecos, como la experiencia o autoridad que tenga uno, la insistencia que tenga otro o la intervención de un tercer partido que, la mayoría de las veces, solo quiere que no llegue la sangre al río.

Soluciones

Llevo ya unos cuantos años tratando de incorporar en mi vida algunas ideas del estoicismo (tiene pocas, así que no es difícil en ese sentido). Algunas de ellas me gusta adaptarlas para poder incorporarlas en la labor de programador. Por otro lado, siempre he intentado ser una persona pragmática, en el sentido de que creo de forma fundamental que el trabajo del programador es ante todo solucionar problemas1). Y es esta base la que me hace ver el problema descrito como uno principalmente de inmadurez.

Inmadurez, en primer lugar, para adoptar una posición más imparcial frente al concepto de “la verdad”. Nos falta demasiadas veces la capacidad de aceptar que las cosas son como son. Podemos querer mejorarlas, claro está, pero lo que no tiene ningún sentido en absoluto es pretender que son de otra forma, porque esa forma nos gusta más. Esto se debe llevar a todos los aspectos de la vida y de la labor que realicemos. Y así entenderemos que anclarnos en un dogma que no representa la complejidad de la realidad es solo una ilusión. Pero también aceptaremos que existen opciones mejores y peores y que no por ser la que a nosotros nos gusta, nuestra opción es necesariamente tan buena como otras. Ambas son posiciones que niegan la verdad y la cubren con opinión. Como decía Marco Aurelio “si alguien me muestra mi error o una perspectiva mejor que la mía, cambiaré encantado; es la verdad lo que busco”. En nuestro caso, como programadores, buscamos la opción que solucione mejor el problema que se nos plantee. No la opción que más nos guste a nosotros mismos.

También es inmadurez para aceptar nuestra propia limitación y nuestro lugar adecuado en el proceso. Somos programadores. Nuestro papel es, fundamentalmente, el de ofrecer y ejecutar soluciones. Y aunque para ello analicemos y estudiemos el problema, no es nuestro papel el de definir o crear el problema. Es decir, no debemos inventarnos problemáticas para nuestro propio beneficio o interés, e.g. “el usuario quiere que la aplicación esté hecha en Smalltalk” o “no hacemos estimaciones porque según los principios Ágiles son anti-éticas”.

Aplicación

Como decía al principio, me he encontrado con esta situación numerosas veces. La aplicación de esta visión, más estoica y más pragmática, es en realidad bastante sencilla, siempre que estemos dispuestos a llevarla a cabo.

Se trata tan solo de ser conscientes de cuál es el objetivo y observar imparcialmente cuál es la naturaleza del problema real. Y entonces, y solo desde esta posición imparcial de observar las cosas en su totalidad y en su forma real, adoptar la solución que mejor resuelva el problema, independientemente de que sea “mi” solución o la de otra persona. No hay más misterio ni complicación.

Por supuesto, que sea sencillo no significa que sea fácil. Aplicar esto en nuestro trabajo, en nuestra vida en general, requiere una madurez y una honestidad como personas que no son suficientemente frecuentes hoy en día. Y mi propia impresión es incluso menos esperanzadora en el campo del desarrollo de software, ya que, me temo, es un área muy inmadura y plagada de intereses personales -grandes y pequeños- que se anteponen demasiadas veces a esa búsqueda de la verdad o de la mejor solución.

Poco se puede hacer, pero algo sí: educar. Sin embargo, esto es algo que lleva tiempo y solo dará frutos notables en generaciones futuras. Mientras tanto todo lo que queda es el compromiso personal de cada uno para ser mejores profesionales: más imparciales con el problema y más comprometidos con la solución y menos con nuestro interés y capricho personal.

1)
cierto tipo de problemas, claro