Breve introducción

Cualquier desarrollador web estará de acuerdo conmigo en que elegir la tecnología apropiada a la magnitud, complejidad y características de cada proyecto es de una importancia difícil de sobrevalorar. Además, es lo primero que debe hacerse incluso antes de comenzar a trabajar en un proyecto. Por eso, he decidido estrenar mi blog comenzando por el principio, es decir, hablando sobre estrategias de desarrollo web.

WordPress, CMS y todo lo demás

WordPress, gracias a su enorme comunidad de desarrolladores de plugins, es muy útil para crear blogs y páginas web con docenas de funcionalidades. Si además le instalas WooCommerce o plugins similares también puedes hacer tiendas on-line más que decentes. En mi opinión, la versatilidad y sencillez de Wordpress y de otros CMS por el estilo, deja poco espacio para cualquier otra plataforma de desarrollo web salvo en algunos casos puntuales:

  • Desarrollo de webservices
  • Desarrollo de aplicaciones web o aplicaciones híbridas a medida
  • Desarrollo de pequeñas webs, landing pages o incluso blogs con contenido principalmente estático

Webservices y apps para usos específicos

Si, por ejemplo, uno desea desarrollar un webservice o una app social, un nuevo facebook, una nueva wikipedia o incluso un nuevo WordPress, donde el back end (lo que no se ve) nos va a llevar muchas semanas de desarrollo, lo más apropiado es utilizar un framework, cuya raison d’être es, precisamente, ayudarnos a escribir el menor número de líneas de código posible, en el menor tiempo posible, para realizar todas las tareas necesarias (consultas a base de datos, validación de datos, servir páginas, enviar correos…).

En estos casos yo recomiendo utilizar cualquiera de los frameworks más populares basados en cualquiera de los lenguajes de programación que uno domine, por ejemplo: Laravel si uno está familiarizado con PHP o Ruby on Rails (aka RoR) si uno maneja Ruby.

Aunque yo soy un fan confeso de Laravel, cualquier framework es una buena opción si consta de una comunidad de desarrolladores lo suficientemente grande como para permitirnos encontrar fácilmente tanto plugins adicionales como respuesta a problemas que nos puedan ir surgiendo.

Blogs, webs corporativas…

Si, por otro lado, uno desea hacerse un blog personal o una pequeña página corporativa o, en general, cualquier web con contenido principalmente estático, a mi parecer, tiene tres opciones:

  1. La primera opción es usar WordPress, Magento, Drupal o cualquier otro CMS popular, con los que podremos customizar las plantillas y editar nuevos contenidos a una velocidad muy razonable. Por contra, los contenidos se servirán bastante lentamente en relación al poco peso que en realidad tienen y el CMS en sí probablemente consumirá muchos más recursos del servidor de los estrictamente necesarios, lo cual hay que tener en cuenta si nuestro cliente o nosotros mismos pagamos un hosting a razón de los servicios que ofrece (PHP, SQL) o los recursos que consume (tráfico de datos, CPU, RAM, disco duro).

  2. La segunda opción, óptima para webs-anuncios, landing pages o pequeñas webs corporativas con 2-5 páginas distintas, es sencillamente personalizar algún template html/css/js existente. Al respecto, los templates basados en Bootstrap y similares son ideales: fáciles de entender, responsive…

    El desarrollo de proyectos bajo este enfoque tan sólo nos debería llevar 1-2 jornadas de trabajo, incluyendo la optimización de la velocidad de carga y el SEO básico. El resultado debería ser una web extremadamente optimizada y que consumirá los recursos estrictamente necesarios.

    La única pega de este enfoque es que agregar una nueva página no supondrá ningún ahorro de tiempo respecto a la anterior. Por tanto, si hubiese que hacer muchas páginas o si quisiéramos ciertas funcionalidades complejas (de blog, de e-shop…), esta opción seguramente no sería la más eficiente a medio plazo.

  3. La tercera y última opción es utilizar Jekyll o algún otro generador de sitios estáticos similar, a los que sólo hay que pasarles el contenido de cada página convenientemente estructurado (por ejemplo, con markdown). Estas aplicaciones generan y actualizan, incluso en tiempo real, la totalidad de nuestro sitio web conforme uno lo escribe en cualquier editor de texto o IDE favorito.

    Los sitios así generados no requieren del propio generador para ser servidos, con lo cual en nuestro entorno de producción no es necesario tener bases de datos, ni Ruby, PHP o Node… lo que implica un consumo de recursos mínimo, con el consiguiente ahorro en tiempos de configuración, problemas y dinerito.

En resumen

Sin olvidar las respectivas ventajas/desventajas comentadas más arriba la cosa quedaría tal que así:

Type of project vs Technology Framework CMS Static site generator Template
Simple static content  
Standard site      
Custom app      

Estoy seguro de que me dejo en el tintero un montón de tecnologías aplicable a tipologías de proyectos muy variadas. A bote pronto me vienen a la mente la gran cantidad de CMS que existen para montar portales, e-shops o blogs y que no he mencionado o los múltiples frameworks basados en Python, Javascript o Java, para realizar aplicaciones de todo tipo. ¡Te animo a que me sugieras todas las tecnologías que tú conoces y consideres excepcionalmente buenas!