What Programming Language Should I Learn Next?

What Programming Language Should I Learn Next?

I am a big fan of reddit and it is usually my primary source of reading what’s new.

There is a sub-category (sub-reddit) on Reddit for Programming and one question that is posed very frequently is: What programming language should I learn next?

If your purpose for learning a new language is career motivated, I recommend that you start your quest looking at what what top companies are searching for in candidates. Companies such as Microsoft, Google and and Apple will generally seek individuals who have knowledge of the core programming languages such as C, C++, Java and will mix in some of the more cutting-edge technology such such as AJAX or jQuery.

Here are some sample job requirements from Google, Microsoft, Facebook and Apple.

Google - Software Engineer

  • BS, MS, or PhD in Computer Science or related technical discipline (or equivalent).
  • A solid foundation in computer science, with strong competencies in data structures, algorithms, and software design.
  • Extensive programming experience in C/C++ and/or Java (strong OO skills preferred).
  • Several years of large systems software design and development experience, with extensive knowledge of Unix/Linux.
  • Coding skills in Python or Javascript/AJAX, database design and SQL, and/or knowledge of TCP/IP and network programming are a plus.

FacebookFront-End Engineer

  • A passion for performance debugging and benchmarking Experience building JavaScript/HTML/CSS applications and frameworks
  • Experience working with JavaScript/HTML/CSS in high-performance environments
  • Knowledge of but not reliant on Prototype JS, MooTools, Dojo, jQuery
  • Identify performance bottlenecks in JavaScript applications
  • Build performance minded front end abstractions and systems
  • Provide code optimization recommendations
  • Prototype and implement optimization techniques
  • Benchmark existing code and enhancements
  • Participate in design and code reviews
  • Code primarily in JavaScript, HTML & CSS
  • Interface with other team members to incorporate their innovations and vice versa
  • Identify and communicate best practices interpersonal and communication skills, and proven ability to work effectively with all organizational levels
  • BS or MS degree in Computer Science or Engineering preferred

MicrosoftSoftware Development Engineer (SDE)

  • Pursuing a B.S./M.S. or Ph.D. degree in Engineering, Computer Science, or related field
  • 1-2 years experience programming in C/C++/C#, Java, and/or other computer programming languages preferred
  • Ability to derive creative and innovative solutions by thinking “outside the box”
  • Expertise in feature definition, design, and feasibility
  • Demonstrated skill in estimating development time

Apple - Application Software Engineer

Key Requirements:

  • BS CS/CE or equivalent
  • Strong programming skills, preferably with C, Objective-C, and/or C++
  • Excellent communication and collaborative skills
  • Excitement and passion to work on amazing products
  • Deep understanding of performance assessment and optimization
  • Proven ability to excel in a fast-paced development team

Preferred skills:

  • Mac OS X and/or iPhone OS programming experience
  • User-interface programming experience
  • Familiarity with web technologies and XML

By reviewing the job postings of the leaders in technology, you should be able to get a good idea of what is in demand these days.

I know from past experience when I looking for a job, I often saw postings that listed every programming language known to man: Cobol, Fortran, Pascal, QBasic, C, C++, C#, VB, VB.NET, Java, PHP, Perl, Python, Ruby, etc. Any not only that, they were looking for 10+ years experience in each one. These types of postings are unrealistic, not to mention ridiculous – it is highly unlikely that anyone has all the required experience (especially 10 years of .NET).

There is nothing wrong with learning an outdated or obsolete programming language for fun – I encourage it, if you have the time to learn it. But for advancing your career, a solid understanding of a core language is key.

Beyond programming skills, you might decide to acquire skills in another area such as development estimation, code design, or something non-technical such as communication skills.

How do you decide what you are going to learn next?

Like this post? Feel free to share or bookmark it.


Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

6 Comments

  1. Posted October 26, 2009 at 7:48 pm | Permalink

    Learn the new language you need to know to conduct business and travel abroad. Green Widget

  2. Posted October 30, 2009 at 7:43 pm | Permalink

    My personal philosophy is that a developer should be well-versed in those languages sought out by employers, but I also realize that doing this alone would stunt migration to better alternatives. I also feel that it’s important to develop skills with languages used for various tasks. For instance, it’s often useful to be able to throw together a small script with Perl or Python as opposed to having to write an equivalent solution in a compiled language. I’d also advise keeping track of the overall trends in technology as opposed to simply monitoring trends in language use. For instance, the world is becoming more web-based, and the operating system market is becoming less of a monopoly every year. Therefore, investing time in learning a web language like PHP, ASP.NET, or Ruby would be highly valuable for a developer. Also, cross-platform languages like Java and Flex (Adobe Air) allow for easier deployment to a greater number of users.

  3. Posted January 22, 2010 at 10:03 pm | Permalink

    Very good post at the right time for me. Right now I am stuck at deciding which programming language I should be learning next. I have choices like Python, C++, PHP. Also the choice is to enhance knowledge about programming. Like I have knowledge about C programming. So should I try and learn something like Qt for GUI development?

  4. Posted January 23, 2010 at 7:23 am | Permalink

    @Kevin I think your decision should be based upon what you plan to use the language for. If you are looking to do some project work on GUI development – by all means learn Qt. If you are looking at a new career – you might want to choose a language that is high in demand. If your decision is purely for the sake of learning – choose a language that fascinates you and appeals to you in some way.

  5. Alex
    Posted February 1, 2010 at 1:33 am | Permalink

    Because of your right side feedback menu, your site has some problem and it’s very slow.

  6. Posted February 1, 2010 at 8:18 am | Permalink

    @Alex Thanks for bringing this to my attention. I believe the problem may have been with displaying too many YouTube videos on one page -but I also removed the ‘Follow Me’ badge in the meantime.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe to RepeatGeek

Subscribe via RSS

Enter your email address: