Best Programming Language to Learn in 2023

Best Programming Language to Learn in 2023
Photo by Chris Ried / Unsplash

Clare's eyes glazed over reading yet another Quora thread on the best language to learn. Python because of its simplicity? JavaScript for web development? Or low-level C++ favoured by AAA gaming companies? Her bookmark bar overflowed with blogs she kept opening and closing, unable to decide where to start.

Paralysed by options, Clare closed her laptop and slumped down in her chair. She was no closer to writing code than when inspiration first struck a month ago to build her own app. She recalled the excitement when she mapped features on napkins during her friend’s wedding reception. The glow had faded now, displaced by decision fatigue around the "right" language.

If only she knew then what I know today...

It contradicts the common wisdom thrown at new coders, but the key is mastering coding fundamentals first. The specific language itself comes second. With the core concepts clicked into place, choosing your path forward becomes much clearer. By focusing on fundamentals before specialisation, you create space to grow into your path. No need to sweat those day one picks!

Conventional Wisdom Has Its Flaws

I empathise with that overwhelmed feeling that left Clare frozen. When I first started coding, the same paralysing pressure to pick the "right" language nearly short-circuited my brain too. My first foray into programming had my downstairs neighbour tell me to learn the LAMP stack first. I can't tell you how glad I am that I ignored that advice!

There's an overwhelming amount of standard advice dished out to new coders:

  • Learn Python or Ruby because it's easy and versatile for beginners.
  • JavaScript runs in web browsers, so pick that for web development.
  • Java has tons of enterprise job opportunities.
  • Learn low-level C/C++ to understand computer science concepts.
  • Chase the latest trendy languages like Go and Rust to stay relevant.

On the surface, these tips seem helpful for navigating a coding landscape with endless options. But when just starting out, this blanket guidance contains some logical flaws:

1. Most new coders lack context to evaluate tradeoffs. Should someone focusing on front-end web development really spend months first with C++ pointers and memory allocation? Likely not the most efficient path.

2. Blanket advice disregards specific career goals. If you dream of designing video games, C++ or C# are clearly better initial options than trendy JavaScript frameworks.

3. Generic guidance paralyses more than it helps. With so many languages touted as the "best" first step, it's no wonder new programmers are overwhelmed.

Rather than obsessing over mainstream talking points, the better approach involves...

Start With Fundamentals, Then Specialise

Instead of getting overwhelmed by the quest for the “perfect” first language, I advise starting with high-level scripting languages to learn coding fundamentals.

You have to walk before you can run. The same goes for coding. Ruby, Python or JavaScript introductions would build critical foundations in:

  • Core programming concepts - variables, data types, functions, conditionals
  • Automated unit/acceptance testing
  • Web development basics like HTML/CSS
  • Practices for clean, readable code
  • Leveraging existing libraries/frameworks

And whats more, all three have welcoming communities to help people get unstuck. With these fundamentals down you could then choose a specialised path, whether sticking with a scripting language or moving to lower-level languages.

The fundamentals form an intuitive sense for translating ideas to code. At their core programming languages all require you to think like a programmer.

Find Your Community

While starting to code through online tutorials provides initial exposure, real transformation comes from joining a community of fellow coders. Connecting with others accelerates learning—from meetups to bootcamps to online forums.

Attempting to master coding solo is often an exercise in frustration. In the real world collaboration and teamwork are integral skills in bringing software ideas to life.

Finding beginner spaces provides:

  • Motivation & accountability to turn tutorials into real projects with other learners also levelling up. Shared struggles help perseverance.
  • Instructors and mentors that guide optimal learning paths based on industry experience and expertise.
  • support network to get unstuck when inevitable coding roadblocks arise. Why bash your head against a bug for days when you can ask peers for help?
  • fun, engaging coding journey rather than isolated and painful solo marathon. Enjoying the process ensures progress sustains long-term.

By plugging into a community centered on mastering fundamentals and focused on project work, new learners can escape also tutorial paralysis. With instructors tailoring guidance and a band of comrades to brainstorm with, progress unlocks.

In my own journey into software I remember very distinctly coming home from my first evening code meetup. I announced to my partner, "I've just learned more useful stuff in 2 hours than I have in 3 months of trying to teach myself". And while this was likely an exaggeration, at the start of your journey, you just don't know what you don't know.

Enjoy the Journey

Learning to code opens up a world of creation and problem-solving. But beware trying to shortcut your way to “expert” overnight. Like mastering any complex craft, quality software development rewards those who cherish the incremental journey itself.

Start slow with beginner-friendly languages and communities focused on fundamentals over specialised niches. Small early progress can be the motivation to continue – maybe a simple web page or command line script. Savour these small wins even as your ambitions grow.

Stay curious, ask questions, and unlock each new achievement step-by-step. There is no finish line. New languages, frameworks, and runtimes will always emerge. But with core coding concepts cemented, you can grow in any direction.

You may someday work at a FAANG company optimising algorithms for scaled systems. Or you may automate daily Excel reports in your current role. Either way, by beginning your coding journey focused on transferable fundamentals rather than narrow specialisation, you set the stage for lifelong value whether complex or simple in scope.

The most expert developers today still cherish the thrill of a first program the wrote and ran (It was probably Hello, World!). Will you look back years from now, reminiscing on the magic of your first code execution? Or will you keep postponing the journey, seeking the “perfect” on-ramp?

With community, curiosity, and coding fundamentals powering your first steps today, imagine what you might create tomorrow.

Nick Dyer

Nick Dyer

London