Conozco lo básico de Symfony... ¿y ahora qué?

Hola estimados.

Junto con saludarles, quisiera plantear mi situación actual como programador en Symfony2. Desde hace un tiempo que llevo programando con este framework y he estudiado de diversas fuentes, como el excelente libro de Javier Eguiluz, Desarrollo web ágil con Symfony2, lo que me ha servido para desarrollar algunos proyectos pequeños.

Sin embargo, he visto que a medida que los proyectos crecen y van apareciendo requisitos más complejos, se va volviendo más difícil mantener el código bajo control. No creo que mi problema tenga tanta relación con el framework, ya que este simplifica de manera increíble el flujo de las peticiones HTTP, sino que con temas de arquitectura de software.

He revisado de manera superficial el código de otros proyectos desarrollados con Symfony2 como Sylius y siento estar demasiado lejos, y creo que tiene relación con una cuestión de diseño de software, en donde no tengo mayores conocimientos. ¿Cual sería una buena estrategia a seguir? ¿Como empezar a adentrarse en cuestiones como BDD? ¿Sería conveniente empezar estudiando patrones de diseño?

Agradecería si me pueden guiar para conocer todo esto un poco más en profundidad.

Saludos y muchas gracias!

Respuestas

#1

En efecto lo siguiente sería adentrarte en patrones de diseño y luego en temas más complejos como arquitecturas DDD (este libro puede servirte: https://leanpub.com/ddd-in-php) e incluso microservicios (si tus aplicaciones son tan complejas como para necesitarlo algún día).

Además, te recomiendo que eches un vistazo al libro "A Year With Symfony" de Matthias Noback, que ahora incluso lo puedes conseguir gratuitamente: https://leanpub.com/a-year-with-symfony

#2

Hola Javier.

Muchas gracias por tu consejo, es difícil lanzarse a estudiar algo sin saber si realmente va a ser ayuda para uno, es por ello que me interesaba saber la opinión de alguien con más experiencia al respecto.

Te reitero mis agradecimientos.

Saludos!

#3

Buenas tardes. Yo he continuado estudiando programación, pero sin centrarse en Symfony. Ya que al igual que tu, veo que conoces el framework, pero falta algo. Te paso lo que estoy mirando por si te interesa.

#4

Hola Marcos.

Muchas gracias por tu aporte, es de mucha ayuda! Siempre es bueno conocer más en detalle sobre PHP.

Saludos!

#5

Creo que todos hemos llegado a este punto... Aún sabiendo lo básico, siempre es importante revisar los componentes que ofrece el mismo framework. Como el OptionsResolver, el Workflow component... los Forms, etc... dentro de todos hay muchas cosas por aprender.

Ya que viste el proyecto Sylius, te recomiendo que no solo lo mires... sino que trates de poner en práctica y usar sus componentes. SyliusResourceBundle, SyliusGridBundle y SyliusUiBundle, pueden ser usados en cualquier proyecto fuera de todo el marco... Con Sylius he venido aprendiendo BDD; es un proyecto, aunque sin releases estables, muy bien hecho...

Y, cosa importante: no creer que lo que se hace una vez, está bien hecho... siempre hay cosas por refactorizar...

Te comparto:

#6

Hola Cristian.

Creo que tienes mucha razón, es importante profundizar en el core del framework para entender en detalle el funcionamiento del mismo, y comparto tu último comentario, siempre es bueno volver por nuestros propios pasos para ver en que cosa podemos mejorar.

Muchas gracias por tu aporte, me parece muy interesante.

Saludos!

#7

Buenos días: Trasteando por google me he encontrado.

https://librosweb.es/libro/tdd/

Pero en el apartado de libros, no aparece. ¿Que secretos esconde esta web?

Me lo estoy leyendo y no tiene desperdicio. Creo que el testing es otra gran habilidad que necesitamos adquirir para realizar software mantenible.

#8

@marcware82 la misma pregunta sobre ese libro se la hice a Javier. "Aún no está terminado", me respondió...

Por otro lado, el testing. Sí. Fundamental... La gente de Sylius usa BDD con Behat, PHPSpec. BDD, creo yo, reune las técnicas del testing para probar como realmente se debe comportar, de forma automatizada... lo más interesante es que le dan su toque para que funcione muy bien con Symfony.

Echarle un ojo a ese proyecto, cae bien...

Saludos!