Emerging Languages Overshadowed by Incumbents Java, Python in Coding Interviews
What we learned from 3,000+code interviews
Tech might move fast, but other industries are slower to adopt.
Software tools are about as predictable as the rise of Pokemon Go. Relative newcomers—like Swift—have quickly morphed into hockey stick lines in popularity graphs. And after years of darkness, even the dinosaur Perl got a new life last December that some Perl hackers are still wrapping their heads around.
It can be easy to be swept up by the hype…especially because it’s fun to move onto the next sexiest tool. To help keep a finger on the pulse of programming languages, there are quite a few rankings of language popularity based on a variety of sample sets:
- Github measures the repository commits
- Stack Overflow surveys developers
- RedMonk compares the two above
- The Tiobe Index looks at overall web activity
There’s something missing here. None of these unofficial rankings offer interesting industry insights—particularly during coding interviews. Our question was simple:
Which programming languages are employers proactively seeking the most often? Are there any variances by industries?
When you look at what the actual coding skill proficiency that you need, this study reminds us that employers aren’t into chasing shiny objects. Employers are still seeking strong foundational skills in good old Java, Python and C. They’re focused on infrastructure strength, security and scalability. Just ask Perl creator Larry Wall, who recently said that Java and Python were “institution-centric languages” because they’re simple and easy to manage. This also supports tech visionary Bret Victor’s observation that people have historically resisted new ideas that require people to unlearn what they know. Even Linux creator Linus Torvalds says he’ll probably never replace C with Rust simply because its assembler is portable, reliable and predictable.
How did we look for most requested languages in coding interviews?
HackerRank allows developers to solve coding challenges as part of the preliminary interview for over 1,000 companies, like Capital One, Booking.com, VMware. We analyzed over 3,000 coding challenges across six industries and focused on tests in which employers actively enabled or disabled programming languages of their choice. To be included, each industry had to represent at least 20 companies.
The caveat: Of course, many language-agnostic employers enable all languages by default. We eliminated these tests in our sample set to make sure our data isn’t skewed. This piece is not meant to be a statistically absolute, but a good measure to see if we can spot any interesting trends from the tests in which employers are going out of their way to enable or disable certain languages.
Why is Java is reigning king in most coding interviews
Square’s CTO Bob Lee called it in 2011: We’re amidst a Java renaissance. Not only is it dominating as the language most often enabled in an interview by employers, it’s also the top choice for developers to solve coding challenges during coding interviews. This includes tests that are language-agnostic.
In addition to startups like Twitter, which famously had to switch to a Java-backed front-end system, JavaWorld says that 90% of Fortune 500 companies use Java today, and more than 10 million Java developers exist today.
It’s likely a perfect storm of rising technologies that depend on Java. One catalyst is the free, open source Java Virtual Machine, upon which many other languages depend. With the proliferation of the virtual machine, employers increasingly need Java developers to sustain the foundation elements. In fact, another reason why Java’s so attractive is because it can run on multiple machines (Windows, Mac, Linux, etc.) with one compiled library, unlike C++ which needs a specific compiled binary for each machine.
Many credit Google’s choice of Java for its Android platform. If you think about the massive explosion of Android within the last few years, which depends on Java, it’s become an essential component for any developer that wants to code in the world’s most popular operating system:
- 190 Countries
- 1 million new devices booted up daily
- 85% of smartphones are using Android
A third Java catalyst is Big Data. It’s certainly not the only–and definitely not the sexiest—tool for handling large quantities of data, but it plays a major role in the Big Data ecosystem. Libraries of Hadoop MapReduce, HDFS and Lucene, for instance, require knowledge of Java to solve the most interesting problems happening in Big Data, which has blown up in parallel over the past few years. Java certainly has its downsides, but ultimately it’s widespread and it works. Plus, with the release of Java 8 in 2014, some of the verbosity has been minimized with new, lambda support to improve readability. This year, Java 9 is set to release with improvements for enterprise programming, according to JavaWorld, which will probably keep the momentum going.
Why Python is dominating FinTech
Most of the charts above have a very gradual distribution of programming languages enabled…except FinTech. FinTech is the only industry where Python is taking a noticeably far lead as a language that’s enabled 50% more than the runner up Java.
It makes sense. Finance is a field that’s placing more and more value on technologists over traders. Finance tech recruiters will tell you that Python is the fastest growing language in finance in general. If you look at finance technologies, big banks like Bank of America have worked hard to transform their tech stack from legacy code to Python. There are quite a few reasons that collectively make Python a favorite for stealthy FinTech startups:
- Clean, easy syntax (4 lines of Python can draw 10,000 pseudo-random numbers, for instance…and fast too).
- Unlike any other tool, Python offers a comprehensive ecosystem of open source financial libraries, courtesy of Dr. Yves Hilpisch:
- NumPy (fast, vectorized array operations)
- SciPy (collection of scientific classes/functions)
- Cython (static compiler for hybrid Python and C code)
- pandas (times series and tabular data management)
- ibis (Pythonic interaction with, e.g. relational databases)
- PyTables (hardware-bound IO operations)
- TsTables (high-performance tick data storage/retrieval)
- scikit-learn (machine learning algorithms)
- statsmodels (statistical classes/functions)
- xlwings (Python-Excel integration)
- Strong financial algorithm performance
- Enough resources for non-technical people to have transparency into the financial platform…a critical differentiation since the 2008 disaster.
Ultimately, Python is becoming king of mathematical programming, which is a critical function of new finance companies. Plus, Python is easier to learn by other professions, like mathematicians, physicists, etc., than traditional computer science concepts using C++/C.
Low level wonder of C
Security companies and startups seek out C programming language skills more often than other industries in this study. It’s not surprising since C has been a celebrated systems-level language. Security companies using HackerRank (Symantec, FireEye, Citrix, Juniper) are securing and monitoring technologies built on these low-level languages.
One speculation for this could be that, unlike other feature-driven or API-driven languages, the C language offers a lot more control over your code since it’s not written on top of a virtual machine. The compilers are simple, to Torvalds’s point mentioned earlier in this piece. It could be that the C language allows for easier auditing to prevent security issues. A second speculation could be because many operating systems are traditionally written in C. Linux, for instance, is written entirely in C and other OS’s like Windows and Mac also have components of C, especially as they relate to security.
The catalyst of adoption & why Python could be slated to be king
But what really makes or breaks a programming language’s chances of ubiquitous adoption in the industry? If you think about it, there are actually hundreds of programming languages in computer science. But only 7 or so are worth talking about at a time. And software engineers usually learn only 1-2 “star” programming languages to work in industry. Before Java, C, C++ ruled all. And before that, Cobol, Visual Basic and Fortran reigned king.
One paper by the Association for Computing Machinery by Professor Molina Derk dissected this very question from a historical lense, and came to a profound conclusion. The author studied each and every “superstar” programming language to figure out what makes each one worthy of fame. It turns out:
“In each case, the language rode the coattails of an application area or environment whose time had come. It came on the back of a “big thing.” Consider the following core examples, courtesy of Professor Molisa Derk of Dickinson State University:
Java bumped C++ out of most intro to programming courses, according to the research paper (and forums).
Following this train of thought, what will be the next big thing? According to Professor Derk’s findings, the next “superstar” language must:
- Serve an area that’s not too narrow, and not too wide. “‘Business is just broad enough, ‘Payroll only’ would be too narrow.
- Language should be big enough, but not too big for the average programmer to learn.
- Timing is key. It helps if the programming language arrives on the scene just as the “next big phenomenon” is blowing up.
If the next big revolution is Artificial Intelligence and machine learning, then all signs point to Python as the next “superstar” programming language to rule all. It’s certainly a broad enough field, easy to learn and the timing is right since we’re merely at the beginning of what lies ahead in AI. Plus, there are quite a few signs of Python takeover happening already. FinTech is one of the first disruptive industries to show us what Python can do. And it’s already gaining preference within the Big Data community, which is an essential prerequisite of the AI revolution.
Best of all, it’s got an easier learning curve than C, C++ or even Java. In fact, in 2014, Python is the #1 most popular language for teaching intro to CS in US universities. Even top-ranked colleges, like MIT, switched to Python in recent years because the simpler syntax and lack of verbosity could encourage more CS grads to enter and stick with the major. Top companies like Mozilla, Instagram and the Washington Post use Django, which is an open source web framework written in Python. What’s more, Python already has great frameworks for machine learning, like Scikit-Learn.
While it’s true that software engineers must remain adaptable to ever changing technologies, what’s not as often talked about is that adopting good software development tools takes decades, and it’s not always easy to predict. Unlike other fields that are deliberately designed, good software development takes several years of versions before it’s ubiquitously adopted. All of this is to say, such programming language rankings should always be taken with a grain of salt before leaping over the next hyped language or tool, of you move too fast or getting worried about the next hot tool that could force you to miss the bigger picture.
But again, this AI and Python revolution won’t come without human friction. No matter how much excitement a new programming language or tool might spur within developer blogs and forums—one thing’s for sure—businesses almost always adopt these tools at snail speed. Technology is quick to change, but people’s minds aren’t. It’s really hard for businesses to change the way they operate.
Did you find any interesting trends across industries on the programming languages that employers are seeking out? And based on Professor Dirk’s criteria, what should be the “next big” programming language to reign king?