Hacker News new | ask | show | jobs
Ask HN: Which role in software engineering is the best for average person?
7 points by throwaway1183 997 days ago
In your opinion, which role is the best to be average at? From compensation, work/life balance, fulfillment, career opportunities, etc?

1. Frontend Engineer

2. Backend Engineer

3. Applied Research Engineer

4. Research Engineer

5. Graphics Engineer

6. Game developer

7. Enterprise SE

8. Fintech Engineer (esp. in trading/algos)

9. Cloud Engineer

10. DevOps

11. System Engineer (compiler, os, browser)

12. Consumer Application Engineer (macos/linux/windows)

13. Machine Learning Engineer

14. Data Engineer

It’s always good to be best. I got told best ML engineer would earn a lot compared to best Frontend Engineer. (ofc, it might be wrong). But which role is good to be average at?

It would also be awesome to know barrier of entry vs reward. For example entering graphics engineering is extremely hard and reward is also average compared to average frontend roles. Once the profile is built up, the former will be a great deal because the investment pays off!

So, what are your opinions? Any idea?

7 comments

Do you really want to be "average" at your job? What do you really want to do?

I've worked with barely average developers and believe me, they frustrate the rest of the team. They'll copy-and-paste the same code 5x instead of asking where they should put a new module. They'll commit untested code into main, and leave it to the next guy to clean it up, just so they can close their ticket. Communication is often poor. We all don't know things. The problem with "average" is they don't ask questions.

Yeah, totally.

At least I would try to communicate on important decisions. However, I have zero interest in making decisions, making presentation, trying to prove things or any of that. All I want is a task that is achievable in given allocated time and fits my skill level.

I have given up on hopes of learning. There is no such thing as learning after highschool. It's always one thing after another. College is chasing grades. Post graduate chasing papers. Never got a true chance to dive and learn. There is no room for failure. All I had to do was put of patch work to clear the subjects. How can I expect myself to be good when I have cheated the system throughout my life.

Hence, if I get the chance, I would love to be average. No responsibility. Slightly better pay. I feel I can study what interest me just to crush my own ego.

Hope it makes sense.

It sounds like you just want to get paid and go home. I'm not going to judge, but I think you need to focus on specific industries, not job titles. All the roles you list can be quite demanding. Look for a non-tech, older company where they are set in their ways and have to deal with a ton of regulations. Think banks, insurance, defense, government.
Oh!! Thank you!! These are the answers I am looking for because these never crossed my thoughts. These are boring and no one likes them! Exactly my taste.
Good luck! Also, consider a tech adjacent role like "scrum master." I once worked with a scrum master who did an hour of work a day if he was lucky. I mean, he did eventually get laid off... but...
Talk about a loser mentality. Stay far away from my companies … barf
wow, what is wrong with being average and trying to enjoy life? I am pretty sure you have zero contribution to llvm, pytorch, react, vue, js, c, python, linux, or heck even the device you are typing. You also fall on same average category. If you had any idea, you would have written something about it.

The talent at top are polite enough to see the difference. Your arrogance reminds me of some egoist friend.

You have so many warped views I don't even know where to start. God have mercy on your soul.

  I have given up on hopes of learning. There is no such thing as learning after highschool. It's always one thing after another. College is chasing grades. Post graduate chasing papers. Never got a true chance to dive and learn. There is no room for failure. All I had to do was put of patch work to clear the subjects.

  How can I expect myself to be good when I have cheated the system throughout my life. 

  I would love to be average. No responsibility. Slightly better pay.

  You also fall on same average category. If you had any idea, you would have written something about it.
These statements are the true definition of a loser. You should find a way to change that and contemplate how absolutely absurd the statements you are making are. Have a moment of deep self introspection and reflection instead of knee jerk whining.

Just the single statement alone "There is no such thing as learning after highschool" is quite literally one of the stupidest things I've ever heard. Start with that one... contemplate how........ absolutely, and utterly, incorrect that statement is. If you disagree, then start to pick apart your reasons for disagreeing, analyze how others outside yourself seem to be doing it and you are not. Stop lying to yourself.

And most of all, raise your goal posts above being as mediocre as possible, jesus christ.

Contemplate, even further, how ridiculous it is that you think its only possible to enjoy yourself if you have no responsibility and are a mediocre piss-ant. I can't even type this without feeling physical pain at your views. I hope you are 18 years old or something, and these things will sort them self out for you later in life.

> These statements are the true definition of a loser.

