22

Backend (distributed systems) vs Low-Level Systems (C++)

Profile picture
Mid-Level Software Engineer [SDE 2] at Amazona year ago

Definitions:

Backend: Distributed Systems, scalable applications, fault tolerant systems, control plane applications, API development, uses higher-level languages like Java/Python.

Low-Level: Database Internals (Query Optimization, Transaction processing, Data/Storage engines), Compilers, GPUs, latency sensitive software, accelerators. Usually C/C++.

Which is better for long-term career growth and compensation?

996
2

Discussion

(2 comments)
  • 30
    Profile picture
    Tech Lead/Manager at Meta, Pinterest, Kosei
    a year ago

    Here is my (non-answer) to your question 😅

    The way you would answer "Which domain is better for long-term career growth and compensation" is to look at things like:

    • Projected # of job openings
    • Average compensation for these roles
    • Ability to transfer to other domains in the future

    In my opinion, these are the wrong questions to ask when deciding a career direction.

    Since you're on Taro, you're ambitious, career-oriented, and a fast learner. You should aim to be in the top 10% of the field, not to be average. Any of the stats you find online will bias toward avg data points, things like:

    • "The average software engineer in the US makes $62K/year" -- this is not very motivating, I'd like to make much more money than this
    • "There will be 190,000 software job openings in the next 5 years" -- this stat is pretty useless for me

    Instead of trying to work backward from whether backend or low-level systems are better, work forward from promising situations.

    • Do you have mentorship from a database expert? Work with her and see where your career takes you.
    • Do you have an idea for a side project around GPUs? Pursue that and start finding collaborators on GitHub.

    The people with the most successful careers benefit from outlier events or people. A company, project, or relationship that becomes transformative for their careers. Focus your energy on putting yourself in that position rather than trying to big-brain which domain will be hotter in 5 years.

  • 13
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    9 months ago

    Rahul is 100% right, but here's my high-level thoughts on the specifics between these 2:

    • C/C++ developers usually get paid more (not by a huge amount though, maybe 10-20%) as there's a smaller supply of those engineers (these languages are more legacy and hard to work with). However, there's also fewer job postings. Here's another good discussion about the topic: "Should I learn Java or C++?"
    • Low-level systems is also more of a niche that can lock you into a specific role type that only big companies have. 99.9% of startups won't have a need for a compiler or database optimization engineer.
    • Backend is a very broad space, especially with API development. Java and Python are easily 2 of the most popular programming languages in the world (both Top 5), so you'll have no shortage of job opportunities.
    • In a bad job market like this one, it's better to optimize for number of chances taken, so Java/Python backend will be better. Most Big Tech companies have near 0 hiring right now, so being a niche C/C++ developer will be rough.

    The real answer though is to pick whatever you're passionate about and get extremely good at it. Rahul mentioned Top 10%, but I think you should push yourself to be the Top 1% of your field. If you're legitimately in the Top 1%, you'll have no shortage of quality job opportunities.

    I'm very confident I'm in the Top 1% of Android engineers: I have built multiple Android side projects for fun with 500,000+ users that have vast majority 5 star reviews. I have also shipped highly polished features to billions of users across Instagram and Robinhood. This is why my compensation before I started Taro was in the Top 1%. However, I have always been doing Android because it's super fun for me. I wasn't thinking about compensation at all when I made this stack choice back in college.

    At the end of the day, the best tech companies want to hire the best engineers, regardless of tech stack.

    Here's another great discussion on the topic: "If my main goal is compensation, would it be wise to learn blockchain tech since it will potentially be the tech of the next couple decades?"