Symfony, wordpress o php desde 0

Este post es una reflexión sobre si realmente utilizar un framework es el camino para desarrollar aplicaciones web o es mejor utilizar un cms como WordPress o quizá una estructura de clases propia que reutilicemos en los futuros proyectos que afrontemos.

Utilizar un framework como Symfony

Para mí, adoptar Symfony como framework ha sido una de las mejores decisiones que he tomado en mi historia como desarrollador web.

Symfony es un framework excelente, muy personalizable, extendible y automatizado que además, te enseña a programar bien.

¿Qué es programar bien? Para empezar, usar patrones de diseño, aprovechar todas las ventajas que ofrece la POO al máximo posible ademas de, por encima de todo, evitar repetirte.

Symfony no es el único framework que permite esto, también Zend es otra opción excelente.

Sin embargo, en los últimos meses he tenido la oportunidad de participar en proyectos fuera de las necesidades comunes. Ya sea por rendimiento o por la naturaleza de la aplicación, teníamos que especializar bastante funcionalidad del core de symfony, aprender casi de memoria los parámetros de los archivos .yml de configuración o incluso, extender el framework para que cumpliese con los requisitos de la arquitectura de sistemas.

Esto supone en algunos casos muchas horas más que en un proyecto de php digamos “sin framework”, pero una vez conseguido el tiempo se reduce en la próxima ocasión que te encuentras con el mismo problema, si lo haces.

Hay pequeñas situaciones en las que debemos invertir tiempo para desarrollar pensando en el framework para obtener funcionalidad que sería trivial en un entorno sin framework. Sin embargo en general compensa porque nuestro código queda totalmente integrado con una arquitectura que tiene un nivel muy alto de calidad.

Pero otro problema aparece cuando de repente se anuncia una nueva versión del framework y empiezas a ver que todo lo que has aprendido en la versión 1, es completamente distinto en la versión 2. Esto es algo bastante costoso de asumir para los desarrolladores ya que algunas de las ventajas más importantes de utilizar un framework son precisamente las que en este caso, se ha puesto en contra de todos nosotros:

  1. Todos habíamos aprendido a programar en nuestro día a día pensando en symfony, con sus configuraciones y la nomenclatura de sus clases.
  2. Todos conocíamos perfectamente los nombres de los directorios, archivos de configuración y comportamientos de los métodos que se usan en las clases más importantes del framework, así como dónde teníamos que encontrar los recursos de documentación necesarios para nuestro día a día.
  3. Habíamos desarrollado código reutilizable como plugins, concepto que desaparece en la próxima versión.

Estos puntos son los más negros que quizá se puedan encontrar a la hora de decidirse por un framework que no sea uno nuestro propio. Sin embargo y a pesar de los mismos, creo que en general es una decisión muy buena el optar por un framework de desarrollo.

Utilizar un CMS como WordPress

Otra opción que existe es optar por un cms como WordPress. Hablo de WordPress porque es el que más conozco a “bajo nivel”. Si estás acostumbrado a utilizar un framework como Symfony, tienes la sensación al desarrollar bajo una plataforma para nada óptima (en cuanto a rendimiento se refiere) y que se salta a la torera cientos de recomendaciones sobre cómo desarrollar en un entorno POO.

Sin embargo el sistema funciona para la mayoría de proyectos medios o básicos, los diseñadores están encantados con él y ya lo conocen debido a la facilidad de uso de su sistema de themes, funciona sin tener que tocar prácticamente nada en la mayoría de plataformas de hosting y cubre con la necesidad funcional de todo sitio medio que no tenga necesidad de un desarrollo continuado.

Aunque sea una opción poco óptima fuera de la caja, en Blackslot tenemos corriendo varios sitios con decenas de miles de visitas al día basados en esta plataforma, con ayuda de soluciones de caché internas, teniendo aún margen para escalar a bastante más tráfico sin demandar grandes cantidades de recursos de servidor.

