Vocabulario compartido

Glosario

24 términos que aparecen una y otra vez en documentación, entrevistas y conversaciones de equipo, explicados sin rodeos.

A

Algoritmo

Algoritmos

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

API

Arquitectura de software

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 binario de búsqueda (BST)

Estructuras de datos

Á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

B

Big-O

Algoritmos

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

C

Caché

Arquitectura de software

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

Complejidad espacial

Algoritmos

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

Condición de carrera

Seguridad

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

Contenedor

DevOps y CI/CD

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)

D

Deuda técnica

Metodologías

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

E

Estabilidad (ordenación)

Algoritmos

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.

Ver también: Algoritmo, Big-O

I

Idempotencia

Arquitectura de software

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

Índice (base de datos)

Bases de datos

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

Inmutabilidad

Buenas prácticas

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

J

JWT

Seguridad

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.

Ver también: API, Salt

L

Lista enlazada

Estructuras de datos

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.

Ver también: Caché, Big-O

P

Pipeline (CI/CD)

DevOps y CI/CD

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

R

Refactorización

Buenas prácticas

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

S

Salt

Seguridad

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

SOLID

Buenas prácticas

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

T

TDD

Testing

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

Test unitario

Testing

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

Transacción

Bases de datos

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

W

WIP (trabajo en curso)

Metodologías

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

X

XSS

Seguridad

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.

Ver también: JWT, Salt