The dark side of frameworks
Some time ago I had a somehow bad experience with a (good) company that I’ve applied to. This is the email conversation with them:
thank you again for your application.
I am sorry to inform you that, despite your interesting CV, your profile does not fully match the requirements for the vacant position.
We truly appreciate your interest in XYZ and we wish you every success for your future career.
Then, being just curious, I replied to them:
Hello,Thanks for the reply but could you please tell me what the mismatch was because I really do like your company and I would really want to work for you.Thanks again!
Dear Constantin,our Lead Engineer could not find any Symfony experience in your CV which is why he decided to proceed with other candidates.I hope this helps!Best regards
But this does not seem right. It looks like they have become dependent on a particular framework so hard that they could not hire many possible good programmers because they lack the experience with a particular (and simple) PHP framework. The DDD in me started to scream so I wrote this to them:
Thank you very much for your time. I have a message to your team lead:Symfony is a framework like any other. It is very well documented, there are lots of tutorials out there that can get an passionate developer up&running in days. I used Zend framework for Web application as starter but I could replace it with any other framework at almost any time. Any developer can write code that works for just a particular framework but only the best developers write code that are framework agnostic. After years of programming I realized that frameworks are implementation details, they are just noise that draw developers attention from what really matters: the domain! Of corse, they should be used, we should not reinvent the wheel, but they should be replaceable at any moment without full rewrite.This comment is specially about general purpose frameworks like Symfony and Zend. They are not Magento. You afford to become dependent to Magento because it offers you all there is about for a six digits ecommerce shop. But general purpose frameworks are just a collection of libraries. You should protect yourself from them. You should not step into framework creator’s trap. If you do you will not be able to hire good programmers because they do not have experience with it.DDD has help me to separate my pure core domain code from the infrastructure/technology. This is good because technology changes faster than the business. If you do not separate them then you will loose money just to rewrite your code to match the latest, fastest, most secure version of their framework.What has Symfony and the other framework don’t? PSR-7 Controllers? PSR-11 Dependency injection container? PSR-3 Logger? These are present in any PHP framework. An ORM? No, it is from Doctrine.About code quality, what does teaches Symfony on its documentation page  ? It tells the programmer to use the service-locator anti-pattern in the controllers by making the DIC available as
$this->container. What the lazy programmers do then? They use it and thus they make their code less testable, depending on hidden services that only the author will remember.If you are indeed so dependent to Symfony that you will never change it then probably we won’t match.Thanks again for your time.
Hi Constantin,thank you very much for your effort to write down your thoughts.You have a point there!I’ll pass this on.All the best for now