Frameworks
There are plenty of programming languages out there. Everyone has their favourite, and many, like me, probably have a list as long as their arm of languages they’d like to learn. Every language has a selection of frameworks, designed to make them easier to build apps with. Many are incredibly useful. jQuery for instance, has taken the web design world by storm, and it’s quite rare to see a site nowadays that doesn’t make use of it. Laravel and CodeIgniter for PHP are very highly regarded, as is Rails for Ruby development.
The problem is, with many of these, it’s easier to learn and use the framework than it is to use the base language itself. I myself was guilty of this when I first started learning jQuery many years ago. It’s only within the last year that I’ve taken the time to actually learn and understand the JavaScript code underneath it. And you know what? Since doing that I’ve found that in a number of instances, where before I would have jumped straight into jQuery without thinking, I now use vanilla JavaScript as much as possible.
The same can be said for other languages. The best way to learn how to use a language is to learn the vanilla language first. With PHP, if you jump straight into Laravel or CodeIgniter, you’ll likely be lost when looking at vanilla PHP and trying to use one of the additional functions from the framework. All my PHP and Ruby development is done vanilla, no framework. I simply don’t currently work on applications on the sort of scale at which a framework would give me any benefit. That doesn’t make me a bad person.
Learn the language first, and any of the frameworks will be almost second nature, and you can choose the right tool for the job, rather than relying on a huge framework when all you need are a few simple server-side calls.
Frameworks should be a tool allowing you to do the best job you can, not a mandated starting point.