I never got how someone who wants to simply get by by doing minimal (or prererably none, but that's not usually possible) amount of work is a loser, but someone who say inherited millions and does nothing their whole life is not a loser.

Okay, so going by your definition, I am a loser. Your first attempt put me in a derogatory way saying, "Stay far away from my companies.... barf"

Then you stick to the idea of calling me a loser from your point of view. I don't know what you are trying to prove but I was just asking a question on a way to genuinely get by in life.

We do not live in the same world. So what rule applies to you doesn't apply to me. Yet still I asked this question because being an average has a statistically better chance (as the law of large numbers holds). I wanted to get a realistic view of average people and what they do. If you look at other comments of mine, I am not against learning. I am against the definition of learning which is phony. It is one thing to know something, and it is a different thing to learn. I have seen many so-called learned ones struggle with the applications of their knowledge. At that point, how do you know if the person has actually learnt anything? People can grow beyond their limits. There is multiple dimension in life. And learning doesn't necessarily mean always learning the next hype stuff or yada yada. That is practically useless.

I humbly request you to point out the number of situations in your life where you applied second-order partial differential equations to solve anything that you are doing. (If that rings a bell, that is.) Or heck even used some esoteric algorithms to improve some heuristics. Bet you still use the fundamentals you learned in college and apply them. Did you ever truly learn new things? Are you apt to catch up on all the buzz that is going on in the AI, dissect everything and teach to a high school graduate? Can you learn the graphics and say implement Gaussian splatting on your own system? Or even write your own transpiler to do something? I do not know your background. I do not understand why you are so offended here to think that I am a brainless person who burts or whines without thinking.

There are multiple thoughts and stages of thoughts before admitting something. You make it sound like I never tried. Trust me, I have. I have done more than you. It sucks to be blocked when I can't show any physical result of learning because of limitations from financial stuff. Then if someone would fund, there is a lack of confidence. The guilt that I may expend their resources over nothing.

The only reason I want to be average is because I know I am slightly above average say (51%). It is just easy for me down there to work in an average way. It is more relaxing. I don't have to challenge myself or pull out my hair. Then eventually I hope to find something else in life.

We have a different perspective on life. You think in your own way, to rise above mediocrity. I think of embracing it. I just want to know what are the options so that I can make some life choices.

I regret choosing a hard path in life. It never gave me anything. Now I want to stop pursuing it. Stop spinning in the wheel.

This isn't average:

> I have given up on hopes of learning. There is no such thing as learning after highschool.

This is refusing to learn at an industry where continually learning is one of the most important things you need to do. You're actively choosing to be bad at your job.

I don't know how to argue on that. Learning is a slow process that takes time and effort. The results aren't visible immediately. Meanwhile industry wants to get the job done and be over with it. We are hired to work.

I don't want to go home and learn more about the things so that I can do the job better. There is literally no incentive in doing it better than just doing it alright.

I would rather learn things from diverse topics and interests that will benefit that I can enjoy in the long run.

By definition , most people must be average programmers. everyone cannot be 'extraordinary'. I am pretty sure that you're probably average too unless you're better than 99% of the programmers.
I'm absolutely not talking about "average programmers", also I am better than average by a large margin (based objectively on what I have achieved alone as a developer/entrepreneur, and comments made by another developer who is a pioneer in his field, and one of the best developers I know), but that is beside the point. I'm talking about WANTING to be average, and the other assorted insane views this OP has.

Nothing wrong with being average programmer, everyone starts somewhere, and my early Stack Overflow questions are hilarious.

People don't start at being average. Average is (by definition) where majority of developers arrive at after years in the industry.

Also, it's perfectly fine to aim at being average - one may be aware of various limitations (health, intelligence, memory, ADHD and similar disorders, family situation) that will likely limit them to being average at best. If they aim for being a star despite those limitations, they risk burning out and getting nowhere.

That's not average, that's bottom of the barrel. Average developers do a decent enough job, but aren't super fast about it. They also can't conceive of large refactorings in their head, don't follow all the latest trends in their area of expertise etc. They're just average. Majority of working developers are like that, by definition.
It seems like both of us have similar definition of an average. That's really cool that you got my idea of being average. Thank you!

So do you have any clue how I can optimize the position in the industry? I am interested in the most of the subtopics in the field of computer science. I just want to find a route with highest reward for an average developer.

Apparently average research engineers makes a lot compared to say web developer, but the route requires PhD.

What do you think is a good track?

Those "average" PhD researchers are in reality all very smart and hard working people. If you want big salaries, people who get them often have PhD degree from top20 universities in the world. They will be your competition when interviewing.

In general, if you want to maximize money, it does not make sense to go into any hard and niche fields (graphics, machine learning research etc.) because they're filled with very talented enthusiasts, and if you're not that, you will have a very hard time even being average in such fields. Not to mention that such fields often (but not always) pay less that your run of the mill backend development job, and have 1000x less open positions, which means it's harder to apply for jobs, you may have to move more often etc. It's basically all downsides pretty much, and the only upside is being able to work on your passion - which is what motivates people who get into those fields.

> It's basically all downsides pretty much, and the only upside is being able to work on your passion - which is what motivates people who get into those fields.

Yes!! I can totally relate to what you are saying. I got started because I was interested and I am still passionate about it. But there is only so much that I can do. It just doesn't make sense for me to continue for PhD because even with PhD there is no guarantee that I would be able to get somewhere as I am definitely not someone coming from those top20 universities.

So by definition I rule out the chances of being an average research engineer. That's one clarity! Thank you!

Since I have most background in hard niches as you mentioned above, is there a way to transition to something else? What would the possible path be like if my ultimate goal is to become staff engineer or principal engineer?

This really depends on your previous experience. If, for example, you have previous experience with C++ (which is what is often used in those hard niches), it would make sense to just apply to generic C++ roles, and work your way up to high salary by getting promotions or changing companies. If you're in the US, it probably wouldn't hurt to apply to FAANG-type companies, as they rely heavily on the leet code, so your lack of concrete experience in things they do will not be a big problem (likely will just get you a low pay grade, but you can change that with promotions later).
I've met several PhDs in "data scientist" positions that write complete garbage code. Simply having a PhD (or any other degree) doesn't mean you'll be a good engineer.
You are correct. I was being polite, thinking about people I've worked with in the past. They literally commit untested, not even runnable code with syntax errors, merge it into main, and wonder why other people are frustrated. It goes beyond "attention to detail" issues which are also very common with average developers.
I think there should be an innate quality about someone in software that they enjoy the work. If it didn’t pay well I’d still be doing this, I love working with computers and started before google came about. If people are in it for the money and don’t enjoy the work they will likely not do well, not excel at anything, not be curious about learning and just plod along to get by. As much as you don’t need a degree to do software its not a skilled trade like an electrician where the job details are very structured around proven solutions.

All that being said, I think someone is better off looking at organization styles and culture than job titles for a comfortable, earn your keep, engineering job.

Okay! This makes sense. Culture is important!

However, I kindly request you to not conclude that wanting to be average doesn't mean not having interest in the field. It's the contrary. I am so invested, I know what mind blogging things people can do. And I also know I will never be able to reach where these people are.

Hence, I want to understand a way to find the balance. It's okay to be curious and learning. Also the fact life isn't fair for everyone. For some it comes easy, for some it may take lifetime.

Back end and devops probably give the best combo of pay and work life balance.

Front end had you chasing frameworks. Front end for you own projects is OK but for a company get ready to learn the latest React nonsense while supporting Angular, JQuery Plugins and everything else that was in vogue over the life of your codebase. Unless you join a disciplined team that doesn’t chase fads or rewrites everything each time.

Game dev is famous for bad work life balance. Not sure about pay? Working for Roblox is probably decent?

The best paid will be FAANG (USA only) or Fintech esp. Trading.

For career development if I had time again I might go more into sales engineer, with the option to into pure sales or start a business with the help of all those friends you made! Or be a business analyst for a year or two.

Inside the Engineering wheelhouse it feels CTO is the real career progression and if you don’t want to be on that path it is harder to find career opportunities.

In my experience frontend is surprisingly steady. React is popular enough to be the default choice at many jobs, and angular and vue are both common enough that you could make a career in them without having to chase anything. The meme about a new framework every week is a little outdated. Nothing is really poised to topple the big 3.

But more than that, a lot of concerns are the same no matter what framework you use. Making an app accessible in React isn't that different from doing it in any other framework. Browser APIs don't really change. Switching frameworks just means switching mental models for how you store and pass around data, but it doesn't fundamentally change the job. And the great thing about the popular frameworks is that once you internalize how they work, they can really speed up the way you work.

In my opinion, the reasons you say frontend is bad, are actually the reasons why frontend is a good choice. And why I do not enjoy working on frontend.

Frontend devs get to waste so much time chasing frameworks and fads, and never seem to be held accountable for a functional product that works well. Form state and error handling are afterthoughts compared to animations and drop shadows.

So it likes transition into a business roles or try to be CEO.

My question, is there no way to be eternally stuck as "senior/staff engineer". I do not want anything beyond that. The salary of an average senior/staff engineer is always greater than median salary of the country.

That should solve all the living expenses.

You can if course stay at that level forever.

Living expenses may or may not be constant. If you have a family expect them to increase alot while having less time to keep up with tech.

Oh no, I thought the salary would be adjusted for inflation. Are there no social safety nets? This is really sad to know that salary isn't adjusted for living expenses!
For clarification:

The rat-race is tiring. I have given up on it even before starting. The hardest thing in life is giving up. It took a long self talk to reach an agreement where I am truly an average in what I do.

There are so many people out there, who can do marvelous things. Meanwhile I am just an average dude trying to make a comfortable life.

I want to minimize my effort and maximize the reward. This is the motivation of asking this question. Not everyone can be good at things, there are so many factors.

I sometimes think I should have studied medicine because an average doctor has it better than an average engineer. It was foolish of me to follow a dream that was never supposed to be made for me.

Enterprise software in a large non tech business. Being above average won’t really help you there as the bureaucracy will choke and discard your skills, but you can get away with being average and have a pretty chill job.
Thanks for letting me know!
Whichever position that doesn't let you remain an average person for long :)
Probably whatever sounds most interesting, honestly. They all have a pretty high ceiling and they are all challenging to some degree.
And there is chances of being automated out. Since I will just be the bottom fodder. Everything I use, read and learn has been already made by someone. I have never once truly made anything "original". The feeling after making things sucks a lot. The process of making it is a joy. But it doesn't give me any money simply by stealing information for others. I am getting nowhere. No jobs. Feels really bad to know that I came so far, just to realize this small fact. I have already invested a lot in the field to even change it now. The worst, I don't have confidence to ask others to pay me even if I do the job. However I need the money to live. It's such a weird situation.