Mi primer contacto con el desarrollo web se produjo hace unos 5 o 6 años mientras estudiaba octavo o noveno grado. Allí nos enseñaron HTML (y sólo HTML, nada de CSS) en la clase de Informática. Me sentía orgulloso escribiendo mi sitio web en Notepad y enlazando de una página a otra. Hasta veía con agrado a ``, `` y compañía, sin tener idea de que ya eran obsoletas. En fin, aprendí un par de cosas por mi cuenta pero no le presté gran atención. Avanzamos hasta 2010, cuando empecé a estudiar Ingeniería en Electrónica en la universidad. En ese año conseguí también un trabajo a medio tiempo en una empresa de informática (gracias a un familiar). Nada importante, realmente no tenía un cargo definido, sólo estaba para ayudar en lo que se pudiera; lo que incluía un poco de bases de datos, configuración de redes, máquinas virtuales, entre otras. Eventualmente alguien dijo que la empresa necesitaba hacer su propio sitio web, y yo parecía ser el indicado; no tanto por tener una gran experiencia, sino porque era el que tenía más tiempo libre y podía trabajar en tareas de prioridad baja. ### GUIs e instaladores one-click ### Resulta que contábamos con un servidor Windows Server 2008 R2. Y como Windows había, en Windows iba a trabajar. Me presentaron a un CMS (para mí que es framework por el tamaño y alcance que tiene): [DotNetNuke](http://www.dnnsoftware.com/). Es increíble la cantidad de cosas que puede hacer desde el navegador, en serio. Bastaba con instalarlo desde [Web Platform Installer](http://www.microsoft.com/web/downloads/platform.aspx) y darle acceso a una base de datos MS SQL y listo. Infinidad de extensiones, temas y más con instaladores de un clic y cosas por el estilo. Honestamente, me pareció fabuloso cuando me lo presentaron. Y así comencé a andar, lejos todavía del código fuente, interactuaba con el servidor nada más a través de interfaces de administrador en el navegador. Sin embargo, con el tiempo se hizo evidente que el control granular no era posible. ¿Cómo exactamente se estaban poblando las tablas de la base de datos? ¿Por qué cuesta tanto tener páginas sin extensión .aspx? ¿Dónde está el stylesheet que controla el color del borde de tal o tal elemento? Parecía que alguien en algún lugar había desarrollado y empaquetado una extensión para lo que yo quería hacer, pero las que verdaderamente valían la pena eran demasiado caras y requerían una cantidad de *overhead* increíble. > Umbraco: "Un invaluable CMS por el precio de casi nada". Tiempo después y por las razones anteriores me moví a [Umbraco CMS](http://umbraco.com/). Recuerdo que me gustó ver que tenía control total sobre la salida HTML y los recursos estáticos como CSS y JS de todas mis páginas. Era mucho más fácil también crear aplicaciones a medida con sus *tipos de datos* y acoplarlas entre sí. Sin embargo, mientras me adentraba en el mundillo Umbraco ocurrió el [fiasco de la versión 5](http://umbraco.com/follow-us/blog-archive/2012/6/13/v5-rip.aspx). Recuerdo que tenía un proyecto casi listo para producción cuando anunciaron que iban a retirarla. Parecía que lo que había aprendido para mantenerme lo más actualizado posible hubiera sido en vano. ### Del otro lado de verja ### Para ese entonces ya estamos a mediados de 2012, y tenía varios años de usar [Ubuntu](http://www.ubuntu.com) como mi sistema operativo principal; pero me veía forzado a pasar en Windows por DNN y Umbraco. Me entró curiosidad por conocer los CMS que corrieran en stacks completamente *open source*, y me encontré por supuesto con Wordpress, Drupal, Joomla y demás. Me parecían igual que los otros dos: muy potentes, con sus repositorios de innumerables extensiones y temas, pero pensados para el usuario final, no para un desarrollador. Me quedó claro que lo que estaba buscando no debía tener "CMS" en el nombre. No recuerdo como escuché de [Django](http://www.djangoproject.com): "el framework para perfeccionistas con poco tiempo". De inmediato me dispuse a completar el [tutorial de la aplicación de *polls*](https://docs.djangoproject.com/en/1.5/intro/tutorial01/) y quedé encantado. Para empezar, la instalación era tan liviana (7 Mb para la versión 1.5 que se utiliza hoy), sin tremendos instaladores multi-paso. Un *tarball* y ya. Luego, la aplicación estuvo lista en muy poco tiempo, y me parecía algo realmente funcional, no un simple *Hello World* de adorno. > Django es capaz de deducir mucho a partir de muy poco. Tengo que admitir que lo que realmente me atrapó fue la filosofía. En cada paso del tutorial se aplicaban los principios [DRY](http://es.wikipedia.org/wiki/No_te_repitas) y [KISS](http://es.wikipedia.org/wiki/Principio_KISS), y el [Zen de Python](http://stackoverflow.com/a/454023/1330003) en general. También estaba claro en qué parte del flujo MVC *Model-View-Controller* me encontraba siempre porque Django anima a desarrollar con las partes de la aplicación lo más desacopladas que sea posible. No es que el framework te obligue a seguir [los principios](https://docs.djangoproject.com/en/1.5/misc/design-philosophies/), nada más da muy buenas razones (y recompensas) para hacerlo. Para terminar, sólo quiero aclarar que esta es mi opinión, y no pretendo ser quien juzgue que herramienta se debe usar. Probablemente las fallas que vi en otras fueron más mi inexperiencia que otra cosa. Sin embargo, si creo que la filosofía de Python y Django son componentes claves de su éxito, y sin duda, lo que me llevaron a mí a elegirlos. Así que esa es la historia de mi viaje desde HTML obsoleto hasta Django. ¿Cómo fueron tus primeros contactos con el desarrollo web? ¿Cuanto han cambiado las herramientas que usas? ¿Te sientes identificado con la forma de hacer las cosas de tu framework predilecto?