Es deseable que tengas conocimiento sobre los siguientes temas:
- Arquitectura orientada a objetos
- Analisis orientado a objetos
- Diseño orientado a objetos
- Programacion orientado a objetos
Esos temas te van a dar un idea general sobre las decisiones que se toman a la hora de construir software. Aclaro que no necesitas ser experto en todos los temas, pero si debes de tener muy claros los dos últimos de la lista.
Sobre Symfony puedes comprar el libro que te recomendaron es muy interesante por que usa el mismo ejemplo durante todo el desarrollo del libro y esta muy bien redactado de forma que es fácil seguir cada capitulo. Aparte del libro es necesario que leas la documentación oficial.