Internet Programming

How To Pick A Programming Language To Learn Today & Get A Great Job In 2 Years

Erez Zukerman 20-02-2014

Coding ain’t easy; or at least, learning to code isn’t, especially when starting from scratch. It can take years of dedicated work to become a truly good programmer; so is there a way to choose the right language to start from today, in order to get hired in a couple of years?


To find out, I took this question to our panel of resident experts: While we all write, several of us also have coding experience. What ensued was an interesting discussion that you would want to read before embarking on your journey to become a pro coder.

A Method To the Madness?


This is not the first time we discuss picking a programming language: Back in 2011, we’ve discussed which programming language you should learn for software development? Which Programming Language Should You Learn For Software Development? When starting on the path of programming, it’s important you invest your time wisely in choosing to learn something that will both benefit you in the immediate future with visible results on your platform of... Read More , as well as which one you should Learn for Web programming Which Programming Language to Learn - Web Programming Today we're going to take a look at the various web programming languages that power the Internet. This is the fourth part in a beginners programming series. In part 1, we learnt the basic of... Read More .

But this isn’t about one piece of advice (such as “go with JavaScript”) but a methodology — something people could use in two years from today, theoretically. How to actually figure out which languages are on the rise? Which code popularity metrics to trust and which to distrust (and why)? What are the best salary projection websites? Is GitHub an indication or not?

For example, you’ll find nobody gushing about PHP these days — but many, many developers are making a good living coding PHP, and it is still the bulk of what’s running on the Web. So is learning PHP now a bad idea? (Probably…)


There Is No One Language


This is where James, our resident Web developer and tech guy, stepped in to say this:

Programmers generally don’t learn a single language anyway. Anyone who goes the classical CompSci route will end up with a lot of Java, a bit of Haskell, some Prolog if they take a course in AI, some Node if they take a course in start-up engineering, some PHP if they learn traditional CMSes, some .NET if they intern at some worthless corporate office, some JavaScript if they do web design, some C++ if they do game design, and finally some Ruby if they’d like to waste their life away with obscure languages that no one actually uses.

There is no “methodology”, and you don’t choose a language to learn: it chooses you!

Learning one one language is like eating only digestives for a year when there’s a whole aisle of cookies. And seriously, who chooses jobs according to projected salary?

But What if You Don’t Learn CompSci?

I replied to James, saying:

Here’s the thing: This is not for someone taking the classical CompSci route. Judging by the MOOC explosion and the number of online programming courses, lots of people are picking up coding just from scratch. And when you start like that, you do need one language to start from. Perhaps you’ll move away from it later on, but that first language is going to be a critical investment of time and effort — so it better be worth it.

What resonated most with me is that last little bit he said — who chooses jobs according to projected salary. I think some people do, but I also think that’s not a great way to go about it.

When it comes down to it, people are trying to figure out which language to start with, and the usage that language gets in the real world carries weight in that decision (not just how easy it is to learn – Pascal…).

Pick a Project First, Then a Language



James came back with this:

Alright, perhaps one of the points of this methodology should be: don’t have a methodology. When I first came across PHP, it was through WordPress. I had a CompSci background in programming and some web design experience, but I’d never seen PHP before. I learnt it because WordPress looked easy enough, and I wanted to mess with WordPress. Not because I’d looked at a list of trending technologies, or was considering a career move, but because something cool I wanted to know about used it.

If someone was looking to learn programming purely for the purposes of a job, they would fail. If they were looking just because they like the sound of learning how to program something, it wouldn’t matter what language they chose as long as it could spark their passion.

Another Reason To Pick a Project First

This is when Simon stepped in with some pragmatic advice:

First and foremost, it depends on whether you want to develop for the Web or “standard” software.

