GoSuda

Política y computación

By snowmerak views ...

La filosofía

¿Qué piensa usted que es la filosofía? Según el diccionario, se define como la actividad de pensar y encontrar respuestas sobre las preguntas fundamentales de la vida y del mundo. También se puede plantear una definición conductual: no es la resolución de problemas con respuestas predeterminadas, sino la expansión del pensamiento mediante una misma pregunta, o una sucesión de preguntas que se encadenan unas a otras, y el intercambio de esas respuestas.

En el pasado, mientras cursaba la licenciatura, tomé una asignatura relacionada con la filosofía política. En aquella ocasión, durante la presentación personal, el profesor dijo algo similar a la filosofía política y la ingeniería informática son disciplinas situadas en los extremos opuestos de la filosofía. Recuerdo que no fueron exactamente estas palabras ni esta oración, pero creo que el sentido era más o menos ese.

Ingeniería informática

Considero que la ingeniería informática es una investigación fundamental para resolver problemas lógicos. Por ello, cada persona que reflexiona sobre un problema puede llegar a distintas respuestas. El ejemplo más representativo es el de los algoritmos de ordenamiento. Existen numerosos métodos de investigación sobre cómo ordenar en secuencia los mismos datos enumerados, como burbuja, inserción, selección, mezcla, rápido, montículo, Timsort, entre otros. Además, al dividir estos problemas, pueden surgir algoritmos cada vez mejores.

Asimismo, desde una perspectiva local, se puede afirmar que consiste en construir y demostrar. El mismo ordenamiento mencionado anteriormente se va construyendo sobre la forma de ordenar y se demuestran sus resultados. Para quienes son desarrolladores, un ejemplo más cercano sería que, cuando surge la planificación de un proyecto, se implementa y se demuestra que funciona correctamente.

Filosofía política

Considero que la filosofía política es una investigación fundamental para resolver problemas sociales. En cada época se plantean de manera reiterada interrogantes sobre problemas ya existentes, que son distintos según el momento; se producen respuestas y se comparten con el presente y el futuro. Se ocupa principalmente de valores abstractos, como la justicia, la libertad, la igualdad y el poder, que se interpretan de modo diferente según la época y la cultura, y se caracteriza por la ausencia de límites claros entre el bien y el mal, así como de respuestas correctas o incorrectas definidas de antemano, por lo que permanece indeterminada.

Asimismo, desde una perspectiva local, similar a la ingeniería informática, puede considerarse que consiste en cuestionar y reflexionar. Ante los problemas que surgen, se cuestiona incesantemente por qué ha sucedido así, cuáles son las direcciones mejores posibles, y se reflexiona para proponer respuestas. También en este caso aparecen muchas respuestas, en proporción al número de personas que piensan.

Por qué debemos conocer la política y la informática

Relación de invocación mutua

Aunque los dos mundos parecen explorar ámbitos distintos, en realidad comparten muchos puntos similares y tienen con frecuencia causas y consecuencias recíprocas.

Permítanme dar un ejemplo.

  1. Si los datos de salud personales se almacenan de forma segura en la nube, podrán ser accedidos rápidamente desde cada hospital cuando sea necesario ⇒ Se implementa mediante programación, utilizando de forma segura y accesible las funciones de cada ámbito.
  2. Entonces, ¿de quién son esos datos? ¿Míos? ¿Del responsable de registro? ¿O de la empresa organizadora? ¿De la empresa desarrolladora? ¿Del Estado? Y, en ese caso, ¿hasta dónde pueden ver mis datos? ¿Hasta qué punto y de qué manera puedo tener la garantía de que mi información personal estará protegida? ⇒ Surgirá un debate político sobre las posiciones e intereses divergentes de distintas comunidades y de cada individuo.
  3. A partir de ahí, el debate político y el diseño y la implementación de programas se encadenarán y repetirán de manera recurrente.

Así, la ingeniería informática se utiliza para resolver problemas sociales existentes, y la filosofía política se emplea después para reconocer los problemas que surgen de ello, cuestionarlos y resolver el siguiente problema. En la sociedad de la información actual, este fenómeno es algo natural.

¿Se parecen la política y la informática?

Puntos que no parecen tener semejanza

Asimismo, ambos mundos han evolucionado de forma similar. Sin embargo, su base presenta una diferencia entre expresiones ambiguas y expresiones precisas, de manera semejante a la relación entre la filosofía social y la filosofía natural. La filosofía política se fundamenta en definiciones variables y ambiguas formuladas en lenguaje natural, mientras que la ingeniería informática se basa en proposiciones invariables y precisas expresadas mediante fórmulas más que en lenguaje natural.

Además, la dirección que toman difiere sutilmente. La ingeniería informática considera que puede existir una solución óptima. En cambio, la filosofía política trata conceptos ambiguos como argumentos más persuasivos, argumentos mejor fundamentados o argumentos más éticos. Sin embargo, desde mi punto de vista, las direcciones de ambas son casi análogas. En definitiva, parecen perseguir un siguiente mejor. Por ejemplo, la ingeniería informática también tiene diversos campos, pero, como ejemplo representativo, en la compresión de medios denominada códec se esfuerza por ofrecer una mejor tasa de compresión, un mejor rendimiento de compresión y un menor costo de licencias.

