Ask HN: Is a Master's in CS worth it?
I've gotten a few software developer interviews through networking, but ultimately nothing has come of it. I still feel like I know nothing. I am very much interested in software engineering, focusing on the Virtual Reality field. I'm only now looking to start learning about GPU programming, and graphics in general. Hopefully in a few years I'll be able to start my own business related to this field, but that's an aside.
Given that background and my goals, does it make sense for me to do my M.Sc. in CS? I recognize that there are other options but bootcamps seem to mainly focus on web development, which I have zero interest in. Similarly there are college programs that I can take, but I'm not too sure about those... It would be nice to hear from someone that has attended a CS/SE program in Ontario. The M.Sc. would probably take ~3 years as I'd have to take some undergraduate CS courses as well.
Note that I live in Ontario, Canada. I'm currently on a work permit but I've applied for PR which will come sometime in the next 12-18 months. I was an international student and I'd rather not pay international fees again, so I would wait until I actually got PR to attend university.
Any feedback welcome, thanks in advance :)
42 comments
[ 3.9 ms ] story [ 98.6 ms ] threadOtherwise, you're probably better off working on side projects and contributing to open source projects to develop your resume.
We just hired a fresh graduate for 80k a year.
See if you can work part-time (in the industry, web development or something that's still programming, but not necessarily your desired area) while enrolled. Then you don't take that much of a hit for starting your career later and you still get the benefits of having the degree. You don't have to maximize your test scores, focus on the final project and your work and put in just enough effort to pass.
Each subject is like a small window into a deep research area.
I've become aware of TLA+, Paxos, Raft, distributed algorithms in general, branchless programming, how to implement various compiler optimizations, etc. I'm okay within these fields, I still have a lot to learn, as I said before the subjects have only been windows into much deeper fields/topics.
I'm not saying that you wont eventually come across these things without a Masters but it helps accelerate the time it takes.
I can gladly say that my programming skills have increased substantially as a result of my Masters.
For you, I cannot give any specific advice unfortunately, since I do not have that much knowledge on GPU programming. I know enough that that field is quite math heavy.
I hope this helps in making a more informed decision. Feel free to ask me any other questions.
My experience is at the University of Melbourne in Australia.
Perhaps I could have done the same or better and saved some dollars with independent study and more networking, but it was certainly easier and more pleasant to do it with some guidance.
I think if you're currently in academia, I can't give too much weight to your opinion.
Yes, you'll get a relatively deep introduction to lots of different research and interesting areas. If your goal is to do research, or work for an organisation that specialises in a field..
Start a project related to that field. Learn as you go. Publish. Network. Keep a part-time programming/dev job to support its development.
You'll save 3-5 years, you won't go into debt, you will work much less, you'll learn about the field and build a network of peers globally as you meet people online and you'll have a headstart on your career not being hired as a grad that will be treated by a toddler, but as a peer with valuable domain knowledge.
You'll probably shave 5-6 years overall off your career trajectory.
If you can't self-motivate... Go the grad path. But the grad path sucks if you don't have money, have to support yourself or if you don't want to go into debt. It's also slow, full of bureaucracy and if you're an international student - supports a really crappy industry engineered to exploit you.
This is just a note, my motivation for Masters was for specialization in distributed algorithms.
The Masters degree has opened a lot of opportunities to the people I study with, yes you need to be a good student (high distinction at least) to get these opportunities but they are there.
If you are willing to put in hours and hours of study a day, it will almost guarantee interesting work when you graduate.
Yes if you just perform averagely, it probably won't help you to break into your area of specialization right after uni.
Out of people I know, one is working at Jane Street on the OCaml compiler now. Another is working on Azure at Microsoft, another on powershell at Microsoft. A friend has managed to get internships at Atlassian, Facebook and is now interviewing with a well known database company (I will leave the name out, since its an ongoing interview) to work on distributed systems stuff there.
I've had a few interesting opportunities through my masters as well, currently I am working on a real time social media topic discovery platform.
To add to this, the skill difference of the average undegrad student I encountered and the average Masters student I encountered was quite high.
Additionally, the grad path also allows for research alongside world leading experts in their field (Depending on the university).
To do add to this, most universities allows for exchange, at my institution, students are granted the opportunity to go to universities such as ETH Zurich (4th in the world for comp sci) and Imperial College London (9th in the world for comp sci).
These will not only look great on a resume for someone looking for their first job, it will allow the students to network with other students who will likely be in the top of their fields.
To add to this so many people that are specialized have advanced degrees. It's really hard to find research papers by people who do not have an advanced degree.
I do agree universities do take advantage of international students, UoM is awful with international students, they have lower standards for them, so that they come here, fail and have to repeat subjects over and over again.
If not, hmm probably not. You can learn most of practical knowledge via Udemy/Coursera/YouTube etc these days. And by books as well. I assume taking a M.Sc is not cheap, as well.
I know some people take M.Sc not because their jobs require graduate degree, or so they can brag "hey I have a master degree in bla bla bla". No. They simply enjoy the learning process, having their mind challenged. More power to them :)
Because of this, I've applied to a master's program for computer science because it seems to me that my lack of a CS degree is holding me back. I have degrees and work experience, but no one wants to hire me. Just my personal experience not having a CS degree at all.
But the entry level can be hell, especially if you're mass applying. It can be a numbers game sometimes.
I'm going to finish OMSCS this term, and while I'm pretty burnt out and ready for it to be over already, I do not regret the experience. I'll be proud of sticking with it and I'll definitely frame that piece of paper on my wall. I don't expect it to make a bit of difference in my career, honestly. But I knew that going in. I did it for me, not for an interviewer.
If you like learning then doing any formal courses is useful. But experience is, generally, far more highly regarded than qualifications. You could re-contact the places where you interviewed and ask for feedback as to what areas they found you lacking. Then focus on improvements in those areas.
It will be easier to find jobs in Chemistry industry where CS jobs are available, like data scientist.
If you care less, community college is actually also a good choice.
You said:
> Hopefully in a few years I'll be able to start my own business related to this field, but that's an aside.
Depending on how important starting a business is to you, I would perhaps weigh this up more strongly in your decision to pursue a Masters.
I was a fresh graduate with a BSc in Computer Science when I started my software company (~15 years ago). The fact that I had a BSc never came up once in my business dealings. Literally never.
But having a BSc at the time gave me peace of mind, knowing that I could fall back on decent employment opportunities should my business venture fail to take off.
Some years later I earned a Masters degree (part-time, whilst continuing to run my business). My motivation to do so was primarily driven by ego and insecurity.
The fact that I have a Masters has also never come up once in my business dealings. Again, literally never.
So was doing a Masters a worthwhile pursuit?
To some degree (pardon the pun), it certainly was - in that I learnt more about my craft, as well as about myself - and I made some good friends along the way.
But was it worth it? That's tricky to say.
It was a significant opportunity cost in terms of my time and money. And the lessons I've learnt along the way through practical business experience (both technical as well as life lessons) far outweigh those I learnt during my Masters.
I guess what I'm trying to say is that, depending on the seriousness with which you wish to pursue starting a company, I would weigh this up more strongly in your decision.
And if you are indeed set on starting a business, then unless your Masters will directly impact your odds of success in doing so, I'd perhaps think twice.
Hope that helps, and good luck with your decision and your path going forward.
EDIT:
Probably the best advice I received as a youngster with entrepreneurial ambitions was to "take risks whilst you're young, before you have big financial obligations (such as a mortgage bond and / or a family to support)".
I'd urge you to also weigh this advice into your decision of whether to pursue a Masters first and start a business later, or vice versa.
Depending on where you are at in life (in terms of those big financial obligations), this advice might help clarify which path makes the most sense for you :)
I've been hiring engineers for a few years, and I've come to associate a CS/IT Masters + unrelated undergrad with bad candidates and generally use it to filter _out_ candidates (unless something else on the resume catches my eye). Conversely someone with a science degree and a bit of experience (or some decent personal projects for fresh career-switchers) is a much better sign.
My experience (read: anecdata, opinion, bias) is that the IT/CS masters candidates I've interviewed have switched for money and because of failure-to-thrive in their original industry, and have no care or passion for software, and have done poorly on interviews. The non-CS-undergrads-but-no-masters candidates are just the normal spectrum, with a higher variance (some with 0 skills but much hope, some with really interesting backgrounds and wide-ranging interests like how you sound).
Data disclaimer: I'm only at ~500 total lifetime interviews/10 years experience so far, I'm in Australia, I have no recorded numbers or hard data just "feelings" and "intuition".
I'm also in Australia and have found your perspective to be identical to mine.
Unrelated undergrad + IT/CS Masters usually equals "I want money" or "X was terrible so I'm falling back to something safe". Obviously, that's not always the case, but it has been in many interviews (and a few hires).
When kids ask about undergrad I say, 'Do a degree called "software engineering" if there is one, otherwise "computer science" is the same thing'. Some unis just have one general coding degree and pick the name randomly out of those two, some have both with either an industry or research focus respectively.
eg in my CS undergrad degree I got some theoretical & research stuff (simulations and queuing models, computer vision being two of the research focus areas), but also some good old Operating Systems, compilers, databases, practical programming, software engineering, etc. Vocational stuff; has been very useful!
Masters students (back then at my uni, and seemingly now too) mostly wrote essays and had the option of doing very, very little coding at all.
Same observations here. Except if they worked in software during their undergrad (as an intern for example) or minored in CS and majored in something else.
Undergrad in CS and a Masters is also typically not a red flag.
If you already know what you like or what you want to do, there are plenty of online tools available to help you on your journey, no point wasting time and money for a buffet.
I've stayed in my engineering role, but it's absolutely given me an advantage in certain aspects of my job. I can more effectively communicate with IT, and I find myself in leadership positions because I can bridge the gap between IT and Engineering.
I think at the end of the day though, the Master's is not going to give you the knowledge to ace a FAANG interview.
Unless you want to do things where the letters by your name matter (academia, r&d at larger corps, enterprise jobs where the letters give you extra points, etc.) I wouldn't expect any benefit.
The only place where it mattered for me was applying for a permanent residency in Australia, since it's points-based and your education is counted.
Your goal: To become a VR software developer with a successful company, a VR developer at someone else's company, a graphics developer, any developer at all, in that order.
Your method: Obtain a MS in CS, also in Canada, which will take three years.
My recommendation: I do not know of any VR companies in Canada. I do not know of any VR start ups in Canada founded by those with non-traditional CS backgrounds. I do not believe your odds of either starting a VR company in Canada or obtaining employment in VR in Canada to be high. I believe you must move to America to obtain such a position with substantial likelihood.
Graphics is a field with a high knowledge bar. The graphics software developers I know are not just interested in graphics, they are passionate in graphics. Without graphics they would lose part of themselves. They will take substantial, six-figure, pay cuts to work in graphics and expect that passion in other graphics engineers. I do not know if you are that passionate about graphics. I recommend you work in a field other than graphics, which is known for its high-skill and low-pay.
A MS in CS can serve as a foundation for further skills. It can also serve as not a foundation for further skills. I have not met an engineer who has benefited from a MS in CS and I know several such engineers. They did all benefit from leetcode.com however. Perhaps you will prove me wrong. I recommend you do take the MS in CS in whatever you wish to work in, perhaps graphics, but also take courses in things you do not wish to work in, like Perl. Take the time to also prepare for professional interviews.
many answers ignored that... in your case something relevant to CS would benefit you, especially since you lack significant experience so recruiters need something to look for in your resume.
UBC [1] and SFU [2] both offer them in BC. I’m not sure if Ontario schools offer them.
From what I understand it’ll be hard to be admitted to a Canadian based CS masters without doing a second degree in CS.
UBC has some advice [3] for those students who have math, stats, electrical engineering, computer engineering or other similar degrees. The course offerings look to be about 8-10 courses depending on your background. Potentially 2-3 years of background work before grad school.
I don’t have a masters or graduate degree. Always check with the department and school you want to apply to. Some things I have been told while a student at a Canadian university follow:
- often there are specific sequences of courses required to be considered a strong candidate. These courses may be advanced electives that aren’t required for graduation. Figure out what courses admissions would use to consider you a strong candidate. Probably 400 level algorithms and CS theory courses. Take those and get As.
- Canadian MS programs usually have a research based component. There is an expectation you have faculty recommendations for research projects you’ve worked on.
If you’re interested in graphics and other specialized topics, you might need to take additional undergrad courses. See information for prospective grad students section for more [4].
Lastly CS and SE are not the same. To do CS, you’ll probably need to know how to program to implement your research. Beyond that, there will be a lot of discrete math and algorithm knowledge you’ll need to use for proofs.
[1] https://www.cs.ubc.ca/students/undergrad/degree-programs/bcs...
[2] http://www.sfu.ca/students/calendar/2019/summer/programs/com...
[3] https://www.cs.ubc.ca/students/grad/prospective/applying/eli...
[4] https://www.cs.ubc.ca/~sheffa/students.html
That being said, I definitely think it was worth it. I enjoyed the time back in academia after a few years off after my Bachelor's extremely enjoyable, and I feel like I learned a lot and grew significantly as a learner during that period. I am reading CS research and fundamentals texts in my free time, and I feel as if I continue to benefit from those couple years every day. I also forged relationships that haven't yet "paid off" in any discrete sense but still bring me joy to reflect on.
Certainly, I could have done all of these personally beneficial things without the degree, but I probably wouldn't have, and I highly doubt it would have been as fun.
Granted, as an American, I now have a few extra tens of thousands of dollars of student loan debt as a result, but that hasn't yet begun to destroy my life, so I'm mostly just hoping that either I'll be able to pay it off eventually without much hassle or the federal government will get its act together and wipe it away (fingers crossed).
My undergrad is B.S. in Aerospace Engineering. In 2000 I got my 1st job as an engineer and after about 6 months was completely bored. This started a series of job jumping for the next 3 years. In 2003 I landed what was supposed to be my dream job of working for a company that makes small, civilian airplanes. Again I hated it.
Around 2004 I started taking EMT class, at night, and then paramedic. The county fire department was hiring right when I graduated with my paramedic. The catch was I had to cross train as a fire fighter, which they paid for. I took the chance and loved it.
Around 2010 I noticed a lot of people in the FD leaving due to getting hurt, main their backs. As the main, and sometimes sole-, breadwinner I knew I needed a backup plan. I enrolled at DePaul University online and enjoyed every minute of it. I graduated in 2015.
In 2017, while working full time as a FF/PM I got a part time remote job as a programmer.
In 2020 as everyone knows the pandemic hit. I was already getting tired of the 2 a.m. calls for stupid shit and the threat of the Covid virus was the tipping point. I started sending out resumes for remote, full time developer positions. In June 2020 I landed a job and resigned from the FD after 14+ years.
Here we are 9 months later and I do not regret my decision at all. Who would have thought a consistent sleep schedule is magical! :-)
My decision to join the FD and time served is probably some of my best years working. I still say that being a FF/PM is the best job in the world but it is a young man's game.
So, yeah a masters for me was way worth it. Though I might have been able to land a programming job without one, I needed the degree as much for myself as I did for showing potential employers.
Good luck in your decision
Longer answer...
Have you seen https://teachyourselfcs.com/ which is literally a tailor made resource for teaching engineers to be better programmers rather than a language. It's easily a year worth of material but followed along will put you ahead of the average joe bootcamp grad trying to land the same job.