Abstracciones II

En mis dos artículos anteriores he puesto de manifiesto que hay conceptos pertenecientes a campos como la física o la programación que pueden ser aplicados a su vez a otras áreas de la vida. Este ejercicio tiene el potencial de ayudarnos a afrontar diferentes situaciones de nuestro día a día con una mayor claridad, ya que nos permite observarlas desde un prisma diferente al que solemos estar acostumbrados.

El concepto de abstracción, concretamente, tiene su origen (hasta donde yo sé) en la ingeniería de software, que es una disciplina que también engloba al arte de programar. Básicamente, una abstracción es una capa que se utiliza para “cubrir” un sistema, ya sea físico o virtual, con el objetivo de simplificar la interacción con dicho sistema. Esto lo podemos entender mejor mediante el siguiente ejemplo:

Imagínate que quieres aprender sobre filosofía estoicai. Este es el sistema del que partimos. Existen diferentes maneras de encarar este prendizaje, dependiendo de la capa de abstracción que queramos utilizar.

Si nos vamos a lo más profundo, quizás nos dispondremos a leer “Meditaciones”, de Marco Aurelio, o “Sobre la brevedad de la vida”, de Séneca. Esta sería la capa de abstracción nº1.

Si no disponemos de tanto tiempo, o si no nos apetece infundirnos en tanta complejidad, quizás nos inclinemos por leernos “El ego es el enemigo” o “El obstáculo es el camino”, del escritor Ryan Holiday. Este escritor ha realizado parte del trabajo por ti: ha cogido la sabiduría estoica, ha ido a la fuente, y ha creado sus abstracciones en forma de libros, con un lenguaje moderno más asimilable y sencillo. Esta sería la capa de abstracción nº2.

En caso de que no nos apetezca leernos un libro entero y prefiramos aprender varios conceptos clave o leernos un resumen extenso, nos podemos descargar una aplicación como es Shortform, que te resume los libros, e incluso va más allá, porque enlaza algunas ideas con otras de otros libros o fuentes. Esta la podríamos considerar como la capa de abstracción nº3.

Por último, si lo que te interesa es tener una idea general acerca de esta filosofía, puedes utilizar la Inteligencia Artificial. Esta sería, como no podía ser de otra manera, la última capa de abstracción.

Gráficamente, podemos ver este modelo de capas en la siguiente imagen:

Estructura de capas filosofía estoica

En este esquema se aprecia claramente que, cuanto más abajo te mueves, mayor es el conocimiento que puedes adquirir acerca del tema en cuestión, pero también mayor es el esfuerzo y el tiempo que debes invertir para asimilarlo.

Momento eureka: ¿Recuerdas en el artículo anterior cuando hablaba de los lenguajes de programación de alto y bajo nivel? Si tomamos el modelo de capas que acabamos de ver, y lo aplicamos ahora al sistema “comunicarle instrucciones a un ordenador”, nos quedaría el siguiente resultado:

Estructura de capas programar un ordenador

Llegados a este punto, espero que haya quedado bastante claro qué es una abstracción, especialmente para aquellos que se quedaron con dudas después de leer mi artículo anterior. Una vez se comprende el concepto, es fácil deducir el enorme potencial que tiene, y la ventaja que supone el ser consciente de su existencia. Quizás ahora, si lo piensas, llegues a la conclusión de que mi blog es también una abstracción, en este caso creada a partir de mi mente.

La importancia de saber elegir la abstracción correcta

En Lo que nunca cambia expliqué que había que tener cierta cautela a la hora de hacer uso de las abstracciones. Esto se debe principalmente al riesgo que conllevan, que se hace especialmente evidente cuando no funcionan como esperamos. Ahora bien, nos ha tocado vivir en una época de cambios tecnológicos en la que muchas veces no nos queda otra alternativa que echar mano de estas para no quedarnos atrásii. Por todo ello, pienso que saber elegirlas bien se ha convertido en una habilidad imprescindible para cualquiera que quiera avanzar con éxito en esta era de tanta incertidumbre.

Como norma general, podemos afirmar que una abstracción resulta adecuada para nuestros intereses si cumple los siguientes requisitos:

  1. Tiene que haber sido creada de la manera apropiada.
  2. Su alcance debe cubrir tus necesidades principales.
  3. Existe una estructura adyacente de gestión de errores.

Estos puntos los desarrollaré en profundidad en las dos secciones siguientes.

Características intrínsecas y consecuencias

