Yesterday a colleague asked me how to load content on a page without reloading the page.
Evidently and a bit mockingly, I sent him a short description about AJAX and some links to ajax resources (as a joke off course, because he very well know what AJAX is).
The response I got from him was something in the lines of “I thought there was a way in Symfony to do it”. (As you might have guessed, we are using the Symfony framework).
That got me thinking how often it has happened that I get asked how to do something in a specific framework, and most of the times, that ‘something’ is a task that normal PHP can accomplish without the need for a framework. For example, how to do date manipulation inside a specific framework, or how can you split a string into an array while using framework X, all which require only basic PHP knowledge.
I’ve noticed that it is a huge problem with people working inside frameworks. They start to forget the basics about the language they use, and always look “framework X”‘s way to do things.
Or they always use the excuse “I don’t know Symfony, so I can’t help out on this project”, or “I don’t have any experience in Zend Framework, so it will take me very long to get up to speed”.
The general consensus is that if you are working with a framework, then it’s like you are starting to use a different programming language that you will need to learn from scratch, instead of just using different building blocks for the language you already know.
So it’s not about the framework. The framework you use don’t determine your skill set.
Years of experience in one specific framework doesn’t make you a good developer if you don’t even know the basics of PHP. And this is a mindset that most developers live with.
To solve this issue, developers need to learn to focus on the language they are using, not the framework they are using. a Framework is just building blocks, it is only meant to make some things easier, but it’s not meant to replace the language you use, or change the way you think about the language you use.
Just because you know some jQuery doesn’t mean that everything needs to be done in jQuery. It doesn’t mean that you need to forget how normal JavaScript works. It doesn’t mean that there is a “jQuery way” for everything, where only pure JavaScript is needed.
And that becomes an issue with recruiters as well (at least it’s a problem where I live).
Companies recruiting developers start looking for “Zend FrameWork Developers” or “Symfony Developers”, instead of good old PHP developers.
Sticking with only a framework means you will never evolve, you will never learn more about the language you are using, and you will only ever be an expert in one framework, instead of all the possibilities out there when you become a master in a language instead of a framework.
The better you get at using the language, the easier it will be to work with any framework, and write any kind of code.
Instead of looking for the “Symfony way” of doing something, start looking for the “PHP way”.
Derik
Very well said!
I think the increasing demand for framework proficient developers have changed the general mindset of what to know when and where. It’s like expecting a driver to know how an engine of a vehicle works before he can efficiently drive the vehicle instead of being able to drive the vehicle correctly.
cordoval
well put
Grant Walker
I think you’ve really started to uncover a very deep issue in the development community (at large and not just in PHP specifically).
A lot of frameworks (Symfony and ZF included) are built on sound architectural principles which are implemented on top of a language. It’s my assertion that many (if not all) developers can really benefit from delving into these principles. This will assist them in structuring their own applications in a more robust manner; as well as understanding what is going on when a problem occurs.
Also, frameworks should be used primarily when they abstract a particularly difficult/tricky concept/pattern. A question that you should ask yourself is: “Given all the functionality that this piece of the framework is providing, will I be using it, and if not, is there a simpler way of implementing/achieving the outcome?”
I think that this problem is definitely one of “when you have a hammer, everything looks like a nail”.
Pierre du Plessis
I totally agree.
The issue I’m seeing most often is that developers don’t understand that the principles that frameworks are using is most of the time standard design patterns, but rather think it is something unique to the framework.
Concepts like Dependency Injection isn’t unique to Symfony or Zend. The implementation is different, but the concept stays the same.
And if every developer can start to understand these concepts better, then they can evolve their skills outside of the framework, and get out of the mindset that a framework determines a skill set.