Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Is a MSc in Computer Science worth the time and money?
21 points by 4dregress on Oct 9, 2022 | hide | past | favorite | 55 comments
5 year's ago I made a career change and became a software developer. I'm 100% self taught and I've been able to start from the bottom (again! I spent 10 years working in a different industry before making the change) and working my way up to being a pretty decent mid level developer.

Due to being self taught I've not had the structured education you get by being taught a curriculum and I was wondering if studying a MSc in CS would be beneficial or even supplant the experience I gain doing my day job?

Would gaining an MSc in CS be worth my time and money? I'm considering taking one up whilst continuing to work full time.

EDIT:

I'm based in the UK.



I have an MSc in CS so biased, but I think on balance it's worth it, if only because you'll be confronted with subjects outside your comfort zone. Even if you don't "like" them they'll broaden your perspective, and who knows you may learn about something you wouldn't have heard of before, and really interests you.

Definitely depends on the curriculum though - my advice would be to look for timeless subjects, so "Algorithms and Data Structures" over "Game Programming with Unity", with a lot of variety.

This is all from the perspective of you being interested in learning new stuff regardless of monetary gain. If you're thinking of this more transactionally, i.e. "will I be able to get more money/better paying job" then I think it depends a lot on where you live. In some areas formal education is valued more than in others. Also a good part of it will probably not be immediately applicable to the day job - at least not obviously so - but it should give you a decent perspective on the field as a whole.


As a CEO & recruiter that’s hired dozens of engineers, I’ve never looked at someone’s degree, only the recent projects they’ve worked on.

My exposure is exclusive to startups (typically < 50 ppl), but many have been very successful.

And these roles are typically mid & Sr. level web, mobile & AI roles.

This works because at a startup you usually need to be good at teaching yourself and innovating, which is a skill that successful self-taught developers usually have mastered.

If you’re looking at different roles or at different size companies or can’t get exposure to interesting projects then you might find a CS degree worthwhile.


> I’ve never looked at someone’s degree, only the recent projects they’ve worked on.

So you can't say whether its actually a valuable signal?


More like: "I make my living in part by doing this. I don't personally find it valuable."


If he doesn't look he can't possibly ascertain how much he values it.


Correct, I don't know if a CS degree gave them connections or prior jobs with access to interesting projects or not.


He can say that. It's not a valuable signal for a student if recruiters aren't looking for it.


If he picks his candidates based on prior projects, how does he know that all those candidates he picks aren't because they have comp sci degrees? Getting a degree isn't getting your visa stamped, it means you should be able to do some things better now that you've been trained.


Do you process at any fresh grads out of school who don't have work experience?

What are the recent projects in that case? Some Advent of Code stuff on github?


Yes, if you want to break into specific domains (OS, Hardware, ML, Compiler, etc..).

No, if you want to become a generalist. You can become an excellent generalist without structured CS education.


How does MS helps with breaking into specific domains like OS/Compilers/Hardware?

I'm close to complete my Masters and there was basically nothing that'd help with those directly

Generally the whole Masters was mostly wasted time, the only good thing was that there were some people with different backgrounds/domains, so that was cool to see their perspective.

@OP check sylabus and ask graduates about opinions, but remember that you're already experienced, so probably more skilled than average student


It requires that you focus on these subjects with elective courses if they're not a part of your university's mandatory curriculum.

Although that's a little surprising, universities do focus on different things; e.g. some have almost no functional programming, others open it on the first BSc course. Some have one half-assed Machine Learning course with a heavy emphasis on theory, others have a major research groups with lots of particular electives. The same can be said of any domain; cryptography, ML, PLT, algorithms, etc.


You have to get into a Masters (/or PhD) degree with the mindset of learning more about a specific field. If you take random courses, you'll just end up learning about a bunch of stuff which will be obsolete in a few years that you will never use.

Exploration is fun, yes, but a post-graduate degree is not really for exploring your options.


Presumably a Masters (but not PhD) might be suitable as a "booster" for an ailing career, on top of being a career-changer. But I also see OP doesn't seem to doing terrible on their own. I only suggest it as a way to pull yourself out of a dump and have nowhere else to turn for help.


>If you take random courses, you'll just end up learning about a bunch of stuff which will be obsolete in a few years that you will never use.

I have very little impact on the courses in my country.


You absolutely don't need a higher degree than a bachelors to break into specialized fields. For many people it will just be wasted time and money. Simply apply directly to those fields in a company that needs engineers for them. As long as you have a basic working knowledge of computer science you'll get in.


