Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What should I do next for my career?
36 points by abhnv on Aug 24, 2022 | hide | past | favorite | 49 comments
I've completed 5 years working as a MEAN/MERN stack developer. Although since the last 3 years, my work mostly has been creating cli commands.

I used to like programming, but nowadays my work has boiled down to writing unit/integration tests or just fixing bugs. The last major feature that I implemented was 5 months ago. I don't want to work here anymore.

Should I work on solving LeetCode questions, and aim to get into FAANG companies. Or maybe try to go to Canada/USA/Ireland for a Masters in Comp Sci, because I don't have good grades in my undergrad. I've never faced any difficulty because of my low grades in undergrad yet, but will it be a problem when I go on to become a software architect in the future?

I have stopped learning new things, and working on personal projects because of Dota2. I'm trying to leave it behind, but its hard.

I feel very lost as to what to do right now.



A few things that might help:

- Exercise if you're not already doing it. Bicycling or swimming can be a meditative activity and get you outside some more

- Join another company, possibly even a startup thats doing something you find interesting or meaningful. The job itself probably won't be that different but it will be a change of pace, and maybe if you believe in what the company is doing then you might get more meaning from your day job. If they have in-office culture and you're OK with that, it could also be a good way to get out of the house and get some form of social interaction even if its work.

- Dota2 is clearly the escape, your brain has to choose between something hard and (in the short term) unrewarding vs something thats easy and immediately rewarding. Of course you're going to gravitate towards it. Definitely take a break from it for awhile, but you'll need to replace it with something else.

- If you really want to play a game, maybe try something like Factorio or Dyson Sphere Program, you'll be exercising a different part of your brain than Dota2 and you'll have something to show for your efforts even if its virtual.

- You could try making a game, its a very different style of programming than web stack and you have to do a lot of problem solving from scratch. Plenty of resources on youtube if you're not sure what to make. I've found it very refreshing.


> Factorio

That's like recommending cocaine to stop smoking marihuana.


Haha, I have it in my library, played it for 20hrs or something. But I think I stopped before I got hooked.


Definitely agree with making a game. I was stagnating as a defense contractor and turned to games as an escape from the grind of government work. I ended up installing Unreal Engine 4 and never looked back. My career growth improved exponentially after that because I was finally excited about the stuff I was working on at night.

To OP, if you enjoy DotA then I highly recommend trying to make a DotA clone yourself and coming up with your own unique abilities. If you use UE4, there's a HUGE amount of free assets (especially Paragon assets, Epic's old third-person MOBA).


> I've never faced any difficulty because of my low grades in undergrad yet, but will it be a problem when I go on to become a software architect in the future?

No. Work experience building software that’s used matters.


Indeed, in my experience after a few years of work experience, your undergrad means very little (at most companies). I've heard this might not be true at Google.


It seems that you are missing a creative outlet in your current role so it would be wise to find it in a new role.

Uninstall Dota 2. It's hard but you can do it. Channel that creative energy into a side project, an instrument or whatever else you find fulfilling. Furthering your studies is also a good idea but be prepared for the marathon that comes with it.


i’ve found i can tell i’m sad based solely on the number of hours i’ve been gsming


True, and gaming can also be a social activity if you are lacking connection.


That was one of the reasons I started playing 2 years ago, I have no friends in my city. And its hard to make friends at work, because I don't know why, at work, I always end up in 2 man teams.

It also happened at my previous 2 companies.

So, I reconnected with some of my college friends through Dota. We play together almost everyday. But I really need to put an end to it.


True, my gaming hours are in the thousands. Almost 2.5k right now.


Gsming? Typo in "gaming" or a new way to say "browsing internet on phone"?


It would probably a very old way of saying browsing internet on phone


Haha, I've uninstalled Dota many times (I uninstalled it again today). But the thing is, I end up installing it in a week.

Maybe I won't this time.


Purchase + install "cold turkey", you can set time blocks to play, or block months out entirely.

I used to game all the time, I now block games for 2-3 months, have a good weekend blow out and repeat.