Una abstracción nace a partir de ciertas hipótesis o suposiciones de partida aplicadas por parte de su creador/a sobre un ente más amplio del que se quiere extraer cierta funcionalidad o conocimiento. Esta característica tiene dos implicaciones principales:

Que una abstracción tiene una naturaleza limitadora de la realidad:

Volviendo al ejemplo que hemos visto sobre la filosofía estoica, leer un libro de Ryan Holiday supone de alguna manera asimilar su interpretación de dicho conocimiento. Otras interpretaciones posibles – así como otros aspectos de la filosofía que no se traten en sus libros – quedan fuera de nuestra consciencia.

De forma similar, para el caso de los lenguajes de programación, la abstracción llamada “Python” está optimizada para ciertos casos de uso, pero tiene un desempeño muy pobre en según qué cosas queramos resolver. Por ejemplo, si queremos crear un programa súper eficiente, que aproveche mejor los recursos del ordenador, tendríamos que utilizar otros lenguajes como pueden ser C, C++ o Rust.

Que las suposiciones o hipótesis de partida pueden ser erróneas:

En multitud de ocasiones he sido testigo de los problemas de comunicación que surgen en el ámbito laboral, siendo un caso muy representativo las reuniones entre clientes y proveedores. Si el proveedor es una empresa de software, esta falta de entendimiento suele provocar que la aplicación entregada no satisfaga las necesidades del cliente, y esto se debe a que las hipótesis de partida aplicadas no fueron las correctas. Es muy posible que la comunicación no mejore con el tiempo, lo que implica que el producto se mantenga defectuoso por meses e incluso añosiii.

Otra característica, que ya conocemos, de las abstracciones es que tienen la función de “cubrir” el sistema que abstraen, el cual queda oculto a los ojos del usuario (lo que llamaba detalle de implementación en mi artículo anterior). Esta propiedad puede derivar en lo siguiente:

Que el sistema que esconden no sea un sistema real. Es decir, que esté formado de “puro humo”:

Supongo que a muchos de vosotros os habrán intentado estafar, con o sin éxito, más de una y de dos veces. Gente que te intenta vender un producto de último grito, o te dicen que te ha tocado un premio y que necesitan tus datos para enviártelo. La abstracción en este caso consistiría en la “estructura” montada con el objetivo de hacerte caer en el engaño. Este caso representa, en mi opinión, el mayor peligro asociado a las abstracciones.

Centrémonos ahora en las posibles acciones a realizar para mitigar los efectos negativos que acabo de mencionar.

Con respecto al primer punto – cuando hablaba de la naturaleza limitadora de las abstracciones – más que un aspecto negativo, yo diría que simplemente es algo de lo que conviene ser consciente. Pienso que es imprescindible saber de antemano cuáles son tus objetivos y qué problemas quieres resolver, y luego verificar que la abstracción que te planteas utilizar esté diseñada para satisfacer esas necesidades.

Si ponemos nuestra atención ahora en el segundo punto – el de las hipótesis mal planteadas – el caso de la aplicación defectuosa no deja lugar a muchas dudas: una comunicación clara y precisa desde el principio puede ahorrarte muchos dolores de cabeza y mucho dinero en el medio y largo plazo.

Una manera de averiguar si una empresa suele crear productos y servicios de calidad – lo que equivale a que empleen hipótesis correctas – es a través de las llamadas reseñas. Ya no solo para el negocio de desarrollo de software, sino para cualquier tipo de negocio, podemos consultar las opiniones que otros usuarios tienen de la empresa en cuestión, lo cual también ayuda con el tema de las estafas: si hay algo que no te huele del todo bien, es recomendable consultarlo en internet, ya que con frecuencia puedes encontrar comentarios de personas que han estado en una situación similar a la tuya.

Antes de finalizar esta sección, quería comentar algo que vi en el vídeo de Youtube titulado Bitcoin no cae solo: el RIESGO que puede arrastrar al ORO y la PLATA , del profesor de inversión Pablo Gil Trader. Hablaba del concepto de tokenización – fenómeno que ha tenido un gran boom en los últimos años – que consiste básicamente en la digitalización de activos reales como el oro o la plata. Esto ha permitido que cualquier persona a día de hoy tenga acceso a la compra de una gran variedad de materias primas de forma sencilla, a través de estas “participaciones” digitales que las representan.

