TLDR: As someone with a non-CS background, would it be beneficial for me to pursue a master's degree in CS to fill my knowledge gaps? I graduated with a bachelor’s degree in Electrical Engineering in 2021. I’ve been working as a Backend SWE at a tech startup (about to sink in ~7 months) here in the States almost ever since graduating. I’d say I do just okay at my job, I’m not exceptional by any standards. We’ve only had two review cycles so far and I’ve gotten a “consistently meets expectation” both times. I feel like I’d be 10x better at my job if I had a CS degree. There have been countless times where I find myself lacking fundamentals. I hate playing catch-up all the damn time and feeling like “I should have known this.” I know that if I manage to jump ship and get a job elsewhere at a more stable company, my imposter syndrome will only flare up knowing that I somehow knew _just enough_ to make it through the interviews. All of this to say that it’s become increasingly clear to me that I need to get a master’s degree in CS, at least for my sanity. I think this would be a good investment given my long term career goals (of not being stuck as a junior engineer). Do you think this is reasonable, given the opportunity cost? Also, I don’t think I could survive an online MS program since I’ll end up half-assing my job and the courses. I know it seems like I’ve made up my mind, but I’m still very confused. Let me know your thoughts and opinions. Would love to hear your story if you’ve been or are in a similar situation. For more context: I have no plans of leaving my job anytime soon, I want to stick it out at this startup till they can’t make payroll. I guess I should think about applying soon if I plan to start next Fall. Sigh. Apologies for the wall of text. TC: 125k
I was in EE for 5 years before switching to software. I got a job at Amazon ( and got laid off). Honestly, I don't really think you need to worry about it. Cover your gaps as you go. If you really wanna learn, you can check OSSU, they have the most comprehensive courses (that are free) for every single CS topic you can dream of. You can supplement your knowledge that way. Keep in mind that pretty much everyone has knowledge gaps and nobody shares how much they actually know or do not know.
Be comfortable with unknowns, watch videos on growth mindset maybe? I have 10 YOE. Did CS. previously at microsoft and now at apple. I still learn something new on most days. If you like structured plans, CS masters might help since someone else is setting up a schedule for you and giving you a push to be more disciplined. But to be really honest, literally everything is available on internet for free and if you are curious and passionate you should be able to learn on your own.
Getting an MS in CS won’t automatically make you world class at your job. Just learn as much as you can, work on personal projects outside work with similar tech stack and gather experience.
You could audit undergraduate courses online to focus on fundamentals. If you take three or four undergrad core classes you should pick up most of what you missed.
Which 3-4 courses/topics would you specifically suggest? Also, are the courses basic enough that it doesn't matter whether I take them at a community college or unranked school or should I pay the money to be able to take them at a higher end institution?
Make sure the program is ABET certified, other than that names don't matter much. If your a graduate student then your advisor plays a key role in the quality of your dissertation research. For undergraduate, most ABET accredited classes will be pretty similar across the country. IMHO, some form of CS 1 & 2 that cover basics and then object oriented programming, then data structures and finite math are the minimum four you should try to take. Although, If you can, I would recommend also taking Assembly, Programming languages, Analysis of Algorithms, Database and Software Design. Beyond that, your job requirements are going to define what other classes would be useful.
its pointless. youre better off knowing leetcode and system design for interviews
A graduate degree in CS is usually specialized - the courses you would take would be theoretical + some toy homeworks/labs. In essence, even after finishing the degree you'll feel the gap between what you know and what's needed. My suggestion would be to become comfortable with the fact that there will always be gap. Now it may seem that you lack 'basic', 2 years later you'd coin whatever you then don't know to be basic. Suggestion would be to follow a long study plan. For 2 years, maybe 10/15h a week - study the stuff that you need for your job. Oh I also forgot to mention, graduate degree doesn't teach you stuff you need for job, if it does it only touches the surface. Every week there will be new material, so you wont have time to go deeper. Follow a road map from roadmap.sh
PS: I am a hypocrite, I am doing a Ph.D.
Also, to help yourself, look at the course plan in detail in universities you are interested in.