This has been working pretty well for over a year now, highly reccomend.


Start journalling your growth from this point onwards. Write down what you want to learn, what you want to accomplish. Then take steps every day towards your goals in your journal.

Write down your side project ideas and work on projects that improve your skills.

The idea of journalling is to get yourself to be reflective and adaptive to your situation.

Edit: write goals that are achievable and that you think you think aren't. Why both? Over time some of your goals shall look different. You can bank on gradual progress. Everyone has the same 24 hours a day, try use them on things you enjoy and that work toward your goals.


I've never tried this before. I'm not an organized person, and its difficult for me to stick to plans. But I'll give it a try, it seems I need to schedule a time slot to work on my personal project, otherwise it'll never happen.


I use GitHub to journal ideas in the open, see my profile.

You can create a private GitHub repository and simply create a README.md and have a # 24/08/2022 (markdown heading) for each hour, part of day, day or week or month depending how often you journal.

Then add to the top or the end of the journal. Journalling should be something you go to enjoy and unwind and get your thoughts out. It's similar to pulling a piece of string and letting go, it feels cathartic.

You can also interrogate your thoughts and ask WHO WHAT WHEN WHERE WHY recursively for each thought and get to the bottom of things and undergo introspection.


>I have stopped learning new things, and working on personal projects because of Dota2.

In most professions, people learn on the job and don't have personal projects. It's OK to work 40 hours (or less!) a week and not think about your job on nights or weekends.

I have personal projects that I enjoy. I usually only work on them a few days a year. They are strictly for my own personal enjoyment and I could not imagine a prospective employer caring or being impressed.

I learn new things by taking time out of my regular 9-5 workday, even if the things I learn aren't directly related to my work. And my employer sends me to conferences for continuing education.

If dota2 is problem in your life, uninstall it. But it's normal and healthy to pursue hobbies and interests that you enjoy after work. Literally none of the non-programmers in your company (e.g. sales, hr, finance) have personal projects. They go home and play dota2, or bake, or binge re-watch Downton Abbey.


If you're interested in learning more about tech, maybe go work for a developer tools or infrastructure company. They build compilers, databases, distributed systems frameworks, IDEs, etc.

If you're interested in learning more about business, maybe join an early stage startup (Series B at most) and focus on customers.

If you want to get into devrel or technical marketing, start writing more. Write blog posts for your company blog (since you can presumably do this on company time) if you have trouble finding time to write for yourself. Use company time to attend conferences or meetups and/or give talks.

You can also pivot into product management if you are interested in dealing more with customers.


Yes, I would like to work at some projects like that. This is a great idea.


If you've been working as a developer for 5 years no one will care about your grades in undergrad, and a Masters in Comp Sci is unlikely to be worth the opportunity cost.

I would suggest starting to look for developer jobs at smaller companies or startups. You're much more likely to be working on all kinds of things instead of being stuck in small areas of the code. Working at FAANG is likely to be the exact opposite where you'll be a bit more of a cog in the machine that works on some small feature.


I'm trying to leave it behind, but its hard.

Something being difficult is a reason to do it, not a reason to avoid it. Easy things get boring fast.


I generally get bored doing the same things for years. And if those things are tedious anyway, well! I'm surprised you've lasted 5 years!

Finding another job that offers you the opportunity to learn new things is what I'd recommend in the short term.

Longer term, it helps to have some kind of goal. What do you think would be an awesome job, even if you couldn't get it right now?


Well game development would be awesome, but that industry doesn't treat developers right. I also want to make enough money, which the gaming industry lacks. So that's not a feasible option.

Maybe working on some VR/AR tech, or at some Antivirus company.

I did some OverTheWire exercises, and was learning about creating viruses. But, I ultimately ended up playing a lot of Dota.


Yep, game development doesn't have a good reputation.

I eventually did a Master's degree in infosec. Spent a while developing security products, then moved over fully into security architecture. That's been ten years now and I'm getting itchy feet again!