Puntos que parecen similares

Como ejemplo representativo, los lenguajes de programación y las ideologías de gobierno parecen aplicarse de forma análoga a los seres humanos. No es posible establecer una correspondencia directa entre cada lenguaje y cada ideología, pero, por diversión, enumeraré algunas.

  • Lenguaje C (el desarrollador sabe lo que está haciendo): Me gustaría compararlo con el republicanismo. Históricamente se asemeja a la república, que fue la base del sistema político occidental, y también recuerda al comunitarismo, que valora la conciencia de cada ciudadano y el esfuerzo individual por avanzar hacia un ideal superior. Además, percibo como similar el hecho de que a los derechos les acompañan responsabilidades.
  • Java (escríbelo una vez, ejecútalo en cualquier lugar): No lo sé con certeza. Existe una ley fuerte y, al cumplirla, se vive una vida uniforme, pero eso resulta estable y dentro de ella hay libertad. Y al adentrarse en Spring, esperan a ustedes diversos beneficios sociales. ¿Lo asociamos con el liberalismo?
  • C# (armonía entre la productividad del desarrollador y los principios de la ingeniería de software): Bajo la protección de un gobierno fuerte, todo está bien diseñado, y dentro de lo planificado se puede llevar la productividad y el rendimiento al límite. Encaja con la economía planificada. Lo que lo diferencia del comunismo es que ha liberado los medios de producción y no restringe a los productores.
  • Go (se descarta la complejidad y se adopta la practicidad y la eficiencia): No tiene nada parecido. Todo se reparte generosamente, así que adopte un Estado de bienestar.
  • Rust (seguridad sin pérdida de rendimiento): La propiedad y los tiempos de vida en Rust son gestionados por un gobernante estricto, que es el compilador. Esto parece orientado a garantizar la seguridad y la igualdad de todo el sistema, limitando en parte la libertad individual para evitar la desigualdad y los riesgos que genera la libre actividad económica, de modo que la comunidad gestione y planifique los medios de producción para asegurar una vida estable; por ello considero que es socialismo.
  • JavaScript (flexibilidad y tolerancia, y su presencia en todas partes): Me gustaría compararlo con el capitalismo. En este lenguaje, los medios de producción están en manos de cada individuo, e incluso cada individuo dispone con holgura de las instalaciones. Gracias a ello surgen diversos productos industriales, y, mediante la competencia libre, cualquiera puede perseguir el beneficio. Sin embargo, el mercado sin regulación pronto cayó en el caos.
  • TypeScript (JavaScript extendido): Naturalmente, es el capitalismo modificado. Las creencias del capitalismo se quiebran, y para superar la inestabilidad del mercado el gobierno interviene en cierta medida. La libertad absoluta anterior ha retrocedido relativamente, pero todavía cualquiera puede ingresar libremente al mercado y competir.

Además, no son pocos los desarrolladores que, más de lo que se imagina, discuten mucho mediante los lenguajes, como si libraran una guerra ideológica en la realidad. El propio lenguaje es, para los desarrolladores, una ideología familiar y, al mismo tiempo, un ideal que deben perseguir.

