Todo depende del cristal con que se programa

Ya lo han dicho muchos, la realidad, es decir, la descripción que de ella hacemos, depende del observador. Para Foerster la realidad es una cómoda muleta que usamos para hablar de la descripción de la observación (que llamamos simplemente observación).

En un post de Marco Dorantes leo una postulación de las metodologías ágiles como ejemplos excepcionales de la aplicación del pensamiento científico al desarrollo de software, post que encontré poco después de publicar yo mismo uno en el que sostengo que las metodologías ágiles, en particular la XP, pueden verse como aplicaciones prácticas del pensamiento constructivista (constructivismo epistemológico), posición filosófica enfrentada principalmente con el positivismo: el primero postor del método científico al que hace alusión Marco.

En primer lugar, quiero decir que me ha llenado de gusto ver que no soy el único discutiendo acerca de la epistemología aplicada al desarrollo de software. Igual que Marco, estoy convencido de que una posición filosófica puede aportar bastante a las metodologías y a las formas generales de hacer software.

En términos generales, Marco propone lo siguiente:

  • El pensamiento científico nos permite explicar y predecir hechos observados. Este pensamiento puede ser adoptado por los profesionales del software para entender mejor los fundamentos del desarrollo de software.
  • El pensamiento científico tiene el ideal colaborativo de reunir el conocimiento en una “mesa central de trabajo”, en la que los nuevos conocimientos se construyen sobre la base de los anteriores y del trabajo de generaciones de pensadores. Los desarrolladores de software, al contrario, parece que prefieren redescubrir las mismas cosas muchas veces y cometer los mismos errores una y otra vez.
  • El método científico tiene su esencia en la refutación de hipótesis, es decir, en la falsificación de las proposiciones teóricas que debe probar. En el mundo del desarrollo, muchos tienen ideas fijas y acartonadas que no admiten críticas y son más bien dogmáticas.
  • La filosofía de la ciencia ha probado que se puede acercar el método científico a disciplinas humanistas, por lo que será posible incluirlo también en el mundo del desarrollo de software.
  • El mundo del software es artificial: construcciones lógicas gobernadas por una serie de relaciones, lo contrario del mundo físico o “real”. El mundo del software se parece mucho más al universo lingüístico, donde la relación entre signo, significado y significante está en continuo cambio en el entorno social.
  • Para entender y conocer acerca del desarrollo de software hace falta un enfoque científico.
  • Los practicantes comprometidos de las metodologías ágiles pueden verse como “científicos” del desarrollo de software.
  • Las metodologías ágiles son adaptables y cooperativas, privilegiando el entorno siempre en cambio y de autocrítica de los procesos de desarrollo de software modernos. Lo ágil es evolutivo y revolucionario.

El pensamiento científico

En primer lugar, no creo que el pensamiento científico sea tal y como lo describe Marco. Siendo como soy, un partidario convencido del constructivismo, y conociendo científicos con un enfoque constructivista, estoy absolutamente seguro de que el pensamiento científico no es siempre una aplicación tan reduccionista del positivismo y del método científico.

Tampoco estoy tan convencido de la “colaboración” de los científicos. En mi opinión, el mundo del software es bastante colaborativo gracias a la cantidad tan grande de desarrollos OpenSource, de Blogs y Wikis de expertos que dan a conocer no sólo lo que saben y han publicado, sino las ideas sobre las que piensan publicar, como es el caso de Martin Fowler que ha escrito algunos de los capítulos de sus libros en una Wiki publica, recibiendo críticas del publico en general. A diferencia de esto, en el mundo académico-científico, la actitud más común es no informar sobre la investigación en curso, para evitar que “les ganen la publicación”. Mi apreciación de los científicos es en general de personas mezquinas interesadas en obtener bonos y gratificaciones por actividades contabilizables como publicaciones, tesistas, estudiantes y participaciones en congresos. Existen, afortunadamente, varias excepciones, pero el comportamiento de la mayoría de los científicos que he conocido dista mucho de ese ideal humanista que describe Marco.

Como ya dije, no creo en el positivismo ni en sus métodos. Pensar en una realidad ajena al observador y que la ciencia ofrece una descripción ajustada aunque sea probabilísticamente a esta me parece, igual que a Glasersfeld, una ingenuidad. La ciencia ofrece una descripción pragmática de lo que los científicos han observado y han acordado como observación. Una descripción que, en efecto, como dice Marco, tiene su principal utilidad en la predicción y control de los fenómenos observables.

Los errores que el positivismo ha generado en el ámbito de la ciencia, se ven imitados y en ocasiones incrementados en el ámbito de las humanidades. Para las posiciones positivistas la obtención del conocimiento es sólo posible mediante el método científico y la deducción formal y de acuerdo a la lógica a partir de los conocimientos previos. En el ámbito de las humanidades, la aplicación del método es bastante cuestionable en sí, además de que la objetividad es mucho más ilusoria que nunca cuando hablamos de nosotros mismos y de nuestras sociedades (ya lo decía Lacan: los sujetos no son objetos).

El desarrollo de software

Sin embargo, estoy absolutamente en acuerdo con Marco en que una posición de pensamiento científico, no necesariamente positivista, puede tener mucha utilidad para los profesionales del desarrollo de software.

Estoy convencido de que un punto de vista constructivista, en el que la realidad es más bien una construcción lingüística y no una “entidad” independiente de los observadores, se ajusta bastante a la similitud que Marco observa entre el universo lingüístico y el mundo del software. De hecho, creo que el enfoque planteado de la triada signo-(significante-significado) donde uno es el símbolo, la actuación lingüística como tal, y los segundos el centro de una red semántica de relaciones de uso lingüístico me parece del todo acertado.

Pero además de las filosofías, debo afirmar acuerdos más elementales con el texto de Marco:

En primer lugar, que los profesionales del desarrollo de software deben ser más “profesionales“, es decir, deberían estudiar mucho más para poder pararse en los hombros de las generaciones anteriores, y así no reinventar las mismas soluciones que ya inventaron muchos antes que ellos, y no caer en los errores descritos por generaciones de profesionales. El conocimiento, por ejemplo, de metodologías de desarrollo, patrones arquitectónicos, lenguajes de modelado y buenas prácticas es una ausencia bastante común en muchos desarrolladores.

En segundo, también creo que existen muchos desarrolladores con tendencias dogmáticas no sólo en sus metodologías, sino en la forma de solucionar algunos problemas. Las metodologías, como dice Marco, no son ni deben ser sólo verborrea, sino compromisos profesionales con valores y principios filosóficos, que permitan revisiones, favorezcan la reflexión y cuyas ideas sean respaldadas por acciones consistentes.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s