But don't beat yourself up over playing games, if that's what you do to relax. You can't be on all the time. I go though phases of just going my job, then I get enthused by something. I'd honestly just find another job in the short term that gives you the opportunity to grow in some way.


You might want to have a look at this article by Julia Evans:

Some possible career goals https://jvns.ca/blog/2018/09/30/some-possible-career-goals/

Also: Consider saving up some money and then go travelling for a while.

Best of luck!


Thanks, I did find a few goals that resonated with me. I can get started with those.


It depends a lot what you want to focus on in life, if money is important and you want to build that nest egg, it may be worth going through the leetcode grind.

(tiny self promo, I built spacedleets.com which is a site that uses spaced repetition when you are doing leetcode prep, its free and hopefully will make the leetcode grind a lil less stressful :)


Yes, money is important. Leetcode grind is the way to go for short term capital gains.

Thanks for the website, I'll check it out. I can use all the free help I can get.


>I have stopped learning new things, and working on personal projects because of Dota2. I'm trying to leave it behind, but its hard.

...oddly enough I found the most success by maining techies (pre-rework), planting mines, blast off -> write code while respawning. rinse and repeat, enjoy mine kills and stop worrying about rank/outcome.


Have you thought of working for a different company? Maybe a different technology? It sounds like you've been pigeon holed and you don't like it. You can leave for another.

I got my bachelor's degree almost 15 years ago, and never once have I wanted to get a master's degree. Only do it if you have an extremely good reason to, as it doesn't have much market value over a bachelor's.

Becoming a software architect comes with experience, and credentials usually come in the form of industry or platform certifications, not degrees.

Don't worry about learning potential work related things or tech projects outside of work. That's your time, not your employer's time. Go outside, touch grass, and feel sunshine.


Yes, I'm looking for a new job. It's just, I think that interviews will be harder now, than when I had 2 years of experience.

I need to prepare to ace interviews for better companies.


> I have stopped learning new things, and working on personal projects because of Dota2.

Might be worth looking at. In my own life, I have had severe issues with video games, in the past. I use a Mac, though (the worst video game platform on Earth), so that limits my ability to get too compulsive.

It can get bad, for me, but I know that I'm a bit of an outlier.

When I stopped compulsing on video games, my "nights and weekends" projects took off, in a big way.

The rest is history.

Good luck.


I am similar to you, I use Linux (not the best for gaming, but still I make games work through WINE).

I think once I stop compulsing on video games too, then maybe I can start working on my personal projects too.


> but nowadays my work has boiled down to writing unit/integration tests or just fixing bugs. The last major feature that I implemented was 5 months ago.

In that case, stay far away from any Fortune 500 (FANG or otherwise). It takes a LOT of work to move a boulder, and smaller companies are much more agile.

In my personal experience, I find 20-100 person companies to be ideal for giving you freedom to work on the cool things.


hey I believe I have the "street cred" to answer this with my 5k+ hours of dota2 not counting the endless nights of playing dota at uni while it was still just a w3 mod unlike the hours recorded by steam, a monumental slap to ones procrastination.

first of all I recommend uninstall as a priority. the beginnings are hard, you definitely need to find a way to break the cycle work->going home->playing dota by finding appropriate hobby, preferably something physical

as a developer with sedentary/stationary job you _MUST_ be physically active in hours outside of your job, especially if you plan this to be a career spanning multiple years. Balancing out mentally difficult job with physical activity will improve your mood, concentration and performance at work as well. I have seen a lot of my colleagues going to their mid 30's with back problems, chronic migraines, eye problems (redshift the damn monitors guys...), diabetes, general unfitness, etc...

I recommend walks, cycling, running, combat sports, hiking, anything you can do daily and be as active as possible...


Your grades in undergrad do not matter at all. I cannot stress this enough.


I beleived that too. But recently, one of my uncles, who was being considered to be promoted to being a director in his company, was rejected because the other person who got promoted, had a masters degree.

And my uncle was like, "I wish I had done my masters degree when I was young".

It feels stupid to say this out loud, but this incident did impact my thinking.

