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?
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:
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!
For other folks reading this thread, this is how you choose a programming language/tech stack:
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.