As of November 2015, what would be the best programming language for someone new to the industry to begin learning and making money off of?
I have programming experience in Visual Basic and Java, but have forgotten most of it. I only say this as it might have relevance to me specifically, though this question should be useful to others.
If I wanted to make money off of my skills, what would be the best language to start learning AND what would be the best way to start monetizing that skill?
Python “comes with batteries included” as they like to say. The wealth of libraries, and interfaces to lower level language libraries available is immense. You can be seriously productive in Python in a manner that really no other language provides.
That said, nothing replaces knowledge of computer science basics. Python allows you to express these quickly and succinctly, without the cruft that many other popular languages requires. But that is as far as the language’s advantages go. If you don’t know the paradigms, you won’t be able to code them. Python doesn’t write good code for you, and doesn’t replace the need for clear understanding of the problem space in designing a program, or more importantly the steps in proper software engineering and software design.
It does however provide a space in which the important stuff can be learned faster. Knowing a programming language does not make you a programmer.
If I were back teaching, I would teach two languages. Python and C. C is little more than a glorified assembler. But it provides controlled access to the bare metal at a level that allows students to understand the realities of what is going on. In Python you are insulated from the metal a bit too far. Python is a bit idiosyncratic, and there is a mini-religion of “pythonic” ways of doing things, but overall it is a vastly nicer experience than hacking away in Java, or worse, the abomination that is C++.
I didn’t know companies were adopting this. How do you know?
I agree that knowing a language doesn’t make you a programmer. And your answer makes sense in general. However it doesn’t really answer the question–what is monetizable?
Just because python is easy to work with, does that make me hirable by companies? What can I do with it for freelance work?
The majority of business, banking, & financial software still runs on COBOL, but the experienced COBOL programmers are steadily reaching retirement age. Many companies are quite desperate to find programmers to keep these long-running, proven COBOL systems running. they would eagerly hire a young programmer who knows COBOL, and any other languages beyond that would be an extra hiring incentive.
There are thousands of programmers out there learning Python & Java & etc. (and millions in India & China), so they will be a-dime-a-dozen to hiring managers. To gain the most value, get unique & scarce skills.
COBOL. Some truth in that. I do a good line in Fortran IV and 77.
Languages are really not the critical element. I do Fortran C++ Java and Python. I mostly work in science and engineering areas and HPC. For instance the OpenStack cloud environment is Python under the hood. But what matters is not your language but what experience and skills you bring. Finding a domain you can differentiate yourself is what makes it monetisable. Just being a hack programmer isn’t an answer.
You mention money several times in the OP…is how much you earn important, or just whether you can get a paid job, period?
If you pick Java, C# or Python, there are plenty of jobs out there, but since they are what everyone is using and being taught, the entry-level jobs won’t pay very well. You’re competing with lots of recent grads trying to get their foot in the door.
Lesser-known languages or APIs; either because they are so new, or are old and never became very popular, can be extremely lucrative in contract work, and no-one really cares about what’s on such a contractor’s resume beyond the specific experience they have on that system.
If money really is the only important factor, then I would consider this route, though it’s more of a gamble and requires market research in addition to learning a language.
How about English? Most programmers can pick up any other computer language with minimal difficulty. They’re not really that different from each other, with the exception of maybe assembly. But to be able to communicate with non-programmer humans, e.g. your superiors or coworkers? Vastly more difficult.
I mean, most businesses aren’t really that different from one another. They have existing processes that you have to work with/around, using several languages that they’re stuck with. You’re going to have to learn shit that’s non-standard, regardless of the language you choose, and chances are you’ll have to keep it that way because the people who have authority to change it are way above your pay level and you’ll never see them anyway.
What really sets you apart is how well you can sell yourself, how well you can understand their existing needs and sell them on things they didn’t even know they needed.
There will always be programmers better than you. There will probably be half a dozen random programmers, many fresh out of college, who can sell themselves on their programming skills – it’s not really that hard. Most of them will have little to no interpersonal experience, and many of them will only know how to talk to other techies who speak code. Unless you’re working directly in the tech industry, most HR people will have no idea what your skills mean anyway, and they’ll just be checking keywords off a list. You’ll have to resort to plain ol’ human charm to get through to them, and that’s the only thing that will set you apart from all the other qualified candidates with fancy-sounding degrees from fancy-sounding schools.
Thing is… if you’re an exceptional programmer, you wouldn’t be asking this question to begin with, because the world’s top tech companies would have already scouted you. If you’re an average programmer like the rest of us, it doesn’t matter what you know, because a hundred thousand other people know the same skills and are willing to work for a third of your pay. Learn the basics applicable to any and all programming languages, be willing to adapt to whatever language(s) and paradigms they require, and the rest is just your ability to bullshit your way through an interview…
There’s a high demand for PHP/MySQL skillset in my experience. Lots of SME companies out there have an existing site or customer portal based on PHP, and want it extended.
The first thing to do, to get a real answer, is to survey the job postings in locations you’d like to work and what kind of companies. It is also important to identify the industries that interest you most and if you can demonstrate a keen interest in them. Employers want you to know about their industry, not just the programming languages.
I know you got a lot of replies here with people suggesting a whole wide range of languages to learn, but I think without doing what I suggested above it is going to make things necessarily difficult for you.
The company I work out now (Cisco Systems) uses Python, as does Google. Many of my friends in Silicon Valley are learning it. Perhaps I am biased. Talk to some of the employers you would like to work for and ask them.
By the time you become sufficiently proficient at a new language it won’t have the value it had when you started. If you want to be a programmer you need to gain a level of proficiency in a couple of different languages and then have application knowledge you can cash in on with any language.
I’d say C++, just because my company keeps trying to hire competent C++ programmers and is constantly having trouble trying to find good people who will work for what we’re offering (and we are offering quite a bit), while over the same time period we have hired multiple Java and C# programmers.
C++ is finicky enough that not many people learn it, but not so obscure that companies are actively trying to port the code base to something else.
As noted above, it can be pretty industry specific. And that often means geography matters.
I’ve been an embedded software guy for most of the 20 years I’ve been in the work force. I’m a pure C programmer, but I can pretend to code in C++. I occasionally end up writing some test frameworks in python.
Java is still very popular at the upper end of the stack, for user interface type work.
And as mentioned also, once you’re established a bit, it doesn’t matter as much. I’ve gotten job offers for programming languages that I don’t know. I made it clear during the interview that I would have to learn the language as part of the job. They were much more interested in my critical thinking abilities.
He brings up a good point; in my experience, programming is kind of a sucker bet, career-wise. I mean, you can make good money early on, but as you get older, there’s a sort of relentless rat-race to stay relevant vs. all the younger, fresher, less cynical kids straight out of school who already know the latest languages, etc… And that’ll ALWAYS be the case, assuming that one of a few things doesn’t happen. You could, I suppose, land yourself in a lucrative niche where you’re not in any danger of being obsoleted, and where you can write in C or C++ for example.
Or your job may get automated out of existence. Or they may outsource what you do to a gang of foreign programmers working for pennies on the dollar. Or they may just decide that you cost too much to retrain in the new hotness language/paradigm.
The trick is to start off as a technical guy and move into less technical stuff, so that you make yourself somewhat immune to all that.
I have only a few years left in my career, specialized knowledge in my area will hold out for me for the few years left, my experience far exceeds the majority in the profession, and I don’t really get paid for producing code these days anyway. I do feel for the generation coming up. If your primary skill is programming, no matter how good you are, there will be a lot of competition. A huge portion of programming as a skilled position is already gone, general purpose tools have eliminated the need to write code for most tasks. If you’re under 40, maybe even 50, you don’t have much chance of becoming or staying a highly paid programmer.