For the latter, Java is pretty good:

  • Simple OO
  • Multi-platform (Linux, Windows, Mac, Android)
  • Similar syntax to a lot of other programming languages (JS, C#).

Can’t say much about Web development, although HTML/JS/CSS/PHP/MySQL seems to work for a lot of people. Python, too.

But yeah, the “to get you a great job in 2 years” bit irks me too. Stresses the wrong aspect of learning how to program. Once you can program, it’s pretty easy to get the hang of another language.

Getting hired for knowing a specific language is similar to getting hired as a PA for knowing how to handle MS Excel. If that’s the main qualification, it’s probably going to be a bad job.

Don’t Learn a Language: Learn Software Design


A consensus was beginning to form. Bruce Epper, of MakeUseOf Answers fame, had this to say:


The language itself doesn’t really matter. When it comes to programming jobs the most important aspects tend to be understanding basic software design and architecture, the coding process in general, knowing about design patterns, knowing when to use them, and how to apply a specific pattern to the task at hand — all of which are language-independent. Once a coder knows these, picking up a completely new language is a breeze.

There are even project management, documentation and writing skills that are more important to a programmer than knowing any specific language.

The Base Upon Which You’re Building Matters: English or Latin?

This was when Guy stepped in to remind us all that the language does matter, to an extent:


The language itself isn’t the most important thing in getting a job, I agree. However, the base upon which you are building does. Since I’ve done both routes, I’m going to compare programming languages to human languages.

Python appears to be the English of today. More and more, I’m seeing Intro CompSci and programming courses start you out with Python instead of Java, which seemed to be most popular for about 10 years. You can do a lot of what you want to do with Python.

C++ is the Latin of the programming world. If you learn it, you can learn the underlying principals of a multitude of languages and learn them more easily. Python would be a cakewalk if you’re well founded in C++.

What’s a “Programming Job,” Anyway?

It was Matthew’s turn now, to remind us all that being a coder can mean very different things for different people:



One thing that hasn’t been talked about in any great length is what kind of programming job you’d want.

Are you not too fussed about the perks thrown at Startup employees? Want stability and a decent pay packet, but no equity? Do you like wearing business formalwear? Learn C#, Java or COBOL. COBOL also has the advantage of having every single banking application ever conceived (hyperbole, but you get the idea) having been written in it. With most COBOL developers either retired or dead, there’s a lot of demand for COBOL developers with some earning six figure salaries! However, you’ll be working on huge, badly-written codebases created over multiple decades. That’s not fun.

But what if job security isn’t your thing? Want to work on interesting products, but are you willing to chance being out of a job when the business model doesn’t work out? I’ve found that going on (Hacker News) is a surefire way to find out the languages being used by startups. When I interned at an early job, we used a mix of Go, Python and CoffeeScript. Other startups use Rails and Groovy and all sorts of obscure frameworks and languages. Just pick one and you’ll find an interesting job somewhere.

New Code, or Old?

Writing new code is a very different experience from maintaining an existing application, as Bruce added:

With your comments on COBOL, you kind of hit on another consideration: do you want to work on new code or maintain someone else’s code? This can be a huge item when deciding what direction to move. For smaller projects, maintaining a codebase written by someone else may not be that bad, but I have seen some sections of code where you have several people staring at it for hours asking, “What was this guy thinking?”, or where the original programmer was taking advantage of a specific feature or bug in the compiler (that may have been fixed in the current compiler) to accomplish something.

What If You Don’t Have a Choice?

Guy came back to remind us all that not everyone has a wide array of choices:


Matthew raises a good question with, “What kind of programming job do you want?

Oddly, I never really thought that I’d have much of a choice in the matter. I knew I wanted to do web development when I started, having done other programming recreationally. But I figured I better be prepared to take any job I could get, and be willing to learn as I went. Now I’m a jack of all trades, proficient in several technologies — master of none.

As for figuring out where you want to work, determining the type of lifestyle you want is important. Then look at postings from those businesses that appear to meet your criteria and see what they’re looking for in general. Putting together a portfolio of things similar to what they do can be very helpful as well, especially if you don’t have formal training in the technologies that they use. Maybe you learned Java in school, but they use C#. So you teach yourself C# and do a few programs with it as proof that you know what you’re doing and that you have fluid intelligence.

No One Simple Answer

If there’s anything this discussion shows, it’s that simple questions don’t always have simple answers. And yet, after reading everyone’s opinions, I felt much more informed — they changed my mind.

I’m sure we didn’t capture all possible viewpoints here — that’s what the comment section is for. I would be very interested in hearing your take on this question, whether you’re a pro coder or not. How would you pick a programming language to get a good job in two years? Is that even a good way to pick a language? Share your thoughts below.

Related topics: Job Searching, Programming.

Affiliate Disclosure: By buying the products we recommend, you help keep the site alive. Read more.

Whatsapp Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. WebDev
    September 26, 2016 at 2:23 pm

    Programming is a skill that needs to be developed, and like any other skill, it requires that you invest the time, energy and expense to become truly proficient. While it is possible to learn a new language by yourself, it is not alway the most effective path towards coding competency, and it is usually a good way to pick up bad habits. But at coding bootcamps, like Web Dev Bootcamp (, you can learn with seasoned professionals in an environment suitable for learning code quickly and efficiently. Taking on this initiative shows your seriousness in obtaining the proper guidance towards becoming a proficient developer.

  2. Sonja
    August 12, 2016 at 2:01 am

    Ridiculous advice.

    There are people who eat, breathe, and sleep code. They love code. They can work all night on a coding problem.

    If that is not you at all, how do you expect to compete with them?

    It is better to pick something you can be as passionate about and become an expert in. Sure, learn some coding and so forth, so that you can converse intelligently with the experts, and demonstrate to employers that you have a logical mind. But everyone is not going to grow up to be a coder.

  3. Max
    July 26, 2016 at 5:26 pm

    I did not get this article. It ends with "No One Simple Answer". Well, why write the article if there's no answer. I knew there was "No One Simple Answer" long before I saw this writing. I certainly did not need to read it...waste of time.

  4. Thad
    January 6, 2016 at 4:58 pm

    Who in the world tied that tie???

    • Peter
      March 18, 2017 at 1:41 pm

      Exactly what I was thinking.... is that supposed to be an example of good/bad code?

  5. Bharadwaj Raju
    December 23, 2015 at 11:39 am

    Some of that is really outdated.

    It says that Ruby and Rails is obscure. Ruby on Rails is one of the most popular web app development frameworks.

  6. Ayaz
    March 9, 2015 at 12:49 pm

    An article on software design wouldn't be a bad idea. Looking forward to it!

  7. Meh
    January 14, 2015 at 5:48 am

    Programming for the desktop is mostly dead, all hail the interwebs its like going from a building mansions to building tree huts with todays programming.

  8. Richard Eng
    July 24, 2014 at 1:52 pm

    Several commenters have stated that once you've learned one language, it's fairly easy to pick up new ones. As well, it's been stated that the choice of programming language is not especially important–learning programming principles and techniques should take higher priority.

    First, while a programmer can and should learn a variety of languages, it's crucial to point out that it takes thousands of hours to achieve mastery in a given language. Flitting from one language to another may give you relatively superficial experience but not deep proficiency. This is why employers (legitimately) look for "5 years experience or more."

    Second, the choice of programming language *can* be extremely significant. Some languages make you much more productive more quickly–I'm thinking of Python, Ruby, or Go. Others make the code harder to read and understand. Still others are too specialized, i.e., they're "niche" languages–I'm thinking of Erlang or Haskell. And still others are too immature, for example, Rust and Vala. So the importance of choosing a language should not be underestimated.

  9. Alex V
    March 16, 2014 at 2:05 pm

    Great article!

    I wish I would have read it a few years ago cause I learn the hard way that books and videoes without practice don't get you too far, no matter the amount of time you invest in them.

    I think the only question that matters is 'what do you want/like to do?' and having a start up project makes dreams more likely to come true.

    I think the English/Latin thing is right. I did C++ in highschool and that made all the learning way easier.

    So, don't learn a programming language, learn programming!

  10. Zaidi
    March 1, 2014 at 11:11 pm

    Nice article.

    This article is for picking a programming language, i would like to start one step back from this decision.
    Can you do programming? I have a quick checklist for it.
    a) Are you good in Mathematics?
    b) Try this simple question without using calculator, pen and paper. What is "Square root of 2"?
    c) Do you love to find out value of "x" in Algebra equations?
    d) Can you afford 6-8 hours a day (at least) continuous sitting? ( on Regular basis )
    Fine with the checklist? OK - lets move forward. (by the way, answer of 'b' is 1.41x )
    As stated by others, should focus on programming instead of language.
    To get a "GREAT" job with in 2 years, I think there is contradiction in statement. 2 years are too short to get a "GREAT" job. Trust me after having 2 years professional experience in any programming language, you will not get a "GREAT" job.
    Coming back to the point, if you want to quickly get in the job market, start with markup and scripting language ( HTML/CSs/JS/PHP etc ). It is quick and safe. I think it is good to start with graphical interfaces to cover the dryness of programming/scripting (black & white environment) because a cup of coffee/tea can make HARD bread eatable.
    And I can't see PHP/JS downfall in at least next 5 years. There are more than 2.4 million websites using PHP [including Facebook] so who will manage them all? Definitely you will get your part.
    Once you are in, you can taste other flavors as much as you can digest including C++ and JAVA.

    Best of luck.

    • Croesus
      March 5, 2014 at 1:59 am

      Hello guys,

      I have enjoyed the information on this page, and the comments after.

      However, I have some questions.

      Zaidi, I noted your checklist for one able to do programming. I wasn't able to calculate the square root of 2 without the help of the tools you mention. Actually, I would not be able to calculate that without a calculator, because without one, didn't get the knowledge of how to calculate square roots without calculators.

      Does it mean I wouldn't enjoy coding?

      I'd actually had some education in C, HTML, Relational database with SQL, and found them easy to comprehend, because I enjoy and am able to visualise abstract concepts. But dropped these knowledge when I couldn't see much use for them. Presently, it seems I might require some programming knowledge i.e. web development etc. This is because I am actually fascinated with computers, and spend hours on end working or trying to understand how they work. As a result, though I am 35 years presently, I am considering getting specialised knowledge (.i.e. Computer Science or Computer Engineering) on them.

      I would really welcome any and all feedback.

      Thank you.

    • Flaman
      March 6, 2014 at 3:44 am

      Zaidi, don't forget "e)" Do you REALLY love coffee or some energy drink while sitting in a near comatous-state, in a dark room, with multiple monitors and headphones on? :) AND, "f)" Can you stand to be constantly asked questions by people who will have their eyes glaze over as soon as you start to explain what is really going on?

    • Zaidi
      March 6, 2014 at 11:03 am

      Hi Croesus,

      Thanks for your reply and question.

      Well, things are not same for every one as every one is not same. There are some differences, minor or major. There are many good programmers not fulfilling my checklist (I am not a founder of any programming language - I am just a learner, far less than 100 thousands programmers) so this is not an hard and fast rule but here, if I am not wrong, we are advising and providing guide to new professionals who are looking for "GREAT JOB". In my opinion, if you are not fulfilling the checklist, it will be hard for you to do programming. Doesn't mean you cannot learn programming but you can say that this profession is not for you so you should think about something else for JOB.

      If you are interested and want to enjoy coding, belive me you can do it because interest is the only thing required to learn anything. And when you will step in the programming world, you will find out another KEY FEATURE of good programmers (built-in feature of programmers :) ) that they LOVE to help. If you ask how to do "C", a programmer will (ask couple of questions and then will) correct "A", "B" (if required), fix "C" and will leave you after completing "Z" and will not charge you [ more than 90% cases ].

      You know basics about HTML, C, SQL which is well enough to kick start. Revise HTML online from W3Schools and you are good to do web development using PHP. Your C and SQL knowledge will help you in PHP and MySQL. Again W3Schools is there for step by step learning. You can get help from some professionals as well where required and as I said, they will love to help.

      Let me know if you need any assistance. I will try my best to help where possible.


    • Zaidi
      March 6, 2014 at 1:00 pm

      Hi Flaman,

      Your questions are part of funny list of questions and one of popular question in this list is "Do you hate social activities?" (it doesn't mean Social Media activities though ;) )


    • Andrew
      March 10, 2014 at 2:05 pm

      I have to politely disagree with Zaidi on the math thing. When I was studying programming in school, we wrote code to solve differential equations or other math problems. I've been a full time software developer for many years now. I make complicated business applications, and there's VERY LITTLE MATH. Some adding and subtracting. Sometimes you have to see whether one number is larger than another. Sometimes I have to figure out how many days apart two dates are. That's about it for math.

      I can't calculate the square root of two, like you suggested, but I can do this (in C#):

      double x = Math.Sqrt(2);

      Easy. Logical thinking and attention to detail are important. Math is NOT IMPORTANT for most programmers. Don't scare them away.

  11. Josemon M
    March 1, 2014 at 5:36 am

    nice read

  12. Richard B
    February 25, 2014 at 1:28 am

    This is a great article! I'm looking at learning my first language and try my hand at mobile apps, so this is a great stepping stone. It's much appreciated!

    • Erez Z
      February 25, 2014 at 5:43 pm

      I'm happy to hear you liked it, Richard! :)

  13. Andrew
    February 24, 2014 at 5:29 pm

    The author's buddy James describes .Net as the language of choice if you want to work in "some worthless corporate office." That's pretty snobbish. Is he still in college?

    The thing is, those worthless corporate offices are where the money is, where people like me go to make a living and feed our kids. And the majority of those corporate offices are building their enterprise applications in .Net. You can't run a large business in PHP. Python may be good for web development, but you can't build enterprise applications in Python.

    If you want a long term career, start with Microsoft technologies: SQL Server and .Net.

    • Bruce E
      March 5, 2014 at 9:42 am

      "...can't run a large business in PHP." Ever hear of Facebook? Not exactly a small project. Driven by PHP.

    • Flaman
      March 6, 2014 at 3:39 am

      Bruce E, if I am not mistaken, Facebook is PHP, hosted with Apache servers, but the backend where the money is counted and the advertising is followed is .Net. Facebook is only one small part of the enterprise system.

  14. JB
    February 23, 2014 at 9:22 pm

    I think the biggest thing not to do is to teach yourself a trendy programming scheme like Ruby on Rails that's not very similar to most popular programming languages. Yes, there are Ruby on Rails jobs and good ones. But you're better off starting with Java, C# or maybe PHP that are very popular and share a lot of similar syntax, being C-based. Starting with C or C++ isn't out of the question either but I find it's easier to be motivated learning higher-level languages first.

    I do have a degree in Computer Science, but you don't really learn that much about coding in University. It's all about the theory, design and structure. The hard coding stuff is mostly up to you to figure out anyway. I always work under the idea that if you understand the basic theory of programming you can pick up any programming language and technology and teach yourself how to use it fairly easily. It's not at all like learning a new language (I speak 3), it's more like just learning another set of slang.

  15. dragonmouth
    February 22, 2014 at 5:30 pm

    At the speed the field is moving, any language that looks today like a winner for two years from now, may be obsolete by then. One needs to learn the basic logic inherent to all programming, then one will have no problem learning any language.

    Programming is like the game of Go - it takes a short time to learn the basics but many years to master the nuances.

    Until my recent retirement, I was making a good living from COBOL.

    • Kannon Y
      February 26, 2014 at 5:50 am

      Did you happen to work for a state agency? Everyone I knew who programmed in COBOL worked for the public sector. I still hear regular job hirings for COBOL programmers.

    • dragonmouth
      February 26, 2014 at 2:09 pm

      "Did you happen to work for a state agency?"

      No, but I did work in the public sector. I also worked for a Y2K conversion outfit. Banks and financial institutions still use a lot of COBOL applications.

      COBOL, Fortran, Algol, BAL, RPG and other "obsolete" or "outdated" languages may not be sexy but they are still widely used and are still very useful. I'm sure you realize that each language was developed to fulfill a specific need and trying to use a language for a task that it was not designed for is like trying to fit the proverbial square peg in a round hole.

      None of the languages developed in the last 20-25 can replace Fortran for scientific applications. None of the "sexy" languages can match COBOL for creating business applications. That I know from personal experience. My employer wanted to modernize our software so it was decided to have all apps re-written in the latest languages, such as VB and Java. It proved to be an unmitigated disaster. So we left the apps alone and just created "modern" front ends for them. Web or interactive apps cannot be written in Fortran, COBOL, RPG, etc.

      "I still hear regular job hirings for COBOL programmers."
      There are still millions and millions of lines of code that need to be maintained. The remuneration for "obsolete" language programmers is rising since they are literally a dying breed.

  16. Sarath J
    February 22, 2014 at 7:38 am

    Ofcourse, there is no simple answer but looking at the heading of the article, I thought you would have made it simple. But let me do it... 'HTML 5'.

    This is only a start, simple, easy, interesting & not so tough. Besides its the future !

  17. Jase
    February 22, 2014 at 2:57 am

    Thanks to all for their comments.
    I am an absolute newby to code (if counting creating a hello world script in Html or PHP as non significant :-)
    I have developed an interest in developing a server side program to handle Mysql Database queries, mainly due to frustrations around trying to maintain an existing database and have it customized on a tight budget.

    I have spent some significant time reading introductions to PHP, and tinkering on a xamp loaded Linux machine and am now wondering if I am looking at the wrong language?

    Will I be doing myself a disservice by following this path rather than learning a foundation code rather than PHP which is termed as loosely written?


  18. Darin
    February 21, 2014 at 10:50 pm

    I want to thank you for touching on this subject, as I currently am looking searching for my base code language to learn and branch from to become a full time programmer. In my job as a Network/PC Admin I deal with many venders for the tasks we provide for clients and customers alike within a pharmacy. When I started here the core languages of most of the software was C++ and Visual Basic 6 and C. At present almost all the upgraded software is now in Visual C++ and along with VB.Net. As for our other services they are handled in SQL or SQLExpress. I have only been in this position for 3 years and coding hasn't changed drastically but has been keeping up with the advancements in the language development platforms.

    I started out with batch files in DOS and then QuickBasic 4.5 then Pascal and Assembly (which I LOVE) and then VB6, some HTML, PHP, C++, Java, CL, IBM/370 Assembler and RPG. Getting a taste of them all has been a trip, to say the least. But I still have not found the niche for me.

    As I have been doing much reading and watching of the current going on with software in business and WWW development trends, one thing is to be said, desktop software is slowly fading away and server side languages are going to be the base, especially with the virtual platforms providing a whole new look on ways to define a desktop environment.

    In my opinion I don't worry about the money or job, I will get to that worry point later, but what I am concentrating on is where I feel the most comfortable getting the job done at hand and yet having the power to port the project to just more than one OS. So what I have decided is I have moved my OS of choice to Linux, and have started learning,C++, PHP, Java, JavaScript. Then I run windows 7 in a dual boot and compile any .net or C++ in Visual studio with changes to get a good feel for both OS. I know this may be the long way of doing this but I want the best of both worlds and Linux gives me the advantage to have what I am looking for with my Id, and windows gives me the foundation to familiarize my code knowledge for a job that require Microsoft. I use a Samba box to store all my code on so I can access it using any OS.

    I would like to see more articles like the one you wrote here as learning trends for programmers may have it, I have learned that programming for me is not about the money and job place but about where I fit in most comfortably. I believe coding should be an experience where one is proud of their own accomplishment in what ever code style they choose. If all you do is code for the money, it tends to create reckless code. For me coding and getting paid are two very different worlds. So far learning to code has been a life changing experience for me in how I look at life., but then computers is my life, money or not. Again thank you for this article as it actually helped me understand my own deli-ma in deciding my direction.

    Peace and knowledge be with everyone, and God Bless.

  19. lucho
    February 21, 2014 at 7:38 pm

    As a recently retired Software Engineer / programmer, here are a few comments from my experiences:

    Most of the prior comments are correct: teach yourself the principles of programming.

    Use whatever language you like to verify that you understand the principles, and use this experience to see what you are interested in.

    Its a different world now. When I started, you aimed for the job, so you knew what to school yourself in. Now, the job basically chooses you. There are so many niches and nooks of programming where all sorts of languages are used. I would say, be a generalist, while being proficient in one or two languages.

    Apply for level entry jobs where you may not be proficient at all in the language, but your general knowledge of programming is your strength.

    Spend more time on logic and problem solving, and you will be of value to any shop.

    And now a bit about your sources in your article:
    James appears to be a typical code jockey; opinionated, with snide comments for all things. He means well, but all of us programmers like to express our opinions, usually with a negative connotation.

    Simon doesn't know what he is talking about. Of his list (HTML/JS/CSS/PHP/MySQL):

    JS and PHP are only semi-qualified as programming languages; they are scripting languages, a minute, but significant difference from C++ or COBAL, a difference as significant as C++ COBAL is to machine language.

    HTML and CSS are formatting specifications. Very useful for web design and presentation. This is where you use scripting languages to get things done. With a qualifier. HTML5 came along recently, I have no experience in it, but from what I have read, it is like a combination wrench; both formatting tool and scripting language.

    MySQL is a database format / querying tool. Lots can be done with it, but you are not creating programs.

    Bruce has his head right on this subject. And his advice IMO is spot on.

    Finally, just to be clear, with the programming landscape out there today, there are too many small sectors of program and format tools to be a specialist in any one or two. It is the era of the generalist for the common programming jobs. If you have a knack for one or two languages, and are proficient in them, screw working for a living. Start writing tutorials or consulting, and let the grunts do the sweaty stuff.

    And Good Luck to you!

  20. Aibek E
    February 21, 2014 at 6:42 pm

    I think James underestimated the importance of Ruby! It's a fairly popular choice for iOS developers)

    • james
      February 21, 2014 at 9:59 pm

      Lol, no its not. IOS is objective-c :)

    • Alexander
      December 20, 2014 at 9:48 am

      You do realize Netflix is built with ruby right ?

  21. Jane
    February 21, 2014 at 6:24 pm

    You are all talking from the prospective of the "Programmer", all of us know that the language is pretty irrelevant, once you are a Programmer, you can pick up pretty much any language in a matter of days to weeks, depending on how similar the new language is to one you already know.

    The problem comes when your CV lands on the desk in the HR department. THEY haven't a clue. They want "5 years commercial experience" in their SPECIFIC acronym. If it's not in your CV it goes in the bin.

    I know a fair amount of over 30 languages, I'm very good in about 12 and expert in 7. For example I'm expert in VB5, VB6, ASP, VBA, PHP, Javascript, HTML, CSS. I'm good in VB.NET but if my CV goes forward for an ASP.NET or C# web development role, the CV goes in the bin, I can easily code both languages, and do, because they have their origins in languages I already know, but your average HR monkey doesn't know that...

    So, it's not a case of what language do you learn, it's a case of using the language that is best for the application, sometimes you are limited to what a client insists you use, but with experience and many years in the business, you can sometimes retrain clients and advise, but don't expect your advice to be accepted or acted upon.

    • dragonmouth
      February 22, 2014 at 5:16 pm

      I remember way-back-when seeing ads for "Programmers with 5 years Java experience". Problem was that unless one worked for Sun Micro during the development of Java, there was no way of getting even 2 years experince. But the HR drones insisted on 5 years then wondered how come they could not fill the positions.

  22. Kevin
    February 21, 2014 at 2:44 pm

    In the first section of your article, you stated that people don't care about PHP anymore and most PHP programmers are underpaid.
    Is there are reason behind this? Or is PHP just out of the groove?

    • Bruce E
      February 21, 2014 at 6:57 pm

      It's not that people don't care about PHP; it just isn't a large growth area right now. PHP appears to have plateaued. Further developments with PHP itself may drive future growth. Even without that, PHP will still be around for quite some time. Other technologies and languages are growing faster and that is where more people are looking. In some cases it is simply because it is newer and "shinier." It was also stated that PHP programmers are "making a good living." To me, this in no way indicates they are underpaid.

  23. Matthew Blott
    February 21, 2014 at 10:37 am

    I have no IT qualifications and taught myself programming by playing around with macros in Excel just so that I could automate some of the dull repetitive tasks at work. The next stage was becoming a full time VB6 programmer and then onto .NET and C#. With the decline of desktop programming and move to the web I've obviously had to pick up JavaScript but I've looked at other languages too - Java and I'm doing a fair bit of Python right now.

    As others have stated, once you know one language you can usually pick up another fairly easily. But what isn't so easy is understanding the frameworks. Java and C# are almost the same syntactically but if you want to be productive you need to know their respective frameworks J2EE and .NET and this takes a long time. I've been programming C# for over ten years so even though Python is easier and a better choice for building websites quickly I still find it quicker personally to knock something out in ASP.NET because I don't know Django well enough.

    So what would I advise? I'm going to break protocol and actually suggest a couple of languages because I think they both stand out. If you're doing web development the stand out language is JavaScript - it's ubiquitous and with Node.js you have the server side covered as well. I don't like JavaScript personally (as much as I've tried to like it) but it isn't going away and it's not going to be a language you'll learn and never use again. Secondly, I'd suggest Python. Like Java it runs on most platforms but is just nicer to work with. Java is faster but as is often stated it's cheaper to upgrade your hardware than spend money on development and writing programs in Java (or .NET for that matter) takes longer than it does in Python.

    The only other thing I'd add is what others have stated - learn the principles of programming. Because I didn't take the formal route I learned some important concepts much later - the development life cycle, unit testing, test driven development, agile principles. These aren't just buzzwords but things that are essential to becoming a good programmer. I occasionally hire contractors and it staggers me how many just churn out code like there's no tomorrow because they think that's the most productive route to achieve their goal. Ultimately, if you want to be a really good software developer, a programming language itself is just one component among many others you will need to master.

  24. Russ T
    February 21, 2014 at 2:40 am

    Having started in machine code and then LISP, Algol and Fortran it was not the languages that were so important but rather a good understanding of the algorithms that one used to obtain ones goals that were important. Building Object Orientated Languages in LISP and then moving onto Smaltalk was really semantic sugar on top of the basic languages. PROLOG and POP11 added some more spice to life and from there languages just exploded and the ability to integrate languages to build a solution became the name of the game. It is not the language that you first learn that is important but the understanding that some constructs are easier to create in one language than another and that often a good solution needs a whole range of languages to achieve your goal. Most modern languages are a lot of fun to use and a lot more effective/efficient in terms of programming (although often not in terms of execution or final program size - I still miss the old dead code analyzer tools we used to have in LISP although program size is no longer a problem in most cases).

  25. Bill Fleet
    February 20, 2014 at 9:47 pm

    I never did the CompSci route, I went to Art School. I have a BFA in Graphic Design, and I went to college at a time when TTY terminals were desireable tech. (Yes, I'm old: I'm in my fifties. Jeez.) I moved across to programming when I realized it was quicker to code it myself than explain for the umpteenth time how I wanted it done to a programmer who knew PERL but otherwise didn't have a clue.

    The funky thing is, everything I needed to know about Systems Analysis I already knew from being an Art Director: what's the end product? what's the budget? what's the deadline? what resources have we got? The main difference between being an Art Director and being a Programmer is everyone thinks they can be an Art Director too. Neither of these professions are easy to do, and both require a lot of specific knowledge. Programmers get paid a lot more, though, and have a lot less job pressure. Which way did I go?

    I started with BASIC, then PostScript (type! graphics! imagesetters!), then PERL, then Java (Sun certified!) and JSP. Then there was ASP, SQL, C# and everything else. Along the way came JavaScript, and it's been in my back pocket for fifteen years. It eventually became my go-to language for quick prototypes (read up on HTAs for Windows, old-school but still cool), and now it's my (and everyone's) primary language for Web applications. Employers can't find fullstack JS developers for love or money right now. This will change.

    I've been on both sides of the hiring fence. When I'm hiring, I look for the requisite skills, but I also look for someone who's bright and adaptable. When I'm interviewing, I do what I can to highlight my flexibility and adaptability. Face it: every place has its own coding styles and standards, and any new team member is going to have to learn. Tons. Employers need to know their own peculiarities as well, and if they don't, one may not want to work for them.

    So yes, JavaScript is the language that chose me. I'm glad it will be around for a good decade or so. I hope I can keep up. It helps that every major browser has a good debugger built-in. My advice for budding JS people: MIND your closures, don't NEST anonymous functions too deep, KNOW jQuery and all of its attendant frameworks, but also know how to CODE stuff without anything but core JS. The last two jobs I got leaned heavily on that point during the interviews and coding tests, and I got the job because younger, faster coders couldn't do it without jQuery.

  26. Jon
    February 20, 2014 at 5:11 pm

    The bulk of my current coding for work is in PL/SQL (Yeah, I know...). When I was hired about 6 years ago, my boss told me if I had put PL/SQL on my resume (I had no prior experience with it) he wouldn't have hired me.

    There's no "best" language. There's only the best language for the situation, and usually that language is "what you know best" or "what the project is already written in".

    And I've never heard the Latin/English analogy, but it's pretty cool. I love Python. All things being equal it's my first choice language.