>As long as you have a basic working knowledge of computer science you'll get in.

You'll get in for sure. There is a good chance you'll be getting all the grunt work for a long time. You can, of course, learn in that phase but it can get really tricky to remain motivated when you are not getting to solve interesting problems.


How do you find discipline without structured education? Especially when you lack anyone else to keep you accountable for your work?


Presumably by merit of where you are now, you already have the necessary skill to autodidact your way to the equivalent of a comp sci MSc

Read the Kleppmann book on distributed systems - that is probably worth an MSc in itself.

Read the CTMCP book - probably worth another MSc. (PL theory)

What do you want to specialise in ? Choose one or two topics and look at the curriculum in a few universities. What books are on the reading list ? You can likely learn far more self-studying the material than any lecturer will be able to transfer in a few hours of tuition every week.

A comp sci conversion degree is probably close to worthless at your stage, and a more specialised degree still of questionable value considering the cost.

My anecdotal data point of 1 - I don't have a cs degree but work as a highly paid senior contractor on interesting problems, using functional programming to build distributed systems. Early on in my career I read an undergrads worth of text books, and then followed it up with several masters level textbooks.

The best devs I have worked with are constantly reading comp sci text books or papers. The knowledge has a much longer shelf life than x new framework or y new library.

All that said if you want to do it for some intrinsic value then never let anyone talk you out of pursuing education. I just don't think the degree will make much difference to your career, it's the knowledge, confidence and ability to demonstrate & implement that will give you access to better opportunities.


I am a 67 year old "Software Engineer" with a master's of Science in Chemical Engineering from Stanford. I have found this Master's of Science has set me apart from other candidates several times, because the degree shows I am capable of understanding advanced mathematics, and reasoning. But my classes were paid for by my work Place SRI International in Menlo Park provided I passed the classes. My out of pocket expenses were for books, and gas for travel. Many of the larger employers have a similar program. Get at most 2 Master's of Science in overlapping Disciplines, I find the master's of science are a detriment on my resume' , but is an advantage on my linkedin page when arguing with PhD's


OP was specifically asking about a MSc in computer science.


Trick: apply for a PhD and they will pay you to get the masters, and you can drop out at any time

And agreed with others. If you did not do a great upgrad / did not sufficiently self-teach, and you want to quickly level up on tech fundamentals + some specialty area, hard to beat. You can easily do more boring tech without, and quite successfully. Likewise, some people luck into elite teams or strong mentors to replace this... But unlikely and you won't really know. (We happen to be like this, but it is rare and takes work on a sides.)

Staying on for a PhD after is more of a passion / self-investment, eg, passion for leading r&d or some niche.


That's true, but it's also more competitive to get into PhD programs. You have to have research potential and strong undergrad academic performance. OP says he is self-taught.


Good point --

Yes, no guarantee

No, strong ugrad academic perf is not required. Professors review applicants, you need to identify and win a champion based on your aligned research interest & progress. Eg, research-y side projects and experiences motivating going to a R&D institution to begin with (which is what most professors are primarily there for.) Grades are likely more a university (non-departmental) level screener so less of a mandatory bar.

All that said, it's still rough. Prev weak perf does suggest likeliness to fail classes portion & thus a rejection. Professors care more about r&d ability, where reading many papers and self-motivation for getting shit done is an expectation, and a missing or bad history biases most against that. I know great folks against the mold here who successfully got their PhDs, but they are rare applicants to begin with.


I do not know much about your background, your experience and your interest. But for me one thing I realized is Computer Science isn't as good as I thought it to be. Since I was from engineering background, I found CS to be more math focused and abstract. Think of CS as what pure maths is for physicists. Both physicists and mathematicians can solve problems, but mode of thinking is different.

If you want build a solid foundation on CS, I would suggest taking a course in Applied mathematics with some CS related subject because that would allow you to understand the deep fundamentals within CS. These mathematics (discrete, probability, linear algebra, proof techniques) are generally covered in Bachelor's level of CS. Having sufficient skills with these topics will allow you to dive and understand any topic later in life. As engineering major, it was mostly focused on calculus and analysis. Therefore, whole idea of theoretical proofs and reasoning was quite difficult for me. CS is filled with these kinds of proofs. No one tells it.

