Use This Framework to Pick Your Next Programming Language

As a full-stack developer, one of the most important (and daunting) decisions you face is which programming languages to learn. In an ideal world, you‘d be fluent in every language under the sun, seamlessly switching between them as the task requires. But in reality, you have limited time and mental bandwidth – learning a new language is a significant investment, so you need to be strategic about which ones you choose.

The good news is that you don‘t have to make these decisions in a vacuum. By looking at data on the popularity, growth trajectory, and dominant use cases of different languages, you can get a sense of which ones are likely to pay the most dividends. One framework I‘ve found particularly helpful for this is the growth-share matrix.

The Growth-Share Matrix

Originally developed by the Boston Consulting Group, the growth-share matrix is a tool for analyzing a company‘s product portfolio. It plots products on a 2×2 grid according to their relative market share (high or low) and the growth rate of their market (high or low). This divides them into four categories:

  1. Stars (high share, high growth): Market leaders in a fast-growing industry. These are worth investing heavily in to maintain their lead.

  2. Cash Cows (high share, low growth): Established winners in a mature market. These provide stable profits that can fund investment in other areas.

  3. Question Marks (low share, high growth): Contenders in an up-and-coming market. These have potential but require resources to grow market share.

  4. Dogs (low share, low growth): Stragglers in a stagnant market. These are candidates for divestment or even discontinuation.

Growth-Share Matrix

While this framework was designed for companies, I think it also provides a handy way for developers to visualize the programming language landscape and prioritize their learning. Think of each language as a "product" that you can choose to invest your time and energy into, with the goal of maximizing your future career opportunities.

Mapping the Language Landscape

To build our programming language growth-share matrix, we‘ll draw on three main data sources:

  1. The StackOverflow Developer Survey, which asks tens of thousands of developers about the languages they use and want to use
  2. GitHub Language Stats, which shows the relative popularity of languages in public GitHub repos
  3. The TIOBE Index, which ranks languages based on their share of search engine results

By triangulating across these sources (and adding a dash of subjective judgment), here‘s how I would map some of the most notable languages:

Low Growth High Growth
High Share Cash Cows

JavaScript, Java, C#, PHP, C++
Stars

Python, TypeScript, Go, Kotlin
Low Share Dogs

Objective-C, Perl, Ruby, Visual Basic
Question Marks

Swift, R, Scala, Rust, Elixir, Dart

Let‘s dive into each quadrant to see what insights we can glean.

The Stars

These are the languages currently enjoying heady growth and buzz. If you‘re looking to ride the wave, these are worth hopping on.

Python

Python has cemented its position as the Swiss Army knife of programming, with applications ranging from web development to data analysis to DevOps. It‘s eating the world, especially in the realms of data science, machine learning, and academic research.

Key drivers of Python‘s meteoric rise:

  • Unparalleled ecosystem of data science and ML libraries (NumPy, Pandas, SciPy, scikit-learn, TensorFlow, PyTorch)
  • Elegant syntax and shallow learning curve, making it popular for teaching and rapid prototyping
  • Versatility as a glue language, allowing easy integration with other languages and tools
  • Strong adoption by the scientific community and major tech companies like Google

If you‘re at all interested in data, AI, or backend web development, Python is a must-learn.

TypeScript

TypeScript has exploded in popularity, becoming the default choice for many new frontend and Node.js projects. By adding static typing and other features on top of JavaScript, TypeScript offers several advantages:

  • Enhanced IDE support and type checking, catching errors earlier in development
  • Easier refactoring and maintenance, especially on larger codebases
  • Clearer intent and more self-documenting code
  • Smoother onboarding of developers from Java/C# backgrounds

Given that JavaScript is still the undisputed king of the web, TypeScript‘s rise is no surprise. It makes the frontend more palatable to developers used to typed languages while still integrating seamlessly with the JS ecosystem. Even if you‘re already proficient in JS, TypeScript is worth learning to future-proof your skillset.

Go

Launched by Google in 2009, Go (or Golang) has found a niche as an efficient language for systems programming and infrastructure. It‘s gaining popularity for:

  • Building CLIs and DevOps tools (Docker, Kubernetes, Terraform)
  • Creating high-performance web servers and microservices
  • Simplifying concurrent programming via goroutines and channels
  • Compiling to portable binaries for easy deployment

Go‘s simplicity, standard library, and tooling make it a joy to work with, especially compared to C or Java. While it may not be as widely applicable as Python, it‘s earned a loyal following among backend and infrastructure engineers. As more companies adopt microservices and containerized architectures, expect demand for Go skills to keep rising.

Kotlin

Since Google blessed it as an official language for Android in 2017, Kotlin has rapidly gained ground in the mobile app world. Compared to Java, Kotlin offers:

  • More concise and expressive syntax
  • Null safety and other features to prevent common errors
  • Excellent interoperability with existing Java code and libraries
  • First-class IDE support and faster compilation

Kotlin‘s advantages are so compelling that it‘s become the default for new Android projects. It‘s also gaining traction for backend development, since it can target the JVM and even compile to native binaries. As a full-stack developer, learning Kotlin is a no-brainer if you‘re at all involved in Android or JVM ecosystems.

The Cash Cows

These stalwarts form the backbone of many companies‘ tech stacks. They may not be cutting-edge, but they‘re not going anywhere anytime soon.

