Hamburger Icon
¿Programas o epistogramas?

¿Programas o epistogramas?

Lo creas o no, el desarrollo de software tiene una relación muy estrecha con muchas ramas de la filosofía. Voy a intentar resumirte, como buenamente pueda, qué es la epistemología y cómo se relaciona con el desarrollo de software. Después de presentar los conceptos clave, verás las ventajas que puede tener conocerlos.

A muchas personas, la filosofía en general, nos ha parecido algo aburrido que te tienes que tragar en el colegio y que no sirve para nada. ¡Qué atrevida es la ignorancia! Realmente sucede todo lo contrario. La filosofía está presente en cada segundo de tu vida y tiene un rol primario, aunque a veces no nos demos cuenta.

Qué es la epistemología

Vamos a ir al grano. Episteme significa conocimiento. Logos significa estudio. Es la rama de la filosofía que se encarga de estudiar el conocimiento. Intenta comprender de qué forma adquirimos, justificamos y entendemos el conocimiento.

¿Qué es el conocimiento? ¿Cómo lo obtenemos? ¿Cuáles son los límites y las fuentes del conocimiento? ¿Cómo podemos estar seguros de que nuestro conocimiento es válido y confiable? Estas cuestiones han sido objeto de debate y reflexión filosófica a lo largo de la historia.

En el mundo del desarrollo de software, la creación de programas y aplicaciones requiere una combinación de habilidades técnicas y un enfoque sólido para adquirir conocimiento y tomar decisiones. En este sentido, la epistemología, desempeña un papel fundamental. En este post, exploraremos la relación entre la epistemología y el desarrollo de software, y cómo los principios epistemológicos pueden influir en la calidad y la efectividad de los productos de software.

Principios de la epistemología y su relación con el desarrollo de software

Dentro de la epistemología, existen diferentes enfoques y corrientes de pensamiento. Algunas de las principales son el empirismo, racionalismo, constructivismo, pragmatismo... Hay muchas. Vamos a ver cómo se relaciona todo esto con tu trabajo en el día a día.

Adquisición de conocimiento

Como ya sabes, la epistemología se centra en cómo adquirimos y justificamos el conocimiento. En el desarrollo de software, la personas encargadas del desarrollo deben enfrentarse a la tarea de comprender los requisitos, las especificaciones y el contexto del proyecto.

Aquí es donde los principios epistemológicos, como la observación, la inducción y la deducción, entran en juego. El desarrollador debe utilizar métodos y técnicas para recolectar información, analizarla y sintetizarla de manera significativa.

Observación

A través de la experiencia sensorial y la percepción directa del entorno se establece gran parte de tu conocimiento. Es la fuente primaria de información. Interpretar y analizar estos datos va a determinar lo que sabes. Observar permite formular hipótesis patrones y generalizaciones que explican lo que sucede al rededor.

Hay que tener cuidado porque nuestros sentidos pueden estar influenciados por nuestros marcos de referencia, preconcepciones y sesgos cognitivos. observación rigurosa implica una actitud crítica y reflexiva, así como una búsqueda de la objetividad y la precisión en nuestros procesos de percepción.

Inducción

La inducción implica extraer una conclusión general a partir de una serie de observaciones o experiencias específicas. Por ejemplo, como diría Taleb, si observamos repetidamente que todos los cisnes que hemos visto son blancos, podríamos inducir la afirmación general de que "todos los cisnes son blancos".

Sin embargo, es importante destacar que la inducción no garantiza la verdad absoluta de la conclusión, sino que ofrece una probabilidad o una generalización basada en la evidencia disponible. Y los cisnes negros existen, como animal y como evento improbable.

David Hume ya planteó el "problema de la inducción", argumentaba que no hay un fundamento lógico sólido para justificar la inducción, ninguna cantidad de observaciones pasadas puede garantizar la verdad de una afirmación generalizada. No le faltaba razón... Pero a pesar de las críticas, la inducción es una herramienta esencial en el proceso de adquisición de conocimiento.

Deducción

La deducción se refiere al proceso lógico mediante el cual se extraen conclusiones específicas a partir de premisas generales o principios establecidos. Se basa en el razonamiento deductivo, que busca inferir verdades particulares o específicas a partir de proposiciones generales o universales.

Este principio se basa en la idea de que si tenemos conocimiento de ciertas premisas o principios generales y aplicamos reglas lógicas válidas, podemos llegar a conclusiones necesariamente verdaderas. Por ejemplo:

Premisa 1: Todos los hombres son mortales. Premisa 2: Sócrates es un hombre. Conclusión: Por lo tanto, Sócrates es mortal.

Y otro ejemplo, en este caso erróneo, para evidenciar que aunque las premisas pueden ser ciertas, las conclusiones que podemos sacar pueden estar profundamente equivocadas:

Premisa 1: Todos los hijos de Julio Iglesias son altos. Premisa 2: Hay un niño muy alto en el parque. Conclusión: Por lo tanto, ese niño es hijo de Julio Iglesias.

La relación entre la altura y los hijos de Julio Iglesias es unidireccional. Nos faltaba tener en cuenta una importante regla para evitar conclusiones erróneas: no todas las personas altas son hijas de Julio Iglesias.

Racionalidad y toma de decisiones

La epistemología se ocupa de la racionalidad y la toma de decisiones basada en la información disponible. En el desarrollo de software, los programadores se enfrentan a múltiples opciones y deben tomar decisiones informadas en cada etapa del proceso.

La lógica y el razonamiento se convierten en herramientas fundamentales para evaluar diferentes enfoques, identificar soluciones óptimas y resolver problemas. La epistemología proporciona un marco para comprender cómo se justifican y se defienden las decisiones basadas en el conocimiento.

Validación y pruebas

La validación y las pruebas son elementos esenciales en el desarrollo de software para asegurar la calidad y el correcto funcionamiento de un producto. Aquí es donde entran en juego los principios epistemológicos de la verificación y la confirmación.

Verificación, confirmación y falsabilidad

la verificación se refiere a la idea de que el significado de una afirmación o proposición se encuentra en su capacidad de ser verificada o confirmada mediante la evidencia empírica o la experiencia. Según este principio, una afirmación solo tiene sentido si es posible establecer un método o criterio para determinar si es verdadera o falsa.

Sin embargo, el principio de la verificación ha sido objeto de críticas. Por ejemplo, el filósofo Karl Popper, una de las figuras clave del siglo XX, argumentó en contra del verificacionismo, sosteniendo que no todas las afirmaciones científicas pueden ser verificadas de manera definitiva, pero que pueden ser sometidas a pruebas y refutación. Propuso en cambio el principio de falsabilidad, que sostiene que las teorías deben ser susceptibles de ser falsadas mediante pruebas empíricas.

En resumen, que es importante que tus conclusiones hayan sido verificadas o confirmadas empíricamente, pero sé humilde, ten la mente abierta al cambio y a que información y evidencias futuras puedan falsar tus conclusiones presentes, en caso contrario estarás cayendo en la trampa de los dogmatismos.

Cuando desarrollas software, debes diseñar y ejecutar pruebas que confirmen o refuten las suposiciones y las hipótesis planteadas durante el proceso de desarrollo. La epistemología ofrece herramientas conceptuales para comprender cómo las pruebas y la validación contribuyen a la adquisición de conocimiento sobre el software y cómo los resultados de las pruebas afectan las decisiones subsiguientes.

Mejora continua y aprendizaje

La epistemología también es relevante en el contexto del aprendizaje y la mejora continua en el desarrollo de software. La capacidad de reflexionar sobre las experiencias pasadas, extraer lecciones y ajustar enfoques futuros es esencial para el crecimiento y la evolución en este campo.

Los principios epistemológicos, como el empirismo y el falibilismo, pueden guiar a los desarrolladores hacia un enfoque más abierto al aprendizaje y la adaptación. La epistemología proporciona un marco para comprender cómo el conocimiento evoluciona a través de la experiencia y cómo se pueden aplicar estas lecciones.

Empirismo

No confundir con el principio de la observación explicado antes, que podría decirse que forma parte del empirismo.

El empirismo sostiene que el conocimiento se deriva principalmente de la experiencia sensorial y la observación del mundo externo. A través de la observación y la experiencia directa, recopilamos datos y evidencias que nos permiten formar generalizaciones, patrones y teorías sobre el mundo que nos rodea.

Falibilismo

No confundir con la falsabilidad comentada antes, ya que ésta puede encontrarse englobada en el principio más amplio del Falibilismo.

Este principio sostiene que todo conocimiento humano es falible y sujeto a error. Reconoce la naturaleza provisional y revisable de nuestras creencias y teorías, y nos insta a estar abiertos al escrutinio y a la posibilidad de revisar o abandonar nuestras creencias en función de la evidencia y los argumentos disponibles. El falibilismo promueve una actitud de escepticismo y autocrítica en la búsqueda del conocimiento.

Conclusión

La epistemología y el desarrollo de software están intrínsecamente relacionados. La adquisición de conocimiento, la toma de decisiones basada en la información disponible, la validación y las pruebas. Algunas ventajas que tiene conocer y aplicar estos conceptos podrían ser:

  • Mejorar en la capacidad de pensamiento crítico
  • Tomar mejores decisiones
  • Saber adaptarse y aprender de forma continua
  • Tener más rigor en la investigación y la experimentación
  • Mejorar la comunicación efectiva

Todo esto, lleva a un desarrollo de software más sólido, confiable y basado en evidencia. Así que pregunto de nuevo. ¿Programas o epistogramas?