Estado y arquitectura

  • Arquitectura monolítica y Estado centralizado: Todo está contenido en una enorme base de código y en un único binario. Esto tiene una estructura similar a un Estado unitario con un gobierno central fuerte o a una monarquía absoluta. Todas las funciones del Estado son controladas por un único sistema de poder.
    • Tiene la ventaja de que resulta muy sencillo constituir el Estado y que las decisiones se toman con rapidez. Esto se corresponde con la ventaja de que todo el software salga rápidamente. Como todos los recursos e información se concentran en un solo lugar, su gestión es clara.
    • No obstante, a medida que el Estado crece, resulta difícil responder a los cambios, y aunque se quiera modificar una ley o institución pequeña, es necesario revisar y aplicar todo el conjunto. También existe el riesgo de que un problema en un ámbito paralice todo el Estado. Lo monolítico, asimismo, por su gran base de código y el código interrelacionado, dificulta responder a los cambios; incluso para modificar una sola línea de código hay que calcular el alcance del impacto, y un problema en un módulo tiende a afectar a todo el sistema.
  • MSA y Estado federal: Cada función del sistema se separa en servicios independientes. Esto guarda semejanza con un Estado federal, en el que cada parte del Estado está conformada por varios estados autónomos. Además, cada servicio y cada estado disponen de una infraestructura independiente. La intervención del gobierno central es relativamente laxa, y tampoco se sabe cuándo se producirán independencias o adhesiones, lo cual también es similar.
    • Básicamente, cada estado independiente y cada servicio pueden modificar leyes o escribir código de forma autónoma. Por ello no es necesario sincronizar el ritmo entre ellos. Además, aunque surja un problema en un lugar, es difícil que toda la federación quede paralizada. Y es posible elegir las instituciones (tecnologías) adecuadas a cada región o ámbito.
    • Sin embargo, alcanzar acuerdos mutuos o crear canales de comunicación es complicado. Resulta difícil mantener políticas coherentes, lo que puede provocar confusión.
  • EDA (Event Driven Architecture) y sociedad civil: En lugar de que el gobierno central o un representante dé órdenes directamente, las personas recogen de forma autónoma y proactiva los problemas sociales que surgen y los resuelven. Esto se asemeja a la característica de EDA, en la que, cuando ocurre un evento, alguno de los suscriptores lo recoge de manera autónoma y lo procesa.
    • Cualquiera puede participar fácilmente. En EDA, también, un nuevo servicio puede convertirse fácilmente en un nuevo suscriptor y participar en el proceso.
    • Sin embargo, presenta la desventaja de que no se puede conocer el flujo completo. Es difícil rastrear quién lo procesó y cómo, y no se sabe qué reacción en cadena producirá un único suceso.
  • Arquitectura en capas y feudalismo: El feudalismo es una estructura en la que cada estamento cumple los roles y responsabilidades que se le asignan y ejecuta sus obligaciones hacia el estamento superior. Estas relaciones se establecen como una especie de relación contractual, y en el hecho de constituir una estricta estructura de dominio vertical puede encontrarse una semejanza con la arquitectura en capas.

Así, aunque podrían plantearse más analogías, el núcleo de este texto no reside en la estructura en sí, sino en el proceso mediante el cual se construyen esas estructuras.

¿Serán iguales la resolución de problemas en el desarrollo y en la política?

Si la arquitectura de software y el sistema de Estado se parecen, el proceso mediante el cual se construyen ambos también avanza en paralelo de manera sorprendente. El proceso de desarrollo de software no es, en esencia, diferente de un acto político que construye y hace evolucionar un nuevo orden en el espacio digital.

  1. Hacer público el problema social y analizar los requisitos: Todo comienza con la pregunta "¿cuál es el problema?". Así como el dolor y las molestias de la sociedad civil se hacen públicos y se convierten en agenda política, las incomodidades y demandas de los usuarios, tras ser analizadas, se convierten en el primer hito del desarrollo, denominado "especificación de requisitos".
  2. Diseño constitucional y diseño de la arquitectura: ¿Qué Estado vamos a crear? ¿Qué sistema vamos a construir? Así como los políticos establecen el esqueleto de la constitución y de las leyes a partir de sus ideologías y filosofías, el arquitecto traza, con base en sus convicciones técnicas, el plano de la arquitectura que servirá de cimiento del sistema. Las decisiones de esta etapa determinan el destino del sistema.
  3. Ejecución de políticas e implementación de software: Una vez completado el plano, los desarrolladores escriben el código real y los funcionarios administrativos ejecutan las políticas conforme a las leyes. Es el proceso en el que un plan abstracto nace como una entidad concreta que funciona en el mundo real.
  4. Juicio mediante elecciones y pruebas de software: Las políticas son juzgadas en cuanto a su legitimidad mediante elecciones y la opinión pública. El software demuestra su valor mediante las pruebas del equipo de QA y la retroalimentación de los usuarios. Ambos, en última instancia, solo pueden sobrevivir si obtienen el consentimiento de los soberanos (ciudadanos, usuarios).
  5. Reforma institucional y mantenimiento del sistema: Las leyes y los sistemas, una vez creados, no son eternos. Así como se revisan las leyes obsoletas y se reforman las instituciones conforme a los cambios de la época, el software, si deja de realizar "refactorización" para adaptarse al entorno cambiante y mejorar las ineficiencias internas, se convierte en código muerto.

De este modo, el recorrido completo, desde la definición del problema hasta el diseño, la implementación, la verificación y la mejora continua, muestra que ambos mundos comparten el mismo ritmo de resolución de problemas.

El día de los nuevos legisladores

La sociedad de la información ha vuelto insignificante la distancia entre los dos extremos de esas dos filosofías. El código ya no es un simple circuito lógico, sino que se ha convertido en "la ley" (Code is Law), que regula las relaciones entre las personas, distribuye el poder y materializa los valores sociales. Si la arquitectura que diseñamos se parece a la estructura de gobierno de un Estado, y el proceso de desarrollo que seguimos es similar al proceso de consenso político, entonces, ¿quiénes somos realmente los desarrolladores? Y ¿qué debe hacer el político? Por ello, el desarrollador debe reflexionar no solo sobre la lógica del código, sino también sobre la sociedad que ese código creará, y el político debe comprender no solo la lógica de los votos, sino también la lógica de la tecnología que mueve el mundo. Porque el enorme poder que ejercemos en nuestros respectivos mundos conlleva una responsabilidad ética proporcional.