Al mismo tiempo, estos productos financieros – llamados ETCs – no dejan de ser abstracciones sobre otras entidades, por lo que están sujetos a los mismos problemas que hemos visto con anterioridad. Por ejemplo, son de tan alto nivel que su valor puede verse afectado por muchos aspectos de los mercados que nada tienen que ver con la materia prima que representan; incluso hay ETCs que no están respaldados por oro o plata reales dentro de una caja fuerte de un banco, sino que se basan a su vez en una amalgama de productos financieros que resultan, por norma general, desconocidos para el usuario.

Este ejemplo ilustra claramente la importancia que tienen las abstracciones en el mundo actual. Cada vez es más necesario investigar sobre qué estamos comprando, a qué nos estamos suscribiendo o de quién estamos aprendiendo. En palabras de Pablo Gil: “En un mundo cada vez más financiero y digital no basta con preguntarse qué activo tienes, sino cómo está construido y qué hay realmente detrás”. Haríamos bien en seguir su consejo.

Otras formas de reducir el riesgo

En mi artículo anterior expliqué cómo la existencia de una estructura de soporte puede reducir el riesgo vinculado a la utilización de una abstracción. De manera complementaria, disponer de una documentación técnica asociada al producto en cuestión permite la resolución por parte del propio usuario de algunas incidencias menores, evitando así el tedio de tener que ponerse en contacto con el equipo de asistencia técnica, además de quedarse sin aparato durante un tiempo indefinido.

Otra estrategia muy efectiva de mitigación de problemas gira en torno al concepto de redundancia. Dotar a un sistema de redundancia básicamente consiste en la duplicación de los elementos críticos de dicho sistema, de manera que si el componente principal falla, se active automáticamente el elemento de sustitución, consiguiendo así que el servicio no se vea interrumpidoiv.

Gracias a la redundancia tuve la oportunidad de comprar varias cosas en el supermercado la tarde del 28 de abril del año pasado, el día del apagón en toda España. El supermercado continuaba operativo gracias a un generador de diésel auxiliar, que entró en funcionamiento justo después de que la red general cayera. Este mismo patrón lo podemos ver en otros centros cuyo funcionamiento resulta crítico, como es el caso de los hospitales.

Las estrategias de soporte y redundancia entran en acción cuando el fallo ya ha ocurrido. Al mismo tiempo, existen otras estrategias – como la implementación de un plan de mantenimiento – que tienen como objetivo la prevención de potenciales errores futuros.

Hace años, cuando trabajaba en la empresa Aernnova, en Vitoria, parte de nuestro trabajo consistía en realizar simulaciones de crecimiento de grietas en la estructura del avión. La cuestión no estaba en evitar que aparecieran las grietas en sí – eso es imposible – sino en asegurar que estas no crecieran hasta un tamaño que pudiera resultar peligroso, ya que serían detectadas previamente en la revisión de mantenimiento de turno. De esta manera establecíamos lo que se conoce como los intervalos de inspección.

Soporte, redundancia y mantenimiento; todas estas medidas bien ejecutadas contribuyen a mejorar la fiabilidad de un sistema. Podemos definir fiabilidad como el porcentaje de tiempo que el sistema está funcionando correctamente a lo largo de su ciclo de vida, en contraposición con encontrarse parado a causa de un fallo. Resulta evidente que deberíamos decantarnos por abstracciones que sean altamente fiables.

Por último, pero no menos importante, es preciso hacer mención de la seguridad. Que un sistema sea seguro implica que se garantice la integridad física de los ocupantes de un vehículo en un accidente de tráfico, o que se proteja el balance de tu cuenta bancaria en caso de que sufra un ciberataque por parte de un hacker externo.

A continuación, déjame que te cuente un último aspecto teórico sobre las abstracciones, antes de encarar la última parte del artículo.

Una doble paradoja

A partir de la interacción entre las abstracciones, por un lado, y dos parámetros que ya hemos visto con anterioridad, como son las limitaciones y el riesgo, por el otro, surgen dos paradojas que son interesantes de conocer.

A estas alturas sabemos que las abstracciones nos permiten superar ciertos límites que, de no ser por su ayuda, no podríamos rebasar. Al mismo tiempo, también sabemos que, paradójicamente, esas mismas abstracciones incorporan sus propias limitaciones. En general, los límites que se superan se expresan en términos de tiempo y eficiencia, mientras que las limitaciones “impuestas” se manifiestan en una reducción del espectro de la realidad que puedes influenciar. Por ejemplo, comparado a ir andando, un coche te permite desplazarte mucho más rápido y mucho más lejos (tiempo, eficiencia), pero si queremos entrar en un edificio tendremos que hacerlo a pie, ya que el coche solo puede circular por las vías designadas para ello (espectro de acción).

