Porqué me gusta tanto el desarrollo web
Recuerdo que en mis primeros años de universidad una gracia bastante recurrente entre mis compañeros era decir que si no te querías complicar la vida con el PFC hicieras una página web. Éramos unos polluelos, y no podíamos estar más equivocados. El hecho de que existan formas de crear una página sin necesidad de programar (Ya sea utilizando un CMS o bien HTML con un editor WYSIWYG) no significa que todas las páginas deban ser sencillas. No es que me guste complicarme la vida, de hecho creo que un vicio bastante frecuente entre los desarrolladores es que somos muy perezosos (Gracias a ello encapsulamos funcionalidades en unidades más o menos reutilizables), lo que ocurre es que disfruto conjugando numerosas disciplinas de la informática. Y esa es precisamente la razón por la que adoro la web: Es un entorno totalmente heterogéneo donde [casi] toda la informática tiene cabida.
Los comienzos
Muchos hemos hecho nuestras primeras páginas web con aplicaciones para editar HTML. Es ahí cuando empiezas a descubrir lo útiles que son todos los controles de usuario como botones, cajas de texto, tablas, etiquetas o menús. Suele ser una lección precipitada de Interfáces Gráficas de Usuario. Sin embargo pronto necesitas tener más control sobre tu página, por lo que decides indagar en HTML y descubres las maravillas de los Lenguajes de Marcado, una forma muy sencilla de intercambiar información entre máquinas. A la vez, compruebas que no es una buena idea repetir tantas definiciones sobre cómo mostrar la web en cada uno de los ficheros, por lo que aprendes CSS, y lo que es más importante, comprendes la necesidad de separar en capas la información en sí, y el cómo se muestra. Pero no todo funciona como esperabas, ya que tu web no se comporta igual en todos los navegadores, y ahí es cuando descubres lo importante que es que exista un organismo regulador que establezca los estándares, el W3C.
Pero ahora no sólo quieres que tu página esté bien estructurada y que sea compatible con todos los navegadores, sino que además quieres que luzca bonita (Diseño Gráfico), que sea intuitiva (Usabilidad) y accesible a cualquier usuario (Accesibilidad).
Pasos intermedios
Pronto tu página empieza a crecer, y necesitas ahorrarte trabajo a ti y al usuario. Es cuando de verdad entra en juego la programación. Pero resulta que hay dos lugares en los que programar, en el servidor y en el cliente (Aprendes sobre la estructura cliente-servidor). En el lado del cliente utilizas JavaScript, que es un lenguaje de programación estructurado, y en el lado del servidor PHP, ASP, JSP, Ruby, Python o cualquier otro, la mayoría de ellos lenguajes orientados a objetos.
Y pronto surge la necesidad de almacenar información de una forma robusta, sencilla y escalable, y es cuando aprendes a Diseñar Bases de Datos y a generar consultas mediante SQL. ¡Ahora tus páginas sí empiezan a ser de verdad escalables! Independientemente de si eres el administrador o no del servidor de bases de datos, has aprendido numerosas nociones de qué es un Sistema Gestor de Bases de Datos Relacionales. Ahora estás utilizando una estructura de 3 capas: Cliente – Servidor de aplicaciones – Servidor BBDD.
Pronto necesitarás gestionar las sesiones de usuario, por lo que casi con total seguridad deberás aprender sobre las cookies, y querrás poder gestionar redirecciones, si tus páginas se deben almacenar en una memoria caché o mostrar errores de página no encontrada. En consecuencia, debes aprender sobre HTTP, que no es más que un Protocolo de Nivel de Aplicación. Además has aprendido cómo dotar de estado a un protocolo que no almacena estado.
Con el tiempo la lógica de las aplicaciones web que desarrollas empieza a ser más compleja, pero siempre hay patrones que se repiten, por lo que decides aprender más acerca de Patrones de Diseño, e incluso utilizas algún Framework de desarrollo. Puede que incluso decidas conocer alguna metodología de desarrollo como Programación eXtrema.
La cosa se complica
Un día tu página empieza a tener mucho tráfico, y tu alojamiento compartido se te queda pequeño. Entonces decides utilizar un servidor dedicado. Ahora no sólo tienes que gestionar tu página, sino que debes preocuparte por la seguridad de la red con un firewall y una buena política de permisos. Gestionarás el servidor de bases de datos, de correo electrónico, de páginas web, de ficheros, etc. Es decir, aprendes a gestionar servicios críticos, por lo que ya tienes nociones de administración de sistemas.
Además quieres poder interactuar con otras páginas, bien sea integrando su información, o facilitando la que tiene la tuya. En el segundo caso necesitas generar una API para que los demás puedan acceder a tu información, y a ser posible exportando en lenguaje como XML o JSON.
Luego deseas optimizar tu página para que sea más veloz, y entonces empiezas a utilizar servidores de caché.
Aquí ya hablo desde la inexperiencia total, pero imagino que llega un momento en que tu página debe estar alojada en un cluster (Computación Distribuída) para poder delegar todo el tráfico a distintos servidores y obtener tolerancia a fallos.
Resumiendo
En el desarrollo web tienes la posibilidad de aprender y conjugar:
- Interfáces Gráficas de Usuario
- Lenguajes de Marcado
- Separar en capas
- Estándares Web
- Diseño Gráfico
- Usabilidad
- Accesibilidad
- Estructura cliente-servidor
- Lenguajes de Programación Estructurados
- Lenguajes orientados a objetos
- Diseño de Bases de Datos
- SQL
- Sistema Gestor de Bases de Datos Relacionales
- Protocolos de Nivel de Aplicación
- Aplicaciones web
- Patrones de Diseño
- Frameworks de desarrollo
- Seguridad de la red
- Administración de sistemas
- APIs
- XML o JSON
- servidores de caché
- Computación Distribuída
- Tolerancia a fallos
- Y un largo etcétera
¿Y quién dijo que hacer páginas web era una cosa sencilla?