Emerging Languages Overshadowed by Incumbents Java, Python in Coding Interviews

Update: This article was picked up by DZone, InfoWorld and ADT Mag.

A study of over 3,000 coding interview challenges from HackerRank looks at which languages employers are proactively seeking.

Screen Shot 2016-08-01 at 10.54.27 AM

Tech might move fast, but industries are slower to adopt.

Software tools are about as predictable as the rise of Pokemon Go. 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 insightsparticularly 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.

social-and-healthcare (2) gaming-security

 

fintech-finance (1)

*****
 

Why is Java 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.

But if Java’s been around for almost two decades, what’s the catalyst that’s pushing it forward today even when newer languages are seemingly catching up? And why is it substantially more popular than other languages that came out during the same time, like Javascript or PHP?

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:Screen Shot 2016-08-01 at 11.10.15 AM
  • Strong financial algorithm performance
  • Enough resources for non-technical people to have transparency into the financial platform…a critical differentiation since the 2008 disaster. 

So, it’s probably no coincidence that there’s an uptick in Python jobs starting end of 2014…during the same time the crop of FinTech startups started exploding:

Screen Shot 2016-08-01 at 11.10.59 AM

Screen Shot 2016-08-01 at 11.11.30 AM

 

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:

Screen Shot 2016-08-01 at 11.15.38 AM

 

 

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:

  1. Serve an area that’s not too narrow, and not too wide. “‘Business is just broad enough, ‘Payroll only’ would be too narrow.
  2. Language should be big enough, but not too big for the average programmer to learn. 
  1. 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.

Leaving you with two questions:

  • Did you find any interesting trends across industries on the programming languages that employers are seeking out?
  • Based on Professor Dirk’s criteria, what should be the “next big” programming language to reign king?

21 Replies to “Emerging Languages Overshadowed by Incumbents Java, Python in Coding Interviews”

  1. As a proud Pythonista, I am really elated to see how far Python has come. It definitely has earned the ‘right’ to be the “next big” programming language to reign KING!

    1. It won’t be able to replace Java or C.

      You will have to combine it for the parts that really matter.

      Take numpy – it has C++ code as part of its swig-interface. So the people who wrote it, had to know C++ in order to enable it. It also uses C, like in mtrand – random/mtrand/distributions.c

      You don’t see any java here but you see C and C++.

      Of course you can use python without knowing C or C++ which is fine too but you will always have a barrier that can be overcome only by those who DO know C/C++.

      And as much as Java is praised, well. Python, Perl, Ruby – all written in C. Linux Kernel – C. (I think there should have never been a C++ in the first place – C should have evolved so that we would not have needed C++.)

      It would be more fair to compare the family of languages. Comparing Python to Java in itself I consider unfair. It is a lot more fair to compare python to ruby, php, perl, possibly lua, and so on. And there indeed, python has been growing the most – it would be more interesting to analyze THAT growth than the “whole growth” stack, because there is just no way how python would replace java simply because they occupy largely different niches. Or do we have something like JVM in python? That one really enabled other languages to be adopted onto java stacks.

      1. Hey Markus, thanks for your rebuttal. It’s quite true that Python does not shine in certain areas, especially where SPEED is the most important consideration. And yes, C is a powerful language that is still here to stay (it’s the BEST language I know for Systems Programming), and maybe it is going to gain some more ground with the rise of the ‘Internet of Things’ (where embedded programs on small devices are optimized for speed and memory). BUT as it is eloquently stated in the blog post, the next big revolution is AI and ML, two areas where Python out-performs the other languages by far. Also, Python has a wide spectrum of application domains, ranging from Bio-Informatics, FinTech, Pen-Testing, Natural Language Processing, to Web Development and Network Programming (it’s like a one-stop shop for your programming needs). Finally, if you want to get closer to the metal, C is your best bet. But if all you need is rapid prototyping and ‘playful programming’, then Python is your best friend, any time, any day. And I totally agree with you: there should have NEVER been a C++!! (Sorry Bjarne Stroustrup).

  2. Understanding pointers can only come from the knowledge of C/C++. Pointers are the basis for making these new open source languages simpler, by allowing data types to be interpreted at runtime. So you are able to reassign variables like in python to different types.
    The drawback is that objects are mutable.

  3. If you know C, you can pick up any other language in a day and start teaching it the next day. You can be an entry level web designer and get around using Python, but you must be a true computer scientist to master C and C++. When I am looking to hire software engineers, I seek those who are expert C programmers, and I encourage the use of C within my team wherever it is possible.

    1. It seems to me that PHP is still pretty big for building websites. It seemed to be really big with startups a couple of years ago. Now sure if Java is replacing PHP now, since SpringBoot is making development much easier.

    2. Stephen,Okay, I clicked on the link to the Claremont Review. I’m sure that, in it’s category, it is interesting stuff. Mostly, politics, economics, etc. It’s just that it’s not really within my main areas of interest, which center more around biblical theology, ecclesiology, evangelism, discipleship, mi2ssons&#8i30; And, as we each have a limited amount of time and energy… Hope you understand.

  4. Yes. Technology is improving very fastly. So, we have to upgrade everytime when technology changes its shape. But, knowing one complete programming language is better thing instead of go for two or more. It becomes easy to learn upgrades and other languages when you learn one language perfectly. Undoubtedly, Java is leading the market and will lead the market.

    1. I hope I don't sound cynical but marketing is of interest to enerrprentues because it correlates with revenue. If, as we are told, every post needs to make and deliver on a promise, the promise of increased revenue is an attractive one. Readers will click through if they believe the solution will make them money. After all, that is what they are in business for.

  5. I can’t help thinking that PHP is still entirely enormous for building sites. It was by all accounts huge with new businesses two or three years back. Presently beyond any doubt if Java is supplanting PHP now, since SpringBoot is making advancement considerably simpler.

Leave a Reply

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