Edit: My uncle works at an automobile parts manufacturing company, I'm not sure how his experience applies to software industry.


Masters degree matters. The fact that you graduated undergrad matters. The actual grades you earned do not.

If an applicant included their undergrad report cards or GPA with their resume, I would take this as a sign of naivete and would most likely slot this person as a junior engineer.

Conversely, if an employer ever asked to see my grades from undergrad as a condition of employment or promotion, this would be a major red flag for me.

Edit: Masters degree is less valuable for a typical web dev or SWE than years of experience in the industry. Specialties like ML/AI are an exception.


> I have stopped learning new things, and working on personal projects because of Dota2.

The reality is that some people at some times are capable of spending a significant portion of their personal time pursuing new skills and technologies, but not everyone can and that's fine. I think that either way, relying on your own personal time and projects as the only forum for developing new skills is not a great way forward. Sure, you might have interests and want to learn things that exceed what you're doing at your job, but you absolutely should feel that the job you are spending much of your day at is challenging and helping you progress as a software engineer. As soon as you feel that it isn't because either you have learned all you can in your current role or because you're interested in other things that aren't really on offer in your job, that's the right time to explore other opportunities.

> Should I work on solving LeetCode questions, and aim to get into FAANG companies.

For better or worse, sharpening up the LeetCode-type skills does seem to be helpful when you start the interview circuit, but not necessarily and it's a secondary concern IMO. From what you've said, it sounds like you need to get a better of sense of a) where you see yourself going medium-to-long-term (senior software engineer, tech lead...more?) and b) what technologies are you interested in?

To me, it sounds like you are just not really working on features and your job has become very prescriptive and limiting. From that standpoint, the fix seems a lot simpler and may not require a huge self/existential review — instead, simply finding a company that wants to hire a proper software engineer who works on real features. Up to you what kind of product you're interested in working on and with what tech.

So I would start there: is your near-term goal to become the best software engineer you can be? Then find a company with people smarter than you that is looking for a software engineer to work on core features with tech that interests you.

I have been in exactly the position you are in many times in my career and it's a completely normal progression. You start somewhere and level up and eventually you have learned all you can or you're interested in a greater challenge. As soon as you start to feel comfortable, that's the time to pursue other opportunities (of which there are many). The people who stick around forever in spite of feeling completely unchallenged tend to do so because it's comfortable and familiar — and there's nothing wrong with that — but it is not the way to grow and progress. All of this is to say that you may not be as lost as you think you are. You're simply experiencing a normal phase of "time to look for other things."


Makes sense, I've always been of the opinion that it's my responsibility to improve upon my skills and that most business-oriented softwares are not going to be challenging. But I think you're right, it will be much more fun to work on a challenging project at my job.

I do want to become a better engineer, so I'll just do that for now. I'll look for a better company, as one other comment suggested. To find a company that makes developer tools, like IDEs, compilers etc.


to help assist your dota quitting you could start by uninstalling the game and getting your fix watching pro dota streams instead. All of the fun with none of the toxic teammates


That’s a great idea, I can try that


I've certainly been where you are. It definitely sounds like you need a job change, but your next company should be selected with care.

> I don't have good grades in my undergrad

Don't furnish that information. If the company asks you, bow out - it's an absurd question when you have 5 years of experience.

A masters won't help you much and I wouldn't recommend it in your situation. It's the kind of thing a person thinks about when they feel stuck - I've had the same impulse at every career junction.

> Should I work on solving LeetCode questions, and aim to get into FAANG companies

I'd certainly recommend LeetCode, but not just for interviews. There are benefits to it that nobody mentions: your initial code correctness, your debugging skills, your communication skills, and your familiarity with your programming language all go up.

I just went through this process and the time investment has paid off quite well. I used to hate LC and thought I wasn't capable of landing any job, let alone a top tier job.

FAANG is good for compensation, but not necessarily the most exciting work, so keep that in mind. There are many non-FAANG companies that are good catches.

teamblind.com is a great resource for interview tips, if used carefully.