El problema reside más bien en el tipo de funcionalidad que quieres afrontar con el cms y la calidad que esperas obtener con el mismo. Yo no desarrollaría una intranet en WordPress por ejemplo, ni una plataforma de tienda electrónica para un negocio que dependa exclusivamente de esta plataforma para funcionar.

Utilizar PHP desde 0

Aunque durante muchos años he defendido el utilizar php sin frameworks hoy en día lo desaconsejo por completo.

Hace años no existía ninguna opción seria para php equiparable a un entorno .net por ejemplo. Hoy en día hay tantos que cuesta elegir.

No digo que debas elegir una de las opciones más maduras disponibles (que para mí sólo hay dos: Zend o Symfony). Lo que digo es que a menos que tu negocio sea una sola web y tengas el foco y todo tu tiempo puesta en ella, necesitas un framework para conseguir sobre todo estos puntos:

  1. Desarrollar con más programadores en el mismo proyecto sin que sea un caos.
  2. Trabajar con más gente en el mismo proyecto. A diferencia del punto 1, tienes que tener en cuenta a diseñadores, maquetadores, analistas, gente de sistemas..
  3. Tener una base reutilizable que os ahorre, a medida que desarrolléis con la misma, más y más tiempo.
  4. Conseguir automatizar las tareas más repetitivas y centrarte en el código específico de la aplicación que te ocupe en ese momento.

Aunque creas que lo mejor es ponerte a desarrollar un framework propio desde el principio, merece la pena conocer los frameworks que existen para aprender de miles de desarrolladores que han tenido muchos más problemas y por lo tanto tienen más experiencia que tú.

Desarrollar un framework sin haber utilizado otro antes como Symfony o asp.net mvc es una tarea muy compleja que puede hacerte perder mucho tiempo. Actualmente no es casualidad que Ruby On Rails, Symfony, asp.net mvc y otras opciones para desarrollo web escritas en diferentes lenguajes se parezcan entre sí. Esto es porque los problemas que nos solemos encontrar en el día a día son los mismos y es muy bueno conocer alguno de estos frameworks al detalle para orientarte sobre cómo debes organizar la arquitectura de una aplicación web seria.

En mi caso, incentivado por el cambio de versión de Symfony y por algunas de las cosas que no me han gustado o que he visto demasiado complejas en el mismo para solucionar determinados problemas, he empezado a diseñar y desarrollar en mis tiempos muertos un framework mucho más ligero y simple que Symfony pero pensado tanto para entornos tanto de hosting compartido como para arquitecturas más complejas.

Sin embargo no voy a dejar de utilizar ni Symfony ni WordPress. Me encanta Symfony y muchas de las cosas que he aprendido con este framework las estoy aplicando en este proyecto e incluso utilizo alguno de sus componentes. WordPress por su parte es la mejor opción para reducir costes en determinados proyectos que no requieran ni complejidad ni funcionalidad fuera de lo que se espera de un sistema de publicación.

24 comentarios en “Symfony, wordpress o php desde 0”

  1. Muy buen post.. también he tenido el mismo recorrido.. el primer framework q dominar fué también symfony.. y realmente también me cuesta saber que hay grandes cambios para su nueva versión, ya que le quita la magia que tenía.. pero esto mismo será para bien tanto en velocidad.. como flexibilidad.. pasando de ser implícito a ser un framework más explícito.. lo segundo que aprendí no fué wordpress.. sino Drupal.. por ser más liviano y más potente.. y también ya dejé de ser purista.. este post espero q le ayude a alguien como me hubiera ayudado a mi hace un par de años.. :D

    1. Gracias por el comentario Mario,

      La verdad es que a mí la idea de que sea explícito me gusta bastante y que gane velocidad era algo prioritario y muy necesario.

      Por lo poco que he visto, hiciste bien en aprender Drupal, es de los pocos que he visto que estén decentes por dentro. Sin embargo para los usuarios no resulta tan atractivo o al menos eso parece. En España tenemos mucha más demanda de proyectos bajo WordPress.

      Un saludo ;)

  2. Creo que concuerdo con miguel este post hace unos años atrás nos hubiera ayudado a varios, en mi caso yo descubrí primero Joomla, luego drupal y por el último y más flexible para mi es WordPress, aunque han tardado en pensar en migrar a php 5 ya será realidad en unos meses.

    Yo intente probar varios frameworks pero nunca siempre le faltaba algo, como que me sentía encerrado y limitado en ciertas cosas, por eso a mí me había gustado lo flexible de wordpress así que diseñe si se le podría decir un framework bien simple con las características de wordpress para ayudarme a reutilizar lo en varios proyectos más complejos.

    Probare Symfony, pero como les digo como que el mejor framework para mi es el que haces tu mismo.

    Saludos

  3. Muy buen artículo Asier.

    Yo también estoy muy contento de haberle dado caña a Symfony este año porque como tu bien dices te obliga a programar bien y sobre todo, cada minuto que le dedicas a aprender los entresijos es tiempo de desarrollo multiplicado por 10 que te quitas.

    Me quedan muchísimas cosas por aprender y no he bajado tan abajo como tú pero sin lugar a dudas lo que se me ha servido muchísimo.

    ¡Feliz año!

    1. Feliz año Iván! Veo que tenéis una pizzería en Bilbao ya :P

      Coincido contigo, desarrollar en Symfony es toda una experiencia y desde luego yo no voy a dejar de hacerlo.

      Saludos!

      1. Love the list! Also reminds me of when I bought a 386 Packard Bell computer from Montgomery Ward in the mid 90's and the saeorpessln told me my 800KB hard drive was more than I will ever need!

  4. Hola Asier,
    Estos planteamientos me los hago muchas veces, ¿frameworks, cms o desarrollo desde 0?.
    Y siempre me respondo que cualquier solución que me aporte algo para el futuro. Por ejemplo creo que desde el punto de vista de la programación Symfony me enseña unos conocimientos (POO, Patrones) que WordPress o Drupal por ejemplo no lo hace.
    Si el día de mañana estas herramientas no existen, los conocimientos adquiridos con Symfony, por ejemplo, me serán de más utilidad que los adquiridos con WordPress/Drupal.

    Saludos!

    1. Hola David,

      La verdad, conozco a mucha gente que se convirtió en el pasado en un auténtico “crack” de una herramienta o un entorno (asp3.0, as400, visual fox pro..) pero ahí se quedaron.

      Tienes mucha razón en lo que dices y es algo que yo también valoro en este framework, te enseña algo más que a usar el mismo y eso es una inversión.

      Un abrazo!

  5. Buenas,
    Creo que hay un camino intermedio, que son los CMS o CMF basados en Symfony.
    Nos pueden dar las ventajas de los CMS y las de Symfony.
    De momento yo no me he puesto con las dos alternativas principales que hay (que yo conozca) en Symfony 1.4 (Diem y Apostrophe), quizás por estar tan cerca Symfony2, y porque esto:
    http://cmf.symfony-project.org/
    da muy buen rollo y buenas expectativas, y espero que salga de ahí algo muy interesante.
    Un saludo,
    Edu

  6. Hola

    Estoy empezando a entrar en este apasionante mundo de la programación web mas que nada por una cosa de armar mi propia start up.

    Estoy empezando a programar en PHP y estoy buscando un framework para apurar el trabajo.

    Recomiendas lanzarse con Symfony desde ahora o recomiendas mejor aprender bien PHP y de ahi saltar a Symfony ? Necesito una guia al respecto.

    Muchas gracias

  7. Hola amigo Asier, veo que tu blog es uno de los pocos de ser tenidos en cuenta, de los muchos que hay en internet, realmente veo que es cosa seria…
    Bueno, soy un desarrollador joven, apenas tengo 25 años, y ultimamente estoy usando un CMS como Joomla, pues aca en Peru se trabaja mas con ese CMS, la pregunta es:
    ¿Que me aconsejas, tu que tienes mas estudios que yo?, pues porque humildemente solo soy programador y diseñador web… me quedo con Joomla , o Drupal es mas potente?
    Gracias, un saludo desde Peru!

  8. Claudio,

    Los estudios no sirven de nada si no se hacen cosas, es más importante tener ganas de aprender que otra cosa.

    Yo te diría que si fuera tú haría lo siguiente:

    1. No te encasilles nunca en un CMS. No digo que intentes profundizar en todos, porque desde ya te digo que no lo vas a conseguir, pero ve a por los que más trabajo te puedan conseguir y con los que mejor te encuentres trabajando, aunque te digan que otros son mil veces mejores.

    2. Usa un framework serio de vez en cuando. En proyectos propios o que no sean para clientes. Aprende cómo es una arquitectura bien hecha en php, sin usar cms. Es muy didáctico y te obliga a ver más allá.

    Un saludo y muchas gracias.

  9. Asier

    Se que es tu blog y puedes hacer lo que quieras. Pero me parece una descortesia el no emitir ni siquiera un comentario (positivo o negativo) respecto a mi mensaje puesto hace tanto tiempo. Sobretodo si al siguiente que me precede lo respondes tan luego.

    Solo eso. Y no creo que te interese pero partire por symfony 2 pero necesito saber cuanto tiempo real demora en aprender.

    Eso. Muchos saludos y exito

  10. GaDo este sitio web es un blog personal, no un centro de soporte en el que pagues y se te de una respuesta en un plazo acordado de tiempo.

    Tanto si hay respuesta en él como si no, deberás esperar, recordarme que me has escrito por estos u otros medios o aceptar que puede que no haya respuesta, pero siempre con educación y respeto.

    Con respecto a tu pregunta, yo siempre recomiendo aprender php y dominar el lenguage y luego utilizar el framework.
    No tiene sentido ni vas a poder avanzar de la misma forma si te metes de lleno en un framework de un lenguaje que no conoces.

    Un saludo.

  11. Por eso solamente dije que me parecia una descortesia (y lo sigo pensando) y que el sitio es tuyo y tu puedes ver a quien le respondes o no.

    Gracias por la respuesta

  12. Bueno, antes que leer los planteos de GaDo me hubiera gustado leer tus opiniones acerca de lo expuesto por eemece2 sobre los CMF.
    Ah, no juego al paddle, solo soy programador y vivo en Argentina ;)
    Saludos!

  13. Aunque el post es antiguo, no me puedo quedar sin decir: flipo con GaDo. A lo mejor es cierto que no está bien contestar a unos y no a otros, pero desde luego también es de desagradecido quejarse en esos términos por un detalle que puede haber sido un despiste, ante una información muy buena que te dan de forma totalmente altruista. Personalmente creo que un recordatorio educado de la pregunta habría sido mucho más pertinente, la verdad, pero cada uno tiene la educación que tiene.

  14. Gracias por la orientación,
    Estoy convencido que la mejor opción es symfony2 para desarrollar aplicaciones web, pero tengo un gran problema
    yo trabajo mis proyectos actualmente con joomla y uso un servidor compartido, la idea que tengo es crear mi propio cms con symfony2 y luego reemplazar joomla, el problema es de inicio y es grave… no puedo desplegar mis proyectos en mi servidor compartido que este caso es hostgator.com
    si me puedes hechar una mano te lo voy agradecer

  15. Hola! Primero, Felicidades por el completo y reflexionado artículo, Asier. Estoy buscando programador freelance especializado en php framework POO, para mejorar nuestra e commerce, o bien si a alguien le interesa, incluirle en el proyecto ( que ya está en funcionamiento ) si es una persona emprendedora y honesta.
    Un saludo

Responder a Mario J. Inga Cahuana Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *