Hello. I did kind of ask about this before, but now it's more prevalent dilemma for me as I'm actively interviewing and many of my best opportunities are asking for someone who ALSO has a software engineering background:
Scenario: This past year at working an AWS Cloud Consulting Partner I only grew my cloud and Terraform skills and it was my first professional role. I didn't have any software engineering mentoring and I had very little programming work outside Terraform, but I got to mess with a few different languages in my spare time and still haven't decided on one to main. So I figure it needs to be a language & framework good for an ambitious one-man project (possibly a PWA) that I can be passionate about which would drive my learning, provide a great and productive developer experience so I can build some epic stuff myself and learn from it.
Basically, I need a versatile, productive, "startupy" programming language that can be my "main" and kill two birds with one stone here as I have entrepreneurial ambitions:
What do I like doing? What am I passionate about? Well, game dev with Godot. But it uses GDscript and job prospects with it are nill. So I'm considering making a game website PWA like the old neopets.com as a one man show. So definitely a scalable full-stack CRUD project. I want my development experience to be as productive as possible, and for that reason I'm now considering mainly the firs two options here:
1. Ruby on Rails (despite it being the butt of many jokes and claims that its dead) . It being "batteries included" and everything else I hear about it is that its super productive and fun. I have not tried it yet though. It might be an ace because I see a number of "remote work from anywhere" opportunities for ruby devs to work on legacy code, i.e Gitlab, but I'm really wary of it being a bad choice to specialize in for my career.
2. Blazor with NetCore C# - Blazor is new tech with inherent risk, but it would allow me to focus on one language and framework while doing the full stack (I think similar to Ruby with the "batteries included" approach.). There's a risk of Blazor being new, but the Net Core skills I obtain will always be relevant. 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. I'm really not a Javascript fan because of that, but if I had to, I'd probably try Svelte. But the point is, I'm trying to avoid bouncing around the way I have been. I really need to be an expert with one language and framework, and I'd like to be able to "do it all" with that language and framework for it to have an opinionated way with best practices so I can get up and running quickly and learn the skills I building an awesome project.
3. Golang - I started looking at Golang because of it being said that it has an opinionated way of doing things rather than a 20x ways to do one thing which was very appealing to me. Also it's cloud reputation, compiling down to a binary. BUT - it seems its for microservices rather than an impressive full stack startup project. I'm not sure how motivated I'd be making an API instead of a complete project like the PWA game site I mentioned. I really don't want to have to switch to JS for a React front end to get up and running. For this reason, I'm also not sure if Python is a good choice compared with the first two options. I know it has a templating feature, but can I do it all with that?
Can I get some opinions and advice? I'm looking for a new job and need to build up my core software skills fast as possible:
Speed, productivity, specializing in a worthwhile language and learning core software engineering through making an awesome PWA project are my main targets for this.
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, here's the masterclasses you gave on effective side projects:
Best of luck!