Las dos caras de la abstracción en diseño de sistemas: ocultar o reducir

En ingeniería de software se utiliza la palabra "abstracción" para designar dos prácticas muy distintas que suelen confundirse. Un análisis publicado por el blog técnico Muratbuffalo distingue entre la abstracción de modularidad, herencia de la carrera de ciencias de la computación, y la abstracción

Por qué existe la programación orientada a objetos

La programación orientada a objetos (OOP) no surge de una moda académica, sino de una necesidad práctica: organizar el código en torno a las entidades del mundo real que representa. Este artículo lo ilustra con un caso concreto: un proyecto universitario de gestión de bibliotecas en el que dos estud

Una selección de charlas sobre el oficio de programar

Charlotte, desarrolladora de software, comparte una selección curada de charlas grabadas sobre programación. La autora, que se autodefine como recién llegada al sector, aclara de entrada que sus recomendaciones se centran en el oficio de crear software —la mecánica de las buenas y malas abstraccione

Afirmar que programar esta resuelto es no entender la ingenieria de software

Afirmar que "programar está resuelto" es no entender la ingeniería de software Cada pocas semanas, alguien declara que programar está resuelto. Si se refieren a convertir un problema bien especificado en código que funciona, tienen parte de razón. Pero, ¿fue alguna vez escribir código ejecutable el

La ilusión de delegar los detalles: por qué la IA no sustituye al oficio

Detrás de buena parte del entusiasmo actual en torno a la inteligencia artificial late un anhelo recurrente: poder materializar ideas en resultados sin tener que sumergirse en los detalles del proceso. El ensayo sostiene que esa promesa es estructuralmente imposible, porque no existe un nivel de abs

Herramientas y técnicas para transmitir modelos mentales

La comunicación de modelos mentales —las representaciones internas que permiten comprender y usar un sistema— es un reto central de la educación y la ingeniería del conocimiento. Un hilo de discusión técnica explora qué métodos funcionan mejor para construir y transmitir esas estructuras cognitivas,

La abstracción equivocada: por qué duplicar puede ser mejor que abstraer

La programadora Sandi Metz sostiene que la duplicación de código resulta mucho más barata que una abstracción mal planteada, una afirmación popularizada en su charla de RailsConf 2014 "All the little things". El problema, describe, sigue un patrón reconocible: una programadora identifica código dupl

Software: ¿Abstracciones rápidas, problemas lentos?

El artículo de James Ludwell-Grymes, "Los Costos 'Ocultos' de las Grandes Abstracciones", explora una tendencia preocupante en el desarrollo de software: la creciente dependencia de abstracciones que, si bien aumentan la velocidad de desarrollo inicial, a menudo conducen a una comprensión superficia

Sistemas complejos: la brecha entre teoría y práctica

El artículo de Cambra.dev aborda un problema fundamental en el desarrollo de software moderno: la complejidad y fragilidad de los sistemas distribuidos. El autor, con una amplia experiencia en infraestructura de datos en empresas como Twitter, Google y Snowflake, observa una desconexión entre la ele

La 'pereza' útil: clave para un buen código

Este artículo explora una idea contraintuitiva: la importancia de la "pereza" en el desarrollo de software. Inspirado en la famosa declaración de Larry Wall en "Programming Perl" (el "Camel Book"), el autor argumenta que la verdadera pereza, entendida como la búsqueda de la simplicidad y la abstracc

Pruebas basadas en propiedades: más allá de lo básico

Este artículo profundiza en la verdadera naturaleza de las pruebas basadas en propiedades (Property-Based Testing o PBT), más allá de la definición superficial de 'propiedades' y 'generadores'. La idea básica es que PBT combina propiedades (condiciones que deben cumplirse para todas las entradas pos

TinyAPL: Combinadores impulsan la programación funcional

## Combinadores en TinyAPL: Funciones que Transforman la Programación Funcional ¿Qué son y por qué son importantes? En el mundo de la programación funcional, los combinadores son una herramienta poderosa y a menudo sutil. En esencia, un combinador es una función que *no modifica* sus argumentos o

Tipos y errores: un análisis de Map.take! en Elixir

Este artículo explora las limitaciones de los sistemas de tipos en lenguajes de programación dinámicos, utilizando como ejemplo la propuesta de una función `Map.take!/2` en Elixir. `Map.take/2` es una función existente en Elixir que extrae un subconjunto de claves de un mapa, ignorando las claves in

Level of Detail: Optimiza el desarrollo de software

Este artículo explora el concepto de 'Level of Detail' (LoD), originalmente utilizado en gráficos 3D para optimizar el rendimiento renderizando modelos con menos detalle a distancia, y lo aplica al desarrollo de software. La idea central es que, al igual que en gráficos, no siempre es necesario tene

Software redundante: el riesgo del 'efecto plataforma'

El 'efecto plataforma interna' (Inner-Platform Effect) es un patrón de diseño de software, considerado un anti-patrón, que ocurre cuando los arquitectos de sistemas crean soluciones tan personalizables que terminan replicando, de forma imperfecta, la plataforma de desarrollo que están utilizando. En

42 Años de Código: Un Programador Reflexiona

El artículo reflexiona sobre cómo ha cambiado la experiencia de programar a lo largo de 42 años. El autor, que comenzó a programar en 1983, recuerda una época en la que la programación era más íntima y comprensible, con un control directo sobre el hardware y la resolución de problemas. Con el tiempo