Ask HN: Is a MSc in Computer Science worth the time and money?
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.
58 comments
[ 3.0 ms ] story [ 55.0 ms ] threadNo, if you want to become a generalist. You can become an excellent generalist without structured CS education.
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
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.
Exploration is fun, yes, but a post-graduate degree is not really for exploring your options.
I have very little impact on the courses in my country.
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.
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?
I however already have a BSc in an unrelated field.
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.
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.
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.
* 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.
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.
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.
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
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.
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.
So you can't say whether its actually a valuable signal?
What are the recent projects in that case? Some Advent of Code stuff on github?
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.
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 appreciate my digital logic class a lot.
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.