Software Development

Selecting a new programming language to learn

Looking to start learning a programming language besides Java? Our JCG partner Brian Du Preez from Zen in the art of IT provides a relatively extensive analysis on the factors one should take into account when facing the “what’s beyond Java” question!

Let’s see what he has to say:

(NOTE: The original post has been slightly edited to improve readability)

I have been itching to learn a new language, but being a Java freak, I always end up convincing myself to spend the time and effort discovering, investigating or playing with something in the Java open source stable, Spring, Hadoop, Joda Time, Hibernate, Maven, Hazelcast, EhCache etc etc. Developing in Java these days is almost purely about knowing and wiring together frameworks, which is both a good and a bad thing (as well as a topic for another day).

Now to get myself to not redirect the “new language” energy into Y.A.F (yet another framework) I decided to give the languages out there a proper look and see which would be the best fit and most beneficial to my work, marketability and just general ‘IT Zen’.

So what do I require from a language:

  1. IDE… my number 1 thing is an IDE, if there isn’t a decent IDE for a language it is frankly not worth the time and effort. I don’t see myself as a “scientist” where I feel the need to cause myself pain and inconvenience to be “pure”. I want a comfortable productive working environment, and VI or Notepad with a command line utility ain’t it.
  2. Established… Every couple of years, someone somewhere tries to define some new language, and most of those die in obscurity; for example brainf*** or anything listed on Esolang.
  3. Popular / In Demand… As with most things, popularity is good, it means: open source community, support and most importantly jobs. If you ever want to see the current popularity of a language Tiobe is the site to visit.

So who are the contenders out there? Based on Feb 2011 Tiobe index:

Java is still the no.1 most popular, it has awesome IDEs and it’s been around for just more than 15 years (January 23, 1996), but thankfully I know Java reasonably well :)… so moving right along… To narrow down the list quickly, I won’t look at any languages that are losing popularity, for obvious reasons, so from the top 20 on the Tiobe list that excludes: C, C++, PHP, VB, JS, Perl, Ruby, Delphi, Go.
(C, C++, PHP, VB, JS, Perl, Ruby, Delphi, Go.)

Which leaves behind:
Python, C#, Objective-C, Lisp, NXT-G, Ada, Pascal, Lua, RPG

Now there is a line between established and old, I am going to make a call that could offend some people and say Pascal and RPG are just old. (PascalRPG)

Ada, don’t know much about it, after reading the ADA overview, it seems okay, going to exclude it based on popularity. (Ada)

Lua, from a quick read it is a scripting language. (Lua)

NXT-G has something to do with lego or some robotics, not very mainstream. (NXT-G)

Lisp again like Ada, at first glace seems fine, just not popular enough. (Lisp)

Then there are the “New, built on other platforms” functional languages: Scala, F#, Clojure. Although very temping being on the bleeding edge, it’s not all that profitable or marketable yet. I’ll give them some time to standardize, settle down and see if they are widely adopted. They do appeal greatly to my inner geek, so will always be keeping an eye on them.

So this leaves me with:
Python, C#, Objective-C, (and Java).

Straight away based on the above list we can Tick: IDE, Established and Popular / In demand. We all know they have decent IDEs: Eclipse, XCode, Visual Studio, (IntelliJ and Netbeans). They have also been around and are well known.

Now looking at number of jobs:
Found a site (Simply hired) with a graph displays the percentage of jobs with your search terms anywhere in the job listing. Since June 2009, the following has occurred:

Python jobs increased 72%
C# jobs increased 77%
Objective-c jobs increased 268%
Java jobs increased 76%

With the recent boom of iPads and iPhones the Objective-C percentage is not all that surprising. I do have a problem with Apple, Objective-C and XCode and that problem is you need a Mac to run it. Once you start down that road you end up having to change everything to Apple, and I am not ready to do that. So for now I am going to drop Objective-C out of the running. Although if I ever do buy into the whole Apple thing, this will got back to the list.

Leaving me with Python and C#, looking at their salaries compared with Java:
(Data from Payscale).

US Data

Java
PayScale – Java Skill Salary, Average Salaries by Years Experience

Python
PayScale – Python Skill Salary, Average Salaries by Years Experience

C#
PayScale – C# Skill Salary, Average Salaries by Years Experience

South Africa Data

Java
PayScale – Java Skill Salary, Average Salaries by Years Experience

Python
PayScale – Python Skill Salary, Average Salaries by Years Experience

C#
PayScale – C# Skill Salary, Average Salaries by Years Experience

Based on the US data, I would have gone with Python, it’s not as popular as C# but the pay is slightly better, I would also get to keep using Eclipse (PyDev) and Spring, but as soon as I looked at the South African data, I realized something, Python is really not big here. I manually went searching for Python positions advertised.. and found a grand total of 2 and the salaries were not good.

(Python)

Leaving C# as the last language standing.

It’s got Visual Studio (even a free version Visual Studio Express), It has proven itself over the last couple years, it’s out innovating Java at the moment, there’s a ton of jobs, a whole range of certifications and the salaries have closed the gap on Java. Seems quite a logical choice to me.

To top it off, I have also used C# many years back, so it won’t not entirely new. Most of the successful Java open source projects (Spring, Hibernate etc etc) have been ported so all that knowledge is reusable, which also counted a little in my decision. Now I just need to stop working 12-14 hours a day, and I can focus on getting back to my Microsoft roots with little C# as a Java developer. Hopefully a couple months after that I can go through this process again, looking at Python, Objective-C, the mobile platforms (iOS, Android, windows) or maybe rather a concept change to functional with the likes of Clojure or Scala.

Always help a … coder in need ;-)

Byron

Related Articles:

Translations:

This article is translated to Serbo-Croatian language by WHGeeks.

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Sayth
Sayth
11 years ago

I just worry about the c# platform going forward with the boom of Android and apple and the declining Sales of windows sort of has same limitation as objective-C it’s one platform only.

Wondering if Go or Rust will come in and go well.

Brian Du Preez
11 years ago
Reply to  Sayth

Hi,

C# and windows will be around for a very long time :).. and with a new CEO on the way it can only go better for them…

This article was written a little while back, since then I have dome some C# just to brush up, I then did about a year’s worth on ObjectiveC and iOS development.

I am currently learning about machine learning and AI, where the use of Python is very prevalent, so learning and using Python at the moment…

(Java still paying all the bills though)

Emanuele Blanco
11 years ago

In the TIOBE index Scala it’s not mentioned, and there’s been a huge increase of Scala jobs in London, for example. I’m not sure the TIOBE index is the best choice to choose a new language – the way languages get ranked on TIOBE index is not reflecting necessarily the need for languages :)

maurice
maurice
11 years ago

Interesting thoughts. Popularity, size of the community, salary, nb of Jobs, etc. There is maybe a couple of other additionall criteri to consider: is it fun? How interesting is the paradigm shift? Since I gave a chance to clojure some months ago, I really feel I’m better at java

Back to top button