However, if you are interested in building things, it would be wise to pursue something in software engineering (or applying for challenging job etc). Like everyone has said here, CS is to go into some deep niche like compilers, OS, networks, algos & DS, which is extremely narrow, intellectually fulfilling but extremely hardcore. Good luck with your decision.


I think it's worth it. Contrary to some comments here, we did improve a lot of the fundamentals in algorithms (the clrs book), machine learning, cryptography, programming languages. It will help with whoever screens for formal degrees. It's easier to get into a better school, not as competitive as bachelor's, just drill for the pretty robotic GRE. You can get a research scholarship and TA or RA salary esp. if you join a lab, so they will (modestly) pay you all the way.


Most of the best paying companies don't screen for anything beyond a Bachelors.


the person who asked this question has a non-cs bachelors


It’s nearly impossible to generalize, but in your situation it seems like a good idea.

Can you afford it without loans? Are you ok with the possibility that professional advancement doesn’t happen (it might not)? Do you understand how much time you will need to dedicate to finishing it?


Yeah fortunately I can afford it without loans and if I take it on I'm 100% committed.


From an operational standpoint it can actually make finding a position more difficult, but does open management opportunities. Keep on mind, an MSc infers an unsuccessful Phd student in some places, and in other contexts a long-term choice to focus on research.

Commercial projects are very different from research environments. However, many institutions try to blur the line between commercial and academic projects. Notably from a legal and economic standpoint... most institutions own everything their students do... Thus, collaborating with a private sector project is difficult as most companies don't want to incur the liability.

If you are asking if managers typically would pay someone more to do the same job as someone with actual work experience. The answer is simply that you are lower on the priority list, as a manager can pocket 7% bonus for the wage difference you think is appropriate.

The academic institutions tell their students a lot of self-serving BS. They may seem like nice folks at first, but most are only interested in the funding you can bring in. The process of screening doctoral candidates is not what most would imagine. Ripping off the naive is pretty much a universal faculty trait...

Consider becoming a plumber... ;)


From my experience working with engineers, those with more knowledge of CS tend to write more optimized code (faster, cleaner etc). They have an understanding of the best algorithms and corresponding functions to solve complex problems.


I got a MS in Comp Eng from Columbia awhile ago. Some good reasons to get one, tuned to your background:

* Because you are self taught, getting one gives you more credibility and increases your chances of working at a traditional, large company (FAANG and the like).

* You'll build a durable network. My experience was rigorous as hell and through that, I got to be close with my classmates. Though we're not in constant contact anymore, ringing them up for a job referral is pretty much a guaranteed favor.

* If you want to specialize in a particular topic (eg compilers, networks, etc), it's worth it. Chances are you'll get to do some dedicated research and it can be really intellectually fulfilling.

* There will be holes in your knowledge that you'll fill. They won't be critical to your software career, but it'll give you an edge.

BTW, if you decide to pursue one and you're in a position to do it fulltime, definitely do that. Way more of a rewarding experience vs doing it PT.


I have an MSCS that I took a decade after undergrad and while switching from MechE to CS. An MS won’t really teach you fundamentals, and it won’t make you stronger at the fundamentals you already know except by giving you a structured environment within which to practice and refine those while doing the work. I think the MS mostly helped me to learn more depth over a curated breadth of concepts than the BS that emphasized fundamentals.

The credential may be valuable to open doors that are artificially closed to you as someone without a degree. Even with a BS in MechE and programming experience I had a hard time getting interviews, but as soon as the MSCS hit my resume I started getting unsolicited calls. YMMV.


Most CS Masters students are international because 20k out of the 85k total H-1B visas are reserved for graduates of graduate programs, so the value differs depending on your immigration status (if your goal involves working in the US)


The H1B benefit only applies if you have a Masters from a U.S. university.


Not for the job.

Do it if you like the idea of it but it's an expensive hobby.

I'd rather just learn the topics I care about online


ya, in my biased opinion, you should do it. I think it will be hard but also I don't think it will harm your career. So worse case scenario it has no effect at all on your career prospects. But that's the worst case - in all likelihood it will benefit it.

However, the biggest benefit, in my opinion, is taking challenging classes, improving your knowledge, and making contacts. The benefit may not necessarily be career enhancement or learning the latest technical skills. The biggest advantage school has over self-learning is more on the theoretical and experimental side of computer science. You will be able to see and learn things you couldn't see on the job that I think could be very interesting if you like the topic. You can actually enjoy getting the degree and I think UK master's degrees are generally reasonably priced as opposed to the absurd prices some US universities charge. Sometimes software development can be kind of mundane so maybe this is a chance to see something new and challenge yourself.

