I just watched Alex’s ”Level Up Your Code As A Software Engineer“ course. I wanted to ask about the first portion of the “Better Code Strategy” module.
A part that resonated with me is where Alex said he sees many junior devs fall into a trap of full stack when trying to specialize, which hinders them in the long run. It makes total sense that people would rather hire a 9/10 on front end than a 5/10 at front and back. I was in this situation at my previous employer - new grad role with a 4 month ramp up program. I didn't do so well on front end in training, and was told that I’d be placed in a back end role, so it “wouldn’t matter anyway”. Guess who got placed doing front end work? I had barely any support so I had to figure out everything myself. I was the only front end person on that team - the only other dev there was an L6 in back end. I also wasn’t good at communicating back then, so I was hindering the team a lot. 9 months later, I started handling front end. And right when I got good at handling front end tasks myself, I was told the architects wanted the apps my team was working on to make API calls to the backend rather than mid tier… so the team shifted focus to backend. I lost all my gains on backend by then, so that sucked. Another learning curve, within 2 months I gained independence. A week after I was told I was doing really well, I was laid off. Many people at the company outside of my team voiced that they put me in a "bad" position. I also point the finger at myself, because there was a lot that I needed to take accountability for.
Eventually, I got another job, doing database work. When I look at SQL, I see consistency in SQL and other coding languages. APIs, cloud, data, it all needs databases! To understand the world of code, it’s like everything draws back to databases. In my current role, as long as I pass the onboarding phase, then I can achieve excellence anywhere I go in my career with incredibly transferrable skills. Although I feel like I found where I’d like to dedicate time to specializing to get to the upper echelon of software engineering, I noticed I’m somebody who doesn’t mind what I do because I like everything I’ve seen so far. That’s why I figured to go for the niche that is “best” for all around career growth. With this in mind, what do you think the best fields to specialize in are?
Start with a programming language you're most comfortable with and can consistently write code in.
I'm glad you like a lot of things 😊. I also like a lot of things, but front-end consumer mobile is what I like the most. Are there certain things you like more than others? Like to the point where you're happy to work overtime on it because it doesn't feel like work, similar to what I did with my 30+ side projects with 5 million+ users combined? If so, pick that.
If not, here are the 2 factors that matter when choosing a specialization:
If your passion is sort of equal for everything, you need to figure out how good you are at the end. This is tricky as judging your strength will vary based on the tech stack and the company you're at (as you've seen, you can be put in a bad position which might make you reflect on the teck stack you're working on more negatively). Here are some questions to think about when judging your strength in a particular area:
On a more tactical note, I would be careful if your job is mostly running SQL queries as that will pigeonhole you more into data scientist and data engineer roles which tend to be paid less than software engineer roles. It's okay working on the code infra around running SQL like building an ORM or something but writing the queries themselves makes things tricky. It's totally okay to be good at SQL querying as a SWE (it's actually expected for Meta product SWEs to do this like I did), but it shouldn't be the bulk of your responsibility as a SWE.