Programar aburre, porque tendemos a programar lo mismo una y otra vez. Así, muchos caen en la tentación de buscar en exceso maneras de reducir el código. Dijo Wirth que algoritmos más estructuras de datos igual a programas; y cabe añadir que en la mayoría de programación web, poco algoritmo hay- así que con definir el esquema de datos, poco más deberíamos hacer, ¿no?
Estos días me he encontrado frente a una web sencilla, pero que a mi juicio no era adecuada realizarla con un CMS (puede que en gran parte porque no he encontrado un CMS que me guste) y me he decidido a probar Django. Django es un framework Python cuyo lema es "batteries included"; alusión al hecho de que resuelve una gran parte de los problemas típicos de desarrollo web- cosa que certifico y a la que añado que los resuelve a mi gusto. El otro gran qué de Django es la interfaz administrativa que trae; mediante unas líneas declarativas, obtienes una web de gestión que permite añadir, editar, eliminar, etc. entidades del modelo de datos, reduciendo en una gran parte el trabajo que le queda a uno.
¿A parte de esto, qué otras virtudes tiene Django?
Pero también le encuentro algún que otro defecto:
A pesar de esto, creo que es el mejor "framework completo" que he visto. Como plataforma "básica", sigo prefiriendo Java + Spring + Servlets + JSP + JSTL, pero creo que Django puede tener un lugar bastante importante en el arsenal de un desarrollador web. La pregunta es, ¿cuál es ese lugar?
En mi opinión, Django ofrece una velocidad de desarrollo elevadísima para proyectos pequeños y medianos (siempre que no nos topemos con alguno de sus problemas). Para cosas gordas y/o que no encajen bien en Django, es lo de siempre; ¿hacerlo de cero o partir de un framework? Hacerlo de cero lógicamente es más tiempo, pero uno acaba conociendo intimamente la plataforma que hace y está toda a su gusto; usar un framework nos puede ahorrar tiempo, pero al hurgar dentro, a saber qué nos encontramos. Sospecho que las entrañas de Django están muy bien, pero... la decisión sigue siendo difícil. Mi poco amor por Python hace que probablemente yo no vaya a a apostar por Django más que para proyectos rápidos, pero intuyo que para muchos será una decisión más que acertada.