Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

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?

share|improve this question
Learn Scheme, all problems solved XD –  user54609 Apr 9 '13 at 23:49
To answer the question in the title (and not the body, which is a rant that wasn't even disguised as a question), I have a few frameworks I like and I'm confident in my ability to master new ones quickly. –  user16764 Apr 10 '13 at 0:10
@JohnJenkins This would be a great forum discussion but it doesn't do well on a Q&A site. Please take a moment to familiarize yourself with the FAQ to learn about what kinds of questions we are looking for here. –  maple_shaft Apr 10 '13 at 1:00
"and I barely have to use my brain just hold the steering wheel" is the point I would not like about that job (assuming it's true and not another stereotype). –  thorsten müller Apr 10 '13 at 7:34
add comment

marked as duplicate by gnat, Jalayn, Karl Bielefeldt, MichaelT, kevin cline Apr 10 '13 at 19:20

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

3 Answers

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.

share|improve this answer
"Frameworks are not just hip fads that replace function names.": Yes and no. Some frameworks are just introduced by a company that wants to enter a market. In that case a framework can offer a different, incompatible but not necessarily better way of solving a problem for which there were good solutions already. –  Giorgio Apr 10 '13 at 16:42
@Giorgio fair qualification. Point still works though, that the programmer has the burden of identifying the utility and weaknesses of a given framework - including quickly knowing when to move on if it's just for someone else's business value. –  djechlin Apr 10 '13 at 16:44
@djechin: I agree with you. If you know a framework in a certain area, you should first look at other, new frameworks at a very high level to understand if you can have some real advantage with them. Otherwise, learning yet another way of doing the same thing can be a waste of time. –  Giorgio Apr 10 '13 at 16:47
add comment
  1. 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:

  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.

share|improve this answer
I would like to have a stable job with an employer and it is up to them on which framework to use. Personally I like to code from scratch. –  John Jenkins Apr 9 '13 at 23:59
You can't be expected to know all of them intimately. If that's your context, learn the most important ones, like jQuery. Save your deep learning for languages, not frameworks. –  Robert Harvey Apr 10 '13 at 0:01
Alternatively, focus on a platform that doesn't have the explosion of frameworks that PHP does. For instance, in .NET web development, it's basically WebForms or ASP.NET MVC; in Ruby web development, I gather it's largely just Rails. –  Carson63000 Apr 10 '13 at 0:14
add comment

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.)

share|improve this answer
@djechlin : I know too many people whose knowledge of JavaScript means using google to find a solution to their problem, then randomly modifying a few lines if their boss wanted something else. They are not aware that JavaScript is "object-oriented", they don't know what "function is the first-class object" means, never heard about prototypes, etc. Yet these people have jobs and get paid. As far as I know, an average JavaScript programmer is like this. -- I didn't want to suggest that all programmers are like this, or that this is the only way JavaScript can be used. Just: mostly. –  Viliam Búr Apr 10 '13 at 16:34
"In practice," fair - although I wouldn't recommend someone think of the language itself that way. Can you structure this essay so it's more hierarchical and in particular skimmable? It has good content but is too broad for SE, especially when you just go into "how to learn programming." Make it more transparent how that is relevant w.r.t. OP. –  djechlin Apr 10 '13 at 16:43
@user16764 your edit in rev 3 has been rolled back per discussion at Whiteboard: chat.stackexchange.com/transcript/message/8916071#8916071 –  gnat Apr 10 '13 at 18:28
There's a huge difference between "Having enough of a background to write your own framework helps you master them" and assuming (patronizingly, IMHO) that the OP needs to be told how to learn how to program. The intent of my edit was to help the answer to emphasize the first point and to remove what I felt detracted from it. Alas, I forgot to fill in the reason field before submitting. –  user16764 Apr 10 '13 at 18:50
@user16764 - in a case like what you're describing, you should a) down-vote the answer and b) explain why you're down-voting with an optional c) suggestions for improvement. Your edit materially changed the answer which is not an appropriate use of editing. Clarifying edits, Tweaks, and minor additions or subtractions to an answer are good usage; wholesale change is not. –  GlenH7 Apr 10 '13 at 20:36
show 3 more comments

Not the answer you're looking for? Browse other questions tagged or ask your own question.