Algoritmo
AlgoritmosSecuencia finita y ordenada de pasos que resuelve un problema. Dos algoritmos correctos pueden diferir enormemente en coste: compararlos es el trabajo de la notación Big-O.
Ver también: Big-O
Vocabulario compartido
24 términos que aparecen una y otra vez en documentación, entrevistas y conversaciones de equipo, explicados sin rodeos.
Secuencia finita y ordenada de pasos que resuelve un problema. Dos algoritmos correctos pueden diferir enormemente en coste: compararlos es el trabajo de la notación Big-O.
Ver también: Big-O
Application Programming Interface: el contrato que expone un sistema para que otros lo usen sin conocer su interior — funciones de una librería, endpoints HTTP de un servicio, o la interfaz pública de una clase.
Ver también: Idempotencia
Árbol donde todo lo que cuelga a la izquierda de un nodo es menor y lo de la derecha mayor: busca, inserta y borra en O(log n) si está equilibrado. Insertar datos ya ordenados lo degenera a una lista O(n) — de ahí los árboles autoequilibrados (AVL, rojo-negro) de las librerías estándar.
Ver también: Lista enlazada, Índice (base de datos), Big-O
Notación que describe cómo crece el coste (tiempo o memoria) de un algoritmo cuando crece la entrada, ignorando constantes. O(1), O(log n), O(n), O(n log n), O(n²)… describen formas de crecimiento, no segundos.
Ver también: Algoritmo, Complejidad espacial
Almacén rápido de resultados ya calculados u obtenidos, para no repetir el trabajo. Sus dos problemas eternos: decidir qué expulsar cuando se llena (políticas como LRU) y saber cuándo un dato guardado dejó de ser válido (invalidación).
Ver también: Idempotencia
Memoria extra que necesita un algoritmo en función del tamaño de la entrada, expresada en notación Big-O. Un algoritmo "in situ" usa O(1) espacio adicional.
Ver también: Big-O
Bug en el que el resultado depende del orden no determinista en que dos procesos o hilos acceden a un recurso compartido. Difícil de reproducir por naturaleza; se previene con exclusión mutua, atomicidad o inmutabilidad.
Ver también: Inmutabilidad
Unidad de empaquetado que agrupa una aplicación con todas sus dependencias y se ejecuta aislada sobre el kernel del sistema anfitrión (Docker es la herramienta más conocida). Garantiza que "en mi máquina funciona" también valga en producción.
Ver también: Pipeline (CI/CD)
Coste futuro de las decisiones que aceleran el presente: atajos, diseño aplazado, tests ausentes. Como la financiera, cobra intereses — cada cambio posterior cuesta más — y se gestiona: se registra, se prioriza y se paga a plazos con refactorización.
Ver también: Refactorización
Propiedad de un algoritmo de ordenación que conserva el orden relativo de los elementos con la misma clave. Permite componer ordenaciones sucesivas (por fecha y luego por cliente = agrupado y cronológico). Merge sort es estable; quicksort clásico, no.
Propiedad de una operación que produce el mismo resultado aunque se ejecute varias veces. Fundamental en APIs y sistemas distribuidos: permite reintentar sin miedo a duplicar efectos (cobrar dos veces, crear dos pedidos).
Ver también: API
Estructura ordenada aparte (habitualmente un árbol B) que mapea valores de una columna a la ubicación de sus filas: convierte búsquedas O(n) en O(log n) a cambio de escrituras algo más lentas y espacio en disco. La mejora de rendimiento con mejor relación esfuerzo/resultado en SQL.
Ver también: Big-O, Transacción
Diseño en el que los datos no se modifican tras crearse: cada cambio produce una copia nueva. Elimina categorías enteras de bugs (nadie muta lo que compartes) y simplifica la concurrencia, a cambio de más asignaciones de memoria.
Ver también: Condición de carrera
JSON Web Token: credencial autocontenida y firmada que un servicio puede verificar sin consultar un almacén central. Está firmado, no cifrado — cualquiera puede leer su contenido — y revocarlo antes de que expire es difícil: dos propiedades que conviene no descubrir en producción.
Secuencia de nodos dispersos en memoria, cada uno con su valor y un puntero al siguiente. Inserta y borra en O(1) si ya tienes el nodo, pero accede en O(n) y pierde la localidad de caché del array — por eso brilla en patrones concretos (LRU, deques) y no como opción por defecto.
Cadena automática de etapas que se ejecuta en cada cambio de código: build, tests, análisis estático y despliegue. Si una etapa falla, la cadena se corta — es la puerta de calidad que mantiene la rama principal siempre desplegable.
Ver también: Contenedor, Test unitario
Cambiar la estructura interna del código sin cambiar su comportamiento observable, en pasos pequeños y verificables. Su red de seguridad son los tests: sin ellos, no estás refactorizando — estás editando y cruzando los dedos.
Ver también: Deuda técnica
Valor aleatorio, único por usuario, que se combina con la contraseña antes de aplicar el hash. Hace que dos contraseñas iguales produzcan hashes distintos e inutiliza las tablas precalculadas (rainbow tables). Los algoritmos modernos (bcrypt, Argon2) lo incorporan automáticamente.
Ver también: JWT
Cinco heurísticas de diseño orientado a objetos: responsabilidad única, abierto/cerrado, sustitución de Liskov, segregación de interfaces e inversión de dependencias. Todas variaciones de la misma idea — piezas con un propósito claro y dependencias apuntando hacia lo estable.
Ver también: Refactorización, Deuda técnica
Test-Driven Development: escribir primero un test que falla (rojo), el código mínimo que lo pasa (verde) y limpiar después (refactor). Más que una técnica de testing es una disciplina de diseño — el ciclo corto obliga a crear unidades pequeñas y desacopladas.
Ver también: Test unitario, Refactorización
Prueba automática de una unidad de código (función, clase) aislada de sus dependencias. Rápido (milisegundos), determinista y preciso al señalar fallos: la base de la pirámide de testing y la red de seguridad que hace posible refactorizar sin miedo.
Ver también: TDD, Refactorización
Grupo de operaciones de base de datos que se ejecuta como una unidad atómica: o todas se aplican o ninguna. Las garantías ACID (atomicidad, consistencia, aislamiento, durabilidad) protegen los datos frente a fallos a mitad de camino y accesos concurrentes.
Ver también: Índice (base de datos), Condición de carrera
Work In Progress: la cantidad de tareas empezadas y no terminadas. Limitarlo es la práctica central de Kanban — menos trabajo a medias significa entregas más rápidas (ley de Little) y cuellos de botella visibles. Quince cosas "en curso" es la firma de un equipo que no termina.
Ver también: Deuda técnica
Cross-Site Scripting: inyectar script en una página para que se ejecute en el navegador de otros usuarios, con su sesión. La defensa es escapar en la salida (los frameworks lo hacen por defecto), sanitizar el HTML enriquecido con allowlist y cookies HttpOnly + CSP como redes extra.