Expect months-long practice and to do a lot of interviews. Rejection is just part of the process. Interview with companies you haven't heard of/don't care much about first. Respond to random recruiters who reach out.

Don't forget to study for behavioral questions (STAR method) and system design (https://github.com/donnemartin/system-design-primer).

For practical LeetCode tips - expect to complete a few hundred of them if you want to get into a top-tier shop. Speak out loud and explain as if you're in an actual interview. Timegate yourself: 7.5 minutes for easy, 12.5 minutes for medium, 20 minutes for hard. These are very aggressive times. If you haven't finished in that time, look at the solution, take notes, and understand it.

Here's a Python script I wrote to help myself with this process. `pip install rich` should take care of the only external dependency. This script randomly selects LeetCode question numbers and creates a markdown file for note-taking. When I failed a question, I would stick it in `attempted` and it would come back up eventually.

    #!/usr/bin/env python

    import random
    import sys
    from pathlib import Path

    from rich.console import Console

    LC_COUNT = 2218
    TIME_LIMITS = {
        "Hard": "20:00",
        "Medium": "12:30",
        "Easy": "7:30",
    }

    crushed = {}

    mediocre = {}

    attempted = {}

    short_list = {
        # Blind 75
        76,
        102,
        105,
        124,
        128,
        143,
        152,
        153,
        198,
        207,
        208,
        211,
        212,
        213,
        230,
        238,
        252,
        269,
        271,
        295,
        300,
        322,
        323,
        371,
        417,
        422,
        424,
        435,
        449,
        1143,
    }

    all_lc = {num for num in range(1, LC_COUNT + 1)}
    untried = all_lc.difference(crushed)

    lc_options = short_list or attempted or untried or mediocre
    lc_options = lc_options.difference(crushed)

    if len(sys.argv) > 1:
        num = sys.argv[1]
    else:
        num = random.choice(list(lc_options))

    console = Console()


    def user_input() -> str:
        return console.input(prompt="[bold blue]>>>[/bold blue] ")


    console.print("LC:", num)
    base_path = Path.home() / "LC/"
    for existing_path in base_path.glob(f"*/{num}-*.md"):
        console.print("File already exists:", existing_path)
        exit()

    difficulty = ""
    while difficulty not in TIME_LIMITS:
        console.print(f"Difficulty {list(TIME_LIMITS.keys())}:")
        difficulty = user_input().strip().capitalize()

    name = ""
    while not name:
        console.print("Name:")
        name = user_input().strip().replace("  ", " ")

    url_name = name.lower().replace(" ", "-")

    path = base_path / f"{difficulty}/{num}-{url_name}.md"


    template = f"""# Problem: {name.title()}
    https://leetcode.com/problems/{url_name}/

    *Difficulty:* {difficulty}
    *Status:* Untried
    *Time:* ? left out of {TIME_LIMITS[difficulty]} minutes

    # Notes:


    # Attempts:

    ## 

    Time: O(?)

    Space: O(?)

    ```
    ```


    # Solutions:

    ## 

    Time: O(?)

    Space: O(?)


    """

    if path.exists():
        console.print("File already exists:", path)
    else:
        console.print("Creating file:", path)
        with open(path, "w") as outfile:
            outfile.write(template)

    console.print("Done", style="bold green")


Thanks for all the great advice. I've started working through LC myself, and I think using your method would make the process more efficient.

I think it'll be better for me money-wise once I land a top-tier job. It'll also make my resume much better.

I'll just uninstall my video games, and start practicing. Thanks.


In the coming years, MERN Stack is highly to be used extensively since more and more applications are now built in JavaScript. It is the most sought-after language that serves both the front-end and the back-end side, doing away with the need for context switching.


This seems like a comment from 2012...


But mongodb is webscale.

Lol.

Maybe pern, but I think e might be replaced with buns http server for a lot of full stack or people will use remix which itself is pretty nice.... Or use go or rust or laravel etc....

Personally I won't touch a mongodb project, you can generally do much more and get better performance using postgres with JSON when you need schemaless tables.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: