shutterstock_179445620.jpg
lenetstan Shutterstock In a previous article, I discussed the best programming languages to learn over the next year. Most of those were popular languages such as C#, JavaScript, PHP, and Swift. (I also did a follow-up that sang the virtues of Objective-C and Python.) But that’s not the final story on languages: Programmers can also benefit from learning other, less popular languages that could end up paying off big—provided the programmers who pursue them play their proverbial cards right. And as with any good card game, there’s a considerable element of chance involved: In order to land a great job, you need to become an expert in a language, which involves a considerable amount of work with no guarantee of a payoff. Click here to find a programming job.  

Supply, Demand, and Negotiation Skills

One factor in getting a high-paying job is analyzing the ratio between supply and demand. Some languages may not have many jobs available, but relatively few applicants compete for each job. Check job boards (such as Dice.com) and note the number of jobs, as well as how long those jobs have been open. If jobs are open an average of a few months, there’s a good chance that companies are having trouble finding suitable candidates—which creates a good opening for someone with the right qualifications to swoop in. Even in an excellent job market, however, locking down that high salary also requires good negotiation skills. If the job requires that you move to a new city, you’ll have to fold data about that city’s cost of living into your decision matrix. With that out of the way, let’s consider some languages.

R

R is a language that focuses primarily on statistics and data visualization. It's not a general-purpose language; you wouldn't use it, for example, to write for a Web server. Its syntax is quite unique, as it's technically an implementation of an earlier language called S, and it’s quickly growing, surpassing older platforms such as SAS among statistics pros. Job listings for R often carry titles such as “data scientist” and “BI developer” and typically include the “Big Data” keyword. One industry where you find a lot of people using R is in pharmaceuticals, where the biggest firms employ a lot of statisticians. And indeed, a New York Times article from 2009 reported that back then Pfizer was seeing a great increase in interest and use in R. Note: Because the language is just a letter, it can be difficult to locate R jobs in the search engines. For Dice.com, use the advanced search and include an additional word; for example, you can put in R Programmer and choose the “Match all words” option. Here's some sample R code, from the website R Examples.
countdown <- function(from) {

  print(from)

  while(from!=0)

  {

    Sys.sleep(1)

    from <- from - 1

    print(from)

  }

} countdown(5)
This code does a simple countdown (sleeping briefly between each iteration) and prints out each step.

Scala

Scala is a language that runs atop the Java Virtual Machine (JVM). It was created as sort of a “better” Java. Because it targets the JVM, it works seamlessly with existing Java classes and platforms. The name is a shorthand for “Scalable Language,” and I've met people who assume this means it's for writing scalable, distributed applications, but that's not really what the word means in this context. According to the documentation, it means the language “grows with you,” from very simple programs to extremely complex systems. One interesting aspect of Scala is that it includes full functional support that’s totally optional. If you're not into functional languages, or haven't learned yet about functional programming, you don't need to use the functional aspects of it. Here's a sample “Hello World” program in Scala, from the samples on the main Scala site.
object HelloWorld {

    def main(args: Array[String]) {

      println("Hello, world!")

    }

  }

Haskell

Haskell is a purely functional language that dates back to 1990. While it has slowly grown in popularity, it remains a bit of a niche language. The language includes an open standard that has been updated a few times over the years, and there are free compilers, including one that targets the Java Virtual Machine (JVM)—making it a good choice for projects that work together with Java libraries. There are many projects that use Haskell; one I encountered is the Xmonad windowing system for Linux. There's also a nice building and packaging program for Haskell called Cabal. Alongside Cabal, Haskell includes a large packaging and distribution system that lets you search, download, and easily install Haskell packages in much the same was as you can with a Linux package installer such as aptitude. You can check it out at the Hackage (Haskell Package) site. Here's some sample Haskell. This code comes from a site called School of Haskell:
lst = [2,3,5,7,11] total = sum (map (3*) lst) main = print total
This code calculates the sum of 3 times each number in the list. It shows the elegance of Haskell, as you don't have to actually write a loop.

F#

F# is Microsoft's answer to an older functional language called ML. Influenced by OCaml, itself a derivative of ML, F# was originally a .NET language, targeting the Microsoft CLR, and produced by Microsoft Research. (There is a separate group called the F# Foundation, which is an informal group that maintains a language specification.) The older ML language pioneered various aspects of functional programming, and F# also includes functional aspects. But unlike Haskell, F# is not a purely functional language. Jobs for F# are slowly growing, despite little reaction from the programming community when Microsoft released the language (with great fanfare) in 2005. (Note that if you know OCaml or ML, you will be able to learn F# quite easily, and vice versa; knowing F# you could easily learn and land a job in OCaml.) Here's an example line of F#. (I borrowed this from the Wikipedia page.)
let query1 = query { for customer in db.Customers do select customer }
This line uses Microsoft's LINQ technology to search the Customers table in a database.

Clojure

Lisp is a language that came out way back in 1958, and although the original language is pretty much dead and gone, several of its descendants live on. One in particular is Clojure, which is new by Lisp standards—it came out in 2007. Since its first release, over 800 people have helped contribute to it. The language is open source and built to target both the Java Virtual Machine (JVM) and Microsoft's Common Language Runtime (CLR). As the language continues to grow in popularity, so do the jobs. (By the way, you sometimes see jobs for other descendants of Lisp, such as Common Lisp and Scheme.) Here's an example line from Clojure's getting started page:
(javax.swing.JOptionPane/showMessageDialog nil "Hello World")
This looks just like Lisp syntax, with the statement inside parentheses, and the first item inside being a function name—in this case, one from the standard Java Swing library that shows a message box.

Ancient Languages

This might shock some people, but jobs still exist for languages such as COBOL and PL/1. I spoke with a recruiter who said that he has a position for COBOL that's been open well over a year, and he simply can't find anyone to do the job. If you're brave, you could learn COBOL and take on jobs such as that one, usually offered by very large, well-established companies that have been around for decades (since new companies are unlikely to start new COBOL projects). The downside is that you would spend lots of time learning and using COBOL, which isn’t exactly a popular skill set. Another ancient language that refuses to die is Fortran. There are still many jobs in Fortran, most of which involve scientific applications or possibly even parallel applications, as Fortran supports the OpenMP parallel programming standard.

Conclusion

Just because a language isn’t the most popular anymore doesn’t mean you can’t profit from it, especially if employers are desperate for people skilled in that language. Be aware, though, that becoming a specialist in a little-used language also includes a certain element of risk, if only because the hours devoted to mastering that language could very well serve another (and equally lucrative) purpose.

Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you're awesome.

Related Articles

Image: lenetstan/Shutterstock.com