La ruta para aprender Full Stack Java

 

En los últimos años han aparecido innumerables cursos para aprender Full Stack Java.

Muchos comienzan directamente con tecnologías como:

  • Spring Boot
  • React
  • Docker
  • Kubernetes

Al finalizar el curso, el estudiante logra construir una aplicación.

Sin embargo, muchas veces no comprende realmente qué ocurre detrás de cada componente.

Personalmente, creo que el problema no está en los frameworks.

El problema es el orden en que se enseñan.

El primer paso no es Spring Boot

Antes de construir una aplicación Full Stack existe algo mucho más importante.

Aprender el lenguaje de programación.

En mi caso, esa ruta debería comenzar así.

1. Comprender el lenguaje

Antes de hablar de aplicaciones web es necesario dominar Java.

  • Variables.
  • Tipos de datos.
  • Operadores.
  • Métodos.
  • Condicionales.
  • Ciclos.

En esta etapa todavía no existe ninguna aplicación.

Solo se aprende a resolver problemas mediante código.

2. Aprender a pensar en objetos

Después aparece la Programación Orientada a Objetos.

No basta con conocer la sintaxis.

Hay que comprender conceptos como:

  • Clase.
  • Objeto.
  • Responsabilidad.
  • Colaboración entre objetos.
  • Encapsulación.

Es aquí donde comienza realmente el desarrollo de software.

3. Trabajar con estructuras de datos

Una aplicación rara vez trabaja con un único objeto.

Generalmente administra colecciones.

Por eso considero importante comprender:

  • Arrays.
  • List.
  • Map.
  • Set.

Y especialmente trabajar con listas de objetos.

Por ejemplo:

List<Producto> productos;

Ese tipo de estructuras aparecen constantemente en cualquier aplicación empresarial.

4. Construir aplicaciones de escritorio

Antes de pasar al desarrollo web considero útil construir aplicaciones con interfaz gráfica.

No por la tecnología en sí.

Sino porque permiten comprender conceptos fundamentales como:

  • Eventos.
  • Formularios.
  • Validaciones.
  • Separación entre interfaz y lógica de negocio.

Cuando un usuario presiona un botón ya existe una interacción entre la interfaz y el código.

Ese concepto será exactamente el mismo que más adelante encontraremos en una aplicación web.

5. Persistencia

Recién después incorporaría las bases de datos.

  • Modelo relacional.
  • SQL.
  • JDBC.
  • CRUD.

En este punto el estudiante ya comprende objetos.

Ahora aprende a almacenarlos.

6. Comprender HTTP

Solo ahora introduciría el desarrollo web.

Antes de utilizar un framework considero importante comprender:

  • HTTP.
  • Request.
  • Response.
  • Cookies.
  • Sesiones.

Porque todo framework web termina trabajando sobre estos conceptos.

7. Jakarta Servlets

Una vez comprendido HTTP resulta mucho más sencillo entender el papel de un Servlet.

El estudiante descubre que simplemente está recibiendo una solicitud, ejecutando lógica de negocio y generando una respuesta.

Ya no es una caja negra.

8. Arquitectura por capas

Ahora la aplicación comienza a tomar forma.

Vista
   │
Controlador
   │
Servicio
   │
Repositorio
   │
Base de datos

En esta etapa aparecen responsabilidades claramente definidas.

9. APIs REST

Recién después incorporaría APIs REST.

El estudiante ya entiende HTTP.

Ahora simplemente aprende una forma moderna de intercambiar información entre aplicaciones.

10. Frameworks

Solo al final introduciría herramientas como:

  • Spring Boot.
  • Micronaut.
  • Quarkus.

No porque sean malas tecnologías.

Todo lo contrario.

Porque ahora el estudiante comprenderá exactamente qué problemas están resolviendo.

Los frameworks dejan de ser cajas negras.

Se transforman en herramientas que automatizan conceptos que ya conoce.

Conclusión

No creo que el objetivo de un curso Full Stack sea enseñar la mayor cantidad posible de tecnologías.

Creo que el verdadero objetivo es formar desarrolladores capaces de comprender cómo funciona una aplicación.

Las tecnologías cambiarán.

Los frameworks evolucionarán.

Probablemente dentro de algunos años utilizaremos herramientas diferentes.

Sin embargo, los fundamentos seguirán siendo los mismos.

Por esa razón, en mi opinión, primero hay que aprender a programar, luego a diseñar software y finalmente a utilizar frameworks que automaticen parte de ese trabajo.


Creo que este artículo refleja bastante bien tu filosofía de enseñanza. No plantea que Spring Boot o React sean un problema; plantea que el orden del aprendizaje importa. Esa es una reflexión pedagógica que puede generar una discusión muy interesante entre docentes y desarrolladores, especialmente porque está basada en una progresión de conceptos y no en la defensa de una tecnología específica.

Comentarios

Entradas populares de este blog

Boleta Electrónica en Chile: Los 3 Ambientes del SII para Desarrolladores

Configurando Servlets y JSP en Jetty

GUIA GENERAL DE GENERACION DE DOCUMENTOS TRIBUTARIOS ELECTRONICOS