I started coding with php, mysql, html, and javascript back in 2002 and heck that is all you basically needed to create any type of website. Over the years I picked up other languages, but what turned me off were all of the frameworks and JQuery that was popping up every few months and clients (if freelancing) or employers expected you to be an expert on some crap a geek released recently.
Because of this I got out of programming since I don’t know if I can constantly throw away all of my previous knowledge and replace it with some new hip fad that does the exact same thing but just uses different function names. I miss knowing the core knowledge of PHP and being able to code from scratch and I’m afraid the skill of mastering a technology to completion is obsolescent.
Is it right to feel this way, and can any of us feel secure about our programming career in the future?
4
Because of this I got out of programming since I don’t know if I can constantly throw away all of my previous knowledge and replace it with some new hip fad that does the exact same thing but just uses different function names.
There’s your problem. Frameworks are not just hip fads that replace function names. They solve problems in their domains, and it is absolutely your responsibility not to keep up with how to use each individual one, but to know what advances it makes and what problems it solves.
In other words, you should know the strengths and weaknesses of modern frameworks, get decent at some, and be prepared to switch when the amount of time you lose in developing in framework X since it doesn’t solve problem P is worth coding in framework Y that does.
3
-
Find the frameworks you like, and stick with them. Of course, this will require more than a little bit of research and soul-searching, but once you find them, you can proceed to step 2:
-
If a new framework comes along that appears to do the same thing as your chosen framework, evaluate it, and decide if the additional benefit of the new framework is worth changing your design philosophy and some of the tools in your toolkit.
Is it worth it?
- yes: Adopt it
- No: Go back to step 1.
Lather, rinse, repeat.
3
You overestimate the importance of frameworks.
Yes, there are trillions of frameworks, often doing more or less the same thing. My typical solution is to ignore them, until I have a big incentive to learn one of them, or until I notice that one of them is praised repeatedly by many people for a long time.
For example, JQuery is too important to be ignored. Too many people use it, it survived a few years, so I gave it my attention and realized that it really it cool. To give you an idea: You can do in one line of JQuery what you do in 10 lines of JavaScript and you don’t have to worry about the cross-browser compatibility.
But the essence of programming is somewhere else.
It is not about learning JQuery or some other library. It is about having skills that would allow you to design a new cool library, or even a new programming language. I am not saying that you should be doing any of this; just that when you become good, you will have the ability to do it. Then when you look at a new library, or even a new programming language, it will only take an hour or two of exploration, and you will say: “Yeah, I understand the problem the author was trying to solve, I see why he chose this solution, and it will obviously have these advantages and disadvantages.” It could take 10 years of learning to get there, assuming you focus on learning the important things.
How to learn programming?
Starting with “php, mysql, html, and javascript” is one of the worst possible choices. But unfortunately, many people do it. And then I assume many of them feel as frustrated as you do. I wish there was a way to tell all people on this planet to do it some other way.
Why is it a bad choice? First, you have to learn many things at the same time. Learning is easy if you divide the knowledge into small pieces, learn them gradually, practice each of them separately, then put it together. But with web development you try to learn databases, markup language, and two programming languages at the same time. (And then there are dozen frameworks out there.) It’s like trying to swallow the whole elephant, instead of just having a steak. Second, PHP is a horribly designed programming language; worst of those which are used frequently.
My advice: Forget PHP completely and get some decent computer science education. Find out what universities teach, and then find some free videos on the internet. Become comfortable using pseudocode; it helps you to forget the details and focus on the essence. You can translate the pseudocode to any specific programming language later. (Knowing how to translate the pseudocode to a given language = understanding the language. Writing elegant pseudocode = understanding programming.)
By the way, JavaScript is a decent language. Not perfect, but one of the best out there. I am speaking about JavaScript itself (how to use variables, functions, objects, prototypes), not about the HTML objects in browser. Think about JavaScript as great language mostly used for a dirty work by people who don’t understand it. The beauty of the language is that it allowed creating JQuery, which almost feels like another programming language, but in fact it only shows what JavaScript is capable of when used by people who really get it.
A more down-to-earth advice would be to learn Python. At a Udacity online course. Give it two weekends, forget all you know and just follow the lessons, and then see the difference. (Part of the difference is Python versus PHP, but a greater part is having things explained properly, as opposed to reading an average online tutorial.)
8