blog

Por qué aprender bases de datos cambió mi forma de ser desarrollador

Cuando comencé en el mundo del desarrollo, pensaba que lo más importante era dominar el framework de moda.

Jose Gratereaux

Jose Gratereaux

Author

Por qué aprender bases de datos cambió mi forma de ser desarrollador

Si hacía buenas APIs, si la aplicación funcionaba y si el frontend se veía bien, sentía que estaba haciendo un buen trabajo. Pero había algo que no entendía en profundidad: las bases de datos.

Sabía usarlas. Podía conectar con MySQL o PostgreSQL. Sabía ejecutar consultas simples. Incluso utilizaba ORMs sin problema.

Pero no las entendía realmente. Y eso, tarde o temprano, pasa factura.

El día que entendí que no sabía SQL

Recuerdo una aplicación que empezaba a ponerse lenta. No era nada exagerado al inicio, pero a medida que crecía la cantidad de usuarios, las respuestas tardaban más.

Mi primera reacción fue revisar el código del backend. Pensé que el problema estaba en la lógica, en algún cálculo mal hecho o en el servidor.

No era eso. El problema estaba en la base de datos.

Había una consulta que traía todos los registros de una tabla y luego filtraba en memoria. Funcionaba en desarrollo con pocos datos. En producción, con miles de registros, era un desastre.

Era algo como esto:

SELECT * FROM orders;

Y luego el filtro se hacía en el código.

Eso significa que el servidor traía absolutamente todo desde la base de datos, aunque solo necesitara una pequeña parte.

La versión correcta debió ser algo como:

SELECT id, customer_id, total_amount
FROM orders
WHERE status = 'COMPLETED'
AND created_at >= '2025-01-01';

En la segunda versión, la base de datos hace el trabajo pesado. Solo devuelve lo necesario. Menos datos transferidos, menos memoria usada, más velocidad.

Ahí entendí algo importante: saber escribir consultas SQL optimizadas no es opcional. Es fundamental.

El error clásico que muchos desarrolladores cometen

Otro problema que me encontré varias veces fue el famoso problema N+1.

Sucede mucho cuando usas ORMs como Entity Framework o Hibernate y no entiendes qué consultas se generan por debajo.

Imagina que quieres obtener una lista de usuarios y sus órdenes.

Una implementación incorrecta puede hacer algo así:

1 consulta para traer los usuarios. Luego 1 consulta adicional por cada usuario para traer sus órdenes.

Si tienes 100 usuarios, terminaste haciendo 101 consultas.

El enfoque correcto es utilizar un JOIN y resolverlo en una sola consulta:

SELECT u.id, u.name, o.id AS order_id, o.total_amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;

Una sola consulta. Mucho más eficiente.

Cuando entiendes cómo funcionan los JOIN, cambias la forma en que diseñas tus endpoints. Ya no programas “a ver si funciona”. Programas pensando en escalabilidad.

Por qué aprender bases de datos es clave si quieres ser desarrollador profesional

Si estás comenzando y quieres convertirte en desarrollador backend, frontend o fullstack, aprender SQL desde cero debería estar en tu lista de prioridades.

No importa si trabajas con bases relacionales como PostgreSQL o incluso con bases NoSQL como MongoDB. Necesitas entender cómo se almacenan los datos, cómo se relacionan y cómo se consultan de forma eficiente.

Las bases de datos son el corazón del software.

Cada login, cada compra, cada mensaje, cada reporte depende de una consulta bien construida.

Cuando entiendes eso, comienzas a:

  • Pensar en índices antes de que haya problemas.
  • Diseñar modelos de datos más limpios.
  • Reducir el consumo de recursos.
  • Evitar errores de integridad.

Y algo más importante: empiezas a pensar como ingeniero, no solo como programador.

Con el tiempo entendí que hacer que una base de datos sea rápida no depende solo del servidor donde esté instalada, sino de cómo está diseñada desde el inicio. Comprender conceptos como llaves primarias, llaves foráneas y relaciones entre tablas cambia completamente el rendimiento de una aplicación. Una llave primaria bien definida permite identificar registros de forma eficiente, y las relaciones correctamente modeladas evitan duplicidad y mantienen la integridad de la información. Cuando las tablas están mal estructuradas o las relaciones no tienen sentido, las consultas se vuelven más pesadas y el sistema comienza a degradarse sin que el desarrollador entienda por qué.

También descubrí la importancia de los índices y del diseño lógico de los datos. Un índice bien colocado puede hacer que una consulta que tarda varios segundos pase a ejecutarse en milisegundos. Pero si se abusa de ellos o se colocan en columnas incorrectas, también pueden afectar el rendimiento al insertar o actualizar información. Entender cómo la base de datos busca, ordena y filtra registros te obliga a pensar estratégicamente.

No se trata solo de que funcione, sino de que funcione bien incluso cuando la aplicación tenga miles o millones de registros. Esa mentalidad es la que realmente marca la diferencia entre un desarrollador que simplemente usa una base de datos y uno que sabe cómo hacerla trabajar a su favor.

La diferencia entre alguien que usa herramientas y alguien que entiende sistemas

Muchos desarrolladores pueden usar un ORM. Pero no todos pueden explicar qué es un índice, cuándo usarlo o por qué una consulta es lenta.

Cuando dominas bases de datos:

  • Ya no dependes completamente del framework.
  • Puedes leer un plan de ejecución.
  • Puedes detectar consultas ineficientes.
  • Puedes optimizar sistemas que otros consideran “misteriosamente lentos”.

Eso te convierte en alguien valioso.

Y en el mercado laboral actual, ser valioso es lo que marca la diferencia.

Si estás empezando, este es mi consejo

No veas las bases de datos como algo aburrido o secundario. No lo dejes “para después”.

Aprende SQL. Practica consultas reales. Crea tus propias tablas. Inserta miles de registros y experimenta qué pasa cuando no usas índices. Rompe cosas a propósito y entiende por qué se rompen.

Porque cuando dominas las bases de datos, tu forma de construir software cambia para siempre.

A mí me pasó.

Y probablemente, si decides tomártelo en serio, también te pasará a ti.

Jose Gratereaux

Jose Gratereaux

I'm a software engineer specialized in Laravel, building modern web applications and sharing what I learn along the way. If you enjoyed this post, consider following me on GitHub.