JavaScript

The OG web language is still going strong after 25+ years. Even with the rise of TypeScript, most frontend code is still plain ol‘ JavaScript at its core. Reasons for its continued dominance:

  • Ubiquity across web browsers and ability to manipulate the DOM
  • Huge ecosystem of libraries and frameworks for every conceivable use case
  • Increasing use for backend (Node.js), mobile (React Native), and desktop (Electron)
  • Beginner-friendliness and instant feedback loop in the browser

Like it or not, JavaScript remains an essential skill for any web developer. You don‘t need to love it, but you do need to know it.

Java

The trusty old workhorse of the enterprise, Java still powers a huge amount of business-critical infrastructure. Its longevity is a testament to its:

  • "Write once, run anywhere" portability across operating systems
  • Rich ecosystem of battle-tested frameworks and libraries (Spring, Hibernate, Apache Commons)
  • Performance and scalability for large, distributed systems
  • Deep pool of talent, with many CS grads learning Java as their first language

Despite losing some buzz to newer languages, Java remains a solid choice for building complex backend systems. Its relative verbosity and steep learning curve may turn off beginners, but its stability and versatility keep it entrenched in the enterprise world.

C#

The flagship language of the Microsoft ecosystem, C# is commonly used for:

  • Building Windows desktop apps and games with Unity
  • Developing web apps and services on the .NET platform
  • Scripting in tools like PowerShell

C#‘s similarity to Java makes it easy for developers to switch between the two. While it‘s less cross-platform than Java, C# benefits from tight integration with Microsoft‘s developer tools and strong support for functional programming concepts. If you‘re targeting the Microsoft ecosystem or game development, C# is a valuable addition to your toolkit.

The Question Marks

These upstarts are gaining traction rapidly, but it remains to be seen whether they‘ll break through to the mainstream. Keep an eye on them, but don‘t feel pressured to learn them just yet.

Rust

A darling of systems programmers, Rust has been voted the most-loved language on StackOverflow for several years running. Developers adore its:

  • Ability to write safe, speedy, and memory-efficient code
  • Powerful static typing and ownership system to prevent common errors
  • Helpful compiler messages that guide you to correct code
  • Growing ecosystem for WebAssembly, embedded devices, and other low-level domains

The main knock on Rust is its steep learning curve, especially for developers used to garbage-collected languages. But for performance-critical applications where safety is paramount, Rust is becoming a serious contender to C++. It may be overkill for most web development projects, but it‘s worth learning if you‘re interested in systems programming.

Swift

Apple‘s successor to Objective-C, Swift has become the de facto choice for iOS and macOS development. Its advantages include:

  • Clean, expressive syntax with modern features like optionals and type inference
  • Improved type safety and error handling over Objective-C
  • Interoperability with existing Objective-C code and Cocoa frameworks
  • Potential for cross-platform development with server-side Swift

While still primarily used for Apple ecosystem development, Swift has been steadily gaining market share and mindshare. It‘s not quite a must-learn yet unless you‘re focused on iOS, but it‘s definitely one to watch.

The Dogs

These once-mighty languages are slowly losing relevance as newer alternatives gain ground. Unless you have a specific reason to learn them (like maintaining legacy codebases), you‘re probably better off investing elsewhere.

Objective-C

Objective-C has been steadily losing ground to Swift for Apple platform development. While there‘s still a large installed base of Objective-C code, most new iOS and macOS projects are being written in Swift. There‘s little reason to choose Objective-C for greenfield development today.

Ruby

Ruby (and its web framework Rails) was once a darling of the startup world, powering the rise of companies like Twitter, Shopify, and GitHub. However, its growth has stagnated in recent years as developers have shifted to other languages like Python, Go, and Node.js. While Ruby is still a pleasant language to work with, it‘s no longer a must-learn for web development.

Putting It All Together

So what‘s the takeaway for you as a full-stack developer? Here‘s my advice:

  1. Master the essentials. Every full-stack dev should be proficient in JavaScript and a backend language like Python, Java, or C#. These are the table stakes for most web development jobs.

  2. Supplement with up-and-comers. Once you have the basics down, start learning one of the high-growth languages like TypeScript, Go, Kotlin, or Swift. These will expand your capabilities and make you more attractive to forward-thinking employers.

  3. Explore the niches. Depending on your interests and career goals, it may be worth diving into a more specialized language like Rust or Scala. These can open doors to specific industries or domains.

  4. Don‘t spread yourself too thin. Trying to learn every language under the sun is a recipe for burnout and mediocrity. Focus on going deep on a few complementary languages rather than collecting shallow knowledge of dozens.

  5. Adapt to your environment. The best language to learn depends heavily on your current (or desired) company and tech stack. If everyone around you is using Ruby, it may be worth prioritizing that over a trendier but less relevant language.

  6. Plan to re-evaluate periodically. The language landscape is always evolving, so what‘s fashionable now may be passé in a few years. Make a habit of checking back in on the growth-share matrix every year or two to see which languages are on the rise or fall.

Above all, remember that languages are just tools in your developer toolbox. The more you learn, the more problems you can solve – but don‘t neglect the fundamentals of software design, architecture, and collaboration. Those skills will serve you well no matter which languages come and go.

Similar Posts