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 languages: JavaScript, Python, Java, and Go — the “Big Four.”

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? Maybe for a while. It’s possible to see how each of the languages may be displaced. JavaScript may drop out if Node.js declines in popularity and/or browsers gain a compelling alternative language. 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 challenging its advantages — concise syntax, rich standard library, and fast native compilation — such as Kotlin, Rust, or Swift.

Thinking about the Big Four led me to consider whether there is a “Little Four,” a counterpart to the Big Four’s commercial, trend-driven, and utilitarian nature. The “Little Four” might not lead to a job or open-source fame, but it helps develop a deeper appreciation of software and keeps programming interesting. For me, the Little Four includes C, Lisp, shell, and a wildcard. C is a small yet powerful bridge between language and machine. Lisp is also small and powerful, connecting theory and application. Shell is a must for command line work, but it’s also useful for sketching out applications (sometimes faster than “real” languages). Finally, the wildcard is any interesting language outside of the Big Four, like Erlang, Prolog, Red, or Smalltalk.

The Big Four — JavaScript, Python, Java, and Go — dominates the modern software landscape today. 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 — they come up all the time in real-world software engineering. Of course the Big Four may change as trends shift, but its current momentum makes exploring alternatives 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 always need more than one.