Over the last couple of years I’ve noticed a consolidation in programming language choice in commercial and open source projects. The software industry is always changing, but there seems to be persistent interest and investment in a few select languages: JavaScript, Python, Java, and Go — the “Big Four.”

The Big Four pattern comes up in several industries: banking, accounting, even tech1. It seems to arise in mature markets after waves of consolidation. Perhaps it indicates an equilibrium, where the options cover sufficiently broad and distinct parts of the market. I wonder if software development has reached such an equilibrium.

I started seeing The Big Four in a few places. The JetBrains State of Developer Ecosystem 2019 report lists The Big Four in its “Key Takeaways” section. The Hacker News Hiring Trends report for December 2019 has The Big Four as the first four languages in its “Top 10 Programming Languages” ranking (counting TypeScript alongside JavaScript). The 2019 StackOverflow Developer Survey has three of The Big Four at the top of its “most wanted languages” list, only missing Java. GitHub is also big on The Big Four, as can be seen on GitHut and in the analysis by Piotr Sroczkowski.

Why these particular languages? I think it’s due to several developments that occurred over the last decade or so.

Will The Big Four stay stable? Perhaps for a few years. It’s possible to see how each of the languages may be displaced. JavaScript will go away once browsers no longer have to support it, which could be a decade or more in the future, if ever. Python may fade if there isn’t a big enough domain where it can be greatly productive (it already lost the DevOps domain to Go). Java will stick around for a long time with C# as its only real rival. Go could be replaced by a language with similar properties — a concise syntax, rich standard library, and native compilation — such as Kotlin, Rust, or Swift.

Thinking about the Big Four led me to consider whether there is a “Small Four,” a counterpart to the Big Four’s commercial, trend-driven, and utilitarian origins. Familiarity with the “Small Four” may not lead to a job or open-source notoriety, but it would help develop a deeper appreciation of software and keep programming interesting. From my point of view, the Small Four includes C, Lisp, shell, and a wildcard. C is a small yet powerful connector between language and machine. Lisp is also small and powerful, bridging the gap between theory and practice. Shell is a must for command line operations, but it’s also useful for sketching out applications (sometimes faster than “real” languages). Finally, the wildcard is any language outside of the Big Four that one finds interesting, like Erlang, Prolog, Red, or Smalltalk.

The Big Four — JavaScript, Python, Java, and Go — dominates the modern software landscape. Each language has a mature ecosystem optimized for specific domains, with minimal overlap between languages. It’s important to be familiar with each of the Big Four — the chances of using one of them directly or indirectly are high. Of course, the Big Four may change as trends shift, but the momentum of its current components makes exploring alternatives impractical and unprofitable. If the Big Four is here to stay, software development may enter a period of stability and productivity where the question of what language to use is no longer important — you’ll need more than one.

  1. Big Tech typically includes Google, Amazon, Facebook, and Apple. Microsoft or Netflix are sometimes added to the list, but the GAFA core remains rather stable. ↩︎