1

Help deciding on a "main" programming language to build awesome projects and for my general career (AWS & Terraform is my main work)

Profile picture
Anonymous User at Taro Community2 years ago

Hello, I asked about this before, but it’s a bigger dilemma now as I’m actively interviewing and many top roles seek a software engineering background.

Scenario: This past year at an AWS Cloud Consulting Partner, I built cloud and Terraform skills but had little software engineering experience. I dabbled in a few languages but haven’t committed to one. I want a versatile, productive, “startupy” language for an ambitious one-man project (possibly a PWA) that fuels learning, supports entrepreneurial goals, and offers a great dev experience.

What I Enjoy: I love game dev with Godot, but GDscript has no job market. So, I’m considering a scalable full-stack CRUD project like a PWA game site (think neopets.com) that I can build solo. I want to master one language and framework — no constant framework-hopping like with JavaScript. Here are my main options:

1. Ruby on Rails – Productive, “batteries included,” and fun (so I hear). While some call it “dead,” remote roles (like GitLab) still exist. I worry about it being a risky specialization.

2. Blazor + .NET Core – Full-stack with one language (C#) and “batteries included” features. Blazor is new, but .NET Core skills stay relevant. I dislike JavaScript’s endless framework churn, so Blazor’s stability is appealing.

3. Golang – I like its “one way to do things” philosophy, compiled binaries, and cloud reputation. But it’s focused on microservices, not full-stack projects. I’m unsure if I’d stay motivated building APIs instead of an end-to-end product. Python feels similar — powerful but maybe not a “do it all” full-stack option.

The Goal: I need speed, productivity, and specialization in a language worth mastering. I want to build a PWA project that teaches me core software skills fast and makes me marketable for software engineering roles.

What would you recommend?

308
2

Discussion

(2 comments)
  • 1
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    2 years ago

    I think what you need to figure out is what kind of software engineer you want to be. I'm seeing 2 big options here:

    1. Game developer
    2. Web engineer

    These 2 are pretty different. With #1, you might want to get good at something like Unity while #2 probably involves picking up React or Angular.

    I know that I've said that passion is extremely important, but there's a degree of pragmatism that needs to woven in as well. Ideally, you can find a stack that you're both excited about and is relevant to a lot of job postings across companies you're interested in. It seems like Blazor with NetCore C# could be very risky for this reason - It takes a while for brand new tech to be sought after by employers (fwiw, I've personally never heard of it).

    On the contrary, with javascript I felt like what I knew was never enough, there was always another framework or some abstraction on top of React, or new way to do JS I had to learn, which I found extremely frustrating.

    Is TypeScript any better for you? I also feel like learning React is enough - I wouldn't worry too much about always staying up to date with the "new thing". This is especially true with side projects: Just do the simple thing first, get it working smoothly, and grow the user base.

    Another option is to get into a company as some sort of AWS Specialist and then work out a pivot internally to SWE. This will make interviewing for SWE much easier - It might be tricky to convince those leads you have that your side projects are enough SWE experience (unless they get tons of users).

    All that being said, check out this course on side projects: Build Side Projects With 500k+ Users: Coming Up With An Idea

    Best of luck!

  • 1
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    a month ago

    For other folks reading this thread, this is how you choose a programming language/tech stack:

    1. It has demand in the job market - This can be easily proven with a quick Google or LinkedIn search. This is table stakes as you don't want to master something nobody is willing to pay you $$$ for.
    2. You have existing experience - This is especially true when it comes to interviewing. Employers are risk-averse, especially in a bad market like the current one. It is rare for a tech company to be comfortable with an engineer building in a certain language/tech stack for the very first time at their company (unless they are a complete junior engineer). If you are optimizing for interviews, it is much better to build on top of existing experience.
    3. You enjoy it - If you don't actually like what you do, you will quickly burn out. However, I will say that this factor can be overriden by #2 (i.e. you are experienced in something but don't like it) if you really need a job and aren't finding traction with interviews.
    4. You have an unfair learning advantage - The main way this manifests is the community around you. Let's say that your best friends are all Java engineers and they're willing to teach you Java. This is a great reason to pick up Java as your core language.

    There is no such thing as the "best" programming language. Understand the context of your situation and make an educated guess from there. You don't need to "big brain" this - Every second spent agonizing over language/tech stack choice is a second wasted not building something cool.

    This is all a 2-way door. If you pick Java and it turns out that you hate it with every fiber of your being, you can switch. Just make sure to switch quickly to avoid sunk cost. If you are introspecting well, you should be able to identify if you really hate something pretty fast.