En lo relativo al riesgo, hasta ahora siempre he recalcado que las abstracciones lo aumentan, pero, paradójicamente, en algunas ocasiones también lo disminuyen. Caí en la cuenta de ello mientras veía en la tele una noticia sobre los aluniceros del sur de Madrid. Por ejemplo, tener una tienda online (lo que se conoce como e-commerce) te evita posibles problemas asociados a tener la tienda en un local físico: sufrir actos vandálicos, robos de stock, inundaciones, etc. Incluso si tienes la tienda asegurada, el disgusto es inevitable, además de la incomodidad de tener que lidiar con la compañía de seguros.

Lo que hay detrás de todo: Los servidores

¿Qué es lo que permite que vivamos rodeados de tantas abstracciones? ¿Qué hace posible que alguien pueda trabajar desde casa, comprar cosas por internet, gestionar su cuenta bancaria desde el móvil, hablar por whatsapp o ver una película en Netflix?

Los servidores.

Un servidor consiste en una especie de ordenador que está continuamente funcionando, y que sirve cierto contenido que nosotros – los llamados clientes – desde nuestro ordenador o desde nuestro móvil, consumimos. Por ejemplo, si queremos visitar una página web cualquiera, tenemos que abrir nuestro navegador y teclear en la barra de búsqueda el texto siguiente: https://www.cualquierpaginaweb.com. Cuando le damos a Intro, se envía una petición al servidor que tiene esa página “alojada”. Ese servidor recibe la petición, y si todo está correcto, nos responderá enviándonos el contenido que estamos demandando. Ese contenido viaja a través de la red hasta que llega a nuestro ordenador, mostrándose en ese instante en nuestra pantalla.

Hoy en día los servidores se suelen agrupar en decenas, cientos, miles o incluso millones, formando un entramado más grande que denominamos centro de datos. Las grandes corporaciones tecnológicas gastan billones de dólares en la construcción de estos centros de datos, con el objetivo de satisfacer una demanda que no para de crecer.

Volviendo al ejemplo de la tienda online, que mencionábamos en la sección anterior, la tienda no existe “porque sí” en una realidad paralela; la tienda está alojada en un servidor, que, probablemente, a su vez, esté localizado dentro de un centro de datos. Dicho comercio virtual no deja de ser una abstracción en sí, por lo que podemos aplicarle el modelo de capas que vimos en la parte introductoria:

Estructura de capas comercializar productos

La mayoría de las tiendas online en la actualidad se crean “a golpe de clic”, a través de plataformas de e-commerce – como Shopify o Prestashop – que te abstraen todo lo que hay debajo, permitiendo a cualquier persona crear su tienda online fácilmente. El problema radica, una vez más, cuando aparece algún error que nos impide operar la tienda en régimen normal, lo que implica que nos quedemos sin poder vender nuestros productos.

Una parte de la ecuación que puede fallar es el servidor. En la jerga decimos que el servidor “ha caído” (básicamente ha dejado de funcionar debido a algún problema), y esto supone que al visitar la tienda desde nuestro navegador web se nos quede la pantalla en blanco. Dentro de que es totalmente posible que esto pase (y de hecho han habido casos recientes de caídas masivas, como el fallo de AWS de octubre de 2025, que afectó a plataformas como Netflix o Slack), este suele ser el eslabón más fuerte de la cadena, porque los llamados proveedores de servicios en la nube, que gestionan estos servidores o centros de datos, se gastan cantidades ingentes de dinero en aplicar las estrategias que hemos visto anteriormente: soporte, redundancia, mantenimiento y seguridad, garantizando que el sistema sea altamente fiablev.

Los fallos que suelen dar más quebraderos de cabeza provienen de la capa de abstracción intermedia; es decir, de la plataforma de e-commerce. Especialmente críticas son las integraciones con paquetes desarrollados por terceros, como puede ser la plataforma de pagos o la gestión de los transportistas. Al estar todo desarrollado por terceras personas, la única arma que disponemos para tratar de arreglar el error interno es a través de un chat de soporte, que muchas veces deja mucho que desear. Yo mismo me las he visto y deseado con la plataforma Prestashop. Al final, nunca llegamos a ser capaces de poner la tienda en marcha.

En el caso de mi blog, me he saltado la capa de abstracción más débil, modificando el modelo mostrado anteriormente de la siguiente manera:

Estructura de capas crear un blog

Esto supone, como ya sabemos, que el nivel de conocimiento requerido para conseguir el mismo objetivo aumenta considerablemente, ya que tienes que saber programar. Además, si en un futuro quiero crear nuevas funcionalidades (como añadir otro idioma, o permitir que los usuarios se registren en una newsletter) tardaré bastante más tiempo que si utilizara una plataforma como WordPress (el equivalente a Shopify para páginas de contenido generalista). Sin embargo, este enfoque más manual de trabajar me permite tener un mayor control sobre lo que ocurre en las “entrañas” del sistema. Si se produjera un fallo en el programa, teóricamente, al haberlo desarrollado yo mismo, no debería tener grandes dificultades para corregirlo.

Este ejercicio que yo he realizado se puede llevar incluso un paso más allá, ya que también me podría encargar de la gestión y mantenimiento de una parte del servidor (lo que se conoce en informática como Infraestructura como Servicio (IaaS)). En mi caso, yo no controlo nada del servidor, y dejo en manos de mi proveedor de servicios asegurar que funcione correctamente (este nivel se denomina Plataforma como Servicio (PaaS)). Abstraer el mantenimiento del servidor no entraña ningún riesgo, pero sí implica un aumento de los costes, especialmente si tu sitio web empieza a suscitar interés y a tener picos de tráfico más elevados.

Conclusión final

En el siglo XXI hemos sido testigos de avances tan extraordinarios como la implantación del internet a gran escala, el auge de las redes sociales, la migración de los datos de las empresas del papel a la nube o la revolución de la Inteligencia Artificial. El partido se juega cada vez más en el “mundo virtual” – lo que propicia la aparición de más abstracciones – y los servidores y centros de datos son los que dan vida a esta nueva realidad.

Mi intención, tanto en esta entrega como en la anterior, ha sido abrirte un poco las puertas a este mundo ocultovi, con el objetivo de, primero, que tomes decisiones más informadas, y segundo, porque pienso que es positivo poner en valor tantas cosas (y personas) de las que no solemos ser conscientes, pero que trabajan cada día para hacer nuestras vidas más sencillas y cómodas.

Para terminar, me gustaría rescatar parte de una conversación, extraída de la película Matrix Reloaded, entre Neo y el Consejero Hamann. Dice así:

CH: “¿Has bajado hasta el nivel de la maquinaria?”

[Neo niega con la cabeza]

CH: “Me gusta pasear allí de noche. Es impresionante. ¿Quieres que bajemos?”.

Neo: “Sí”.

CH: “Aquí apenas baja nadie. A menos que haya un problema, claro. Somos así, no nos importa cómo funcionan las cosas mientras funcionen. Me gusta bajar aquí. Me gusta tener presente que la ciudad sobrevive gracias a estas máquinas.”

Nos vemos en el próximo blog.

Saludos,

José

Notas al pie

(i): La filosofía estoica o estoicismo, para quien no la conozca, es una escuela filosófica originaria del siglo III a.C. Sus enseñanzas giran en torno a cuatro virtudes principales: sabiduría, justicia, coraje y templanza.

(ii): En Lo que nunca cambia ya sugerí otra estrategia para “no quedarnos atrás” – a priori contraintuitiva – como es remar en la dirección opuesta a la ola dominante, poniendo el foco en intentar “masterizar” los principios que seguirán siendo válidos dentro de uno, diez o cien años.

(iii): La falta de claridad a la hora de comunicar ideas y conceptos es, en mi opinión, uno de los principales problemas que tenemos en la sociedad. Esto daría para otro artículo, pero si alguien está interesado en el tema puede investigar el concepto de “Propósito definido”, del autor Napoleon Hill.

(iv): Es una práctica extendida en el sector de la ingeniería diseñar sistemas que sean redundantes. Por ejemplo, un avión puede volar con un único motor funcionando.

(v): Los principales proveedores de servicios en la nube (Microsoft Azure, Amazon AWS y Google Cloud Platform) aseguran un tiempo de actividad – o fiabilidad – del servidor del 99,9%. Esto quiere decir que tu servidor solo dejará de funcionar unos 43,8 minutos por mes, o 8,77 horas en todo el año. Bastante impresionante.

(vi): Piensa en este entramado como si fuera un iceberg, en el que la capa de abstracción superior quedaría fuera de la superficie, y todas las demás abstracciones hasta llegar a los servidores (la inmensa mayoría del sistema) permanecerían sumergidas.