HACKER Q&A
📣 skrtskrt

Should I get a Master's in CS?


As an undergrad I studied Industrial Engineering, which included plenty of data analysis, which was how I first fell in love with coding. But this lack of CS education leaves me with big gaps in understanding of computer architecture, operating systems, networking, compilers etc.

I eventually forced my way into a software engineering career, going on about 4 years now ( I am 27). I have worked on web apps, back office microservices, big data platforms, etc. All in Python, so pretty far from the metal although I have started dabbling in Go and Rust in my spare time to force myself to think more about types, memory, etc.

I really find myself hungry to dig deeper and work on lower-level technical problems that deal with operating systems, networking & infrastructure, etc - think like working on next-gen infrastructure like HashiCorp as a dream job.

I do not know if I could necessarily reach my desired level of experience and skill without attending a formal CS program, both due to the formal instruction and overall structure and motivating aspect of the Master's program.

However, I (financially) would not be willing to stop working, so I would be doing it nights and weekends, stretching a Master's out over 3-5 years so it doesn't completely kill me when combined with full time work. This seems like a really long, intimidating commitment. On the other hand, it seems pretty worth it to have the degree and knowledge base I want in hand before 35.

If I went through with it, my top program choice would probably be USC - highly ranked program with an option specifically tailored for those without CS Bachelors, and the option to combine online and in-person instruction.


  👤 CLPadvocate Accepted Answer ✓
It's a complex question. You have to be aware that most things you'll learn in CS will have basically nothing to do with your job. CS is basically maths. You'll learn formal logic, theorems and proofs, abstract models and algorithms, things like that. Don't get me wrong - they are or can be insanely interesting, but there is also a huge gap between CS (especially on master's level) and things that you encounter in daily job as a coder. So if you expect something that's directly relevant to your work, you'll probably be disappointed. On the other hand, what you get is a problem-solving toolbox and improved ability to think on an abstract level and solve the general problem. It can be a significant asset if you are aiming at R&D positions or comanies that have a strong focus on that. I don't know the USC program, so can't say much about it, but just as an additional idea - maybe you should also look into software engineering path - depending on the university, you can get a much more hands-on study. Just as an example - if you think about compilers and programming languages, in CS the focus may be (again, depending on the university and lecturers) on formal definitions of languages, their equivalence, provably correct transformations of expressions, and so on. In SE you may have a larger focus on compiler implementation, optimization techniques etc. I hope it helps a bit. And just for the info, I do not regret my MSc ;)