If you are strictly focused on career prospects though, which is fine, I will caution that the classes can be time consuming and difficult and you might find all your free time is spent doing them instead of relaxing after work. I am biased about this but not everyone would agree with me about what is interesting or fun so I think it's good to know your motivations before going into this. If all you want is technical skill advancement I don't think a master's is a good choice. Universities often lag industry as far as teaching tools you could learn for free anyways.


I did an MSc (at Manchester Uni) after a bachelors in Modern Languages and some time as a (tech) lawyer. (Since the MSc I’ve worked in production support, mostly algorithmic trading, with some light development and integration work as part of that.) Although I don’t think there was anything that I learned there that I couldn’t have got from some dedicated self-learning, I do think the requirement to do some things that were quite difficult or intimidating was very rewarding and has also given me a lot more confidence to dig deeper into the patterns below the surface of program behaviour. (For example, I found the maths behind signals processing really hard, but although I’d imagined that assembly programming would be incredibly difficult I actually found it quite enjoyable to work direct with the “bare metal”.) I thought it was worthwhile. I think the benefits are likely to be more oriented toward your own intellectual satisfaction and depth of knowledge than career enhancement though.


Definitely worth it. I have actually used my classes in AI and Simulation Theory along with Numerical Analysis a ton. I started as a hacker--coder not cracker--from childhood with basic/assembler/c and only one undergrad comp sci course and often rely on my MSCS to lend authority to my knowledge of computers. It can't hurt to get a MIS masters instead or a masters in engineering management and lean heavily on the basics; Algorithms and Data Structures, Theory of computation, and operating systems/computer architecture. You can study simulation, ai or numerical analysis at your leisure using a MOOC. Stanford is great, so is the FastAi course. You will not need a ton of math beyond diff-eq and linear algebra, heavier on the linear algebra.


I was in Georgia Tech's MS Computer Science (traditional not online) for a year. It was a complete waste of time. Switched to ECE and finished out there.


Why was it a waste of time? Was the ECE program a waste?


My first job after completing mine gave me ~25% pay increase, and it's gone only up since. I don't claim this is causal, but I'm not displeased with the correlation. Personally, I found I enjoyed the coursework more than I had during undergrad, and I challenged myself to strive for actual mastery of the material, rather than just doing the minimum to get the credential.


My current company actually puts you into a higher pay range band based on both work experience and degree earned.


I got a bachelors in software engineering about 15 years into my software development career. I had anticipated that taking the courses would fill in the gaps in my knowledge. It did give me some theory, but not much and not anything that I couldn’t learn on my own.

I did appreciate my digital logic class a lot.


I would tentatively say: yes, today it is. Or might be.

For someone young today who is still in school. Or just out and has only worked a couple of years, if any.

The reasoning is that people with bachelor's degrees in CS are increasingly a dime a dozen. It may be that the master's degree is the new bachelor's.


Those programs are most useful in teaching you how to self-teach, which seems like a skill that you have already mastered and excel at.

The degree can definitely make your resume look better, but past work experience and projects speak much much louder.


Not for the degree itself, but you could learn something useful that could be helpful later


Where will you be studying? Some UK-based degrees are really good, others not so much.


IMO no degree is necessary or worth the money today for doing software/computer related things, there's virtually nothing you'd be taught in classes you can't learn with an internet connection.


TIL one could get MSc without doing BSc first.


It will depend on the school. For many schools it is part of their accreditation criteria that they cannot accept MS students who have not completed a four year bachelor program. This was true for instance when I went to Georgia Tech—often to the frustration of international students who had a three year degree that their home country considered equivalent to a four year program. So it will depend on the criteria for each school, but it is probably most common in the US that you must have a regionally accredited undergraduate degree before starting a graduate program at a major university.


I did a MSc with a BMus in piano performance. I went on and got a PhD in CS, afterwards.

Normally, when doing a Master's degree, you are required to do "levelling" courses to ensure that you know the basics. These courses are usually the core competencies from the BSc in that university, and don't count towards the Master's itself. It just so happens that, if you have the BSc from that university, you will also have the levelling courses automatically.


You can do the MSc without a BSc if you have enough professional experience.

I however already have a BSc in an unrelated field.


Are you a Computer Scientist or a Programmer?




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

Search: