Ask HN: Is a master degree in CS worth it
I'm an Architecture graduate who's looking to change careers. I've dabbled with coding for years but feel a formalised education may be prudent in enabling me to make the change. Has anybody else made a similar switch, and if so what did they encounter?
103 comments
[ 2.5 ms ] story [ 173 ms ] threadYes it is necessary as it is a certification, it will make easier move across borders, will make you pay less taxes and will make you easier to hire.
You can really get all the notion without a formal education, provided that you are curious enough.
As a software engineer your earning power will be extremely high, especially if you make wise career choices. 60k debt you can pay off in a single year when you have a decent job. The opportunity cost of not being in industry for a number of years is way higher than anything else, so if you want to focus on the monetary aspect it's the opportunity cost you should be concerned about, not the cost of tuition.
e.g. http://www.fu-berlin.de/en/studium/studienorganisation/immat... and http://www.fu-berlin.de/en/studium/international/studium_fu/...
Some of these have quite good reputations too.
Even now I toy with the idea of taking a year off and just travelling somewhere to do another one. Something just plain interesting. Modern Japanese Literature, for example, or just identifying a few universities with cheap rates and picking something really interesting out of their catalogue.
If you do it for yourself, out of interest in the subject and because you just want to be better than you are, at that price it will be worth every penny. There is a frame of mind that struggles to comprehend education for the fun and satisfaction of it, rather than as part of earning more money. I smiled politely and stopped talking about it with them.
[1] - http://www.omscs.gatech.edu/
I agree that it wasn't all amazing, though -- some courses are great full stop, some are just bad, and many (as you say) really shine only when you go above and beyond.
Still, for those with existing programming experience or an undergrad CS degree, it may not be the best thing to do. If you want to learn some particular skillset, there are more direct paths. It might help with the resume filter, though, and it's handy for non-US people who want to get an H1B for now.
I'm about to graduate with a BS and I will be going straight into the workforce, but I'd like to pursue a MS (without taking time off from work).
Cons: Time and money investment. May be unnecessary if you just want a standard dev job.
Without a CS degree of some sort you're going to need to prove you can code. Dabbling helps but you'll need to show work experience.
Getting work experience without a CS degree likely means taking jobs that aren't otherwise appealing.
Contracting or freelance can be a way to get that experience since the bar for proof is often lower, especially when working in non-technical industries.
But those are jobs, and they pay money.
If you have the financial means and can attend a reputable school, I'd recommend getting the masters, or even a bachelors.
Having that degree, and learning what they teach you in a CS program, will help you get a much better job and will help you perform in that job earlier than learning as you go.
You're going to need to make the call if you can afford the short term financial hit/investment.
I say it's shitty because they don't follow best practices and just focus on pushing out workflow apps as quickly as possible. No docs, old tooling, etc. Really a mess.
That's the situation I'm in now, first full time job. I majored in business [first economics, then MIS], big mistake. Now I'm working for the uni with plans to get a second bachelor's in CS beginning in the Fall (for free).
People always ask me why I majored in business. I've had recruiters say to me "Have you considered a minor in CS", etc. despite a very nice portfolio and 2 years worth of clients.
So, since I must deal with HR and would like to be taken seriously as an engineer, I'm going against the advice of the great Charles Manson and going out of my way to prove something to the phonies.
Plus, I wanna learn my maths much better but can't bring myself to go it alone so I figure it's worth it in that regard.
I doubt schooling would fix this. It tends to be more about theory and algorithms than building "real world"(depending on what you're doing) apps.
Also, those are problems you can fix by reading a few books on best practices, learning from your team, keeping up to date on tools and just doing it (docs). If anything, the school would likely be behind on things like tooling and many best practices related to the modern frameworks.
It's not all bad, you'll learn things that from time to time come in handy, but getting a CS degree won't turn someone into a good programmer. That's a skill you'll develop over time from doing it and learning from others.
This repo is pretty cool and links to lots of free courses that show the kind of things you'd learn at Uni: https://github.com/open-source-society/computer-science
I meant, is going to school for CS worth working at a place like that.
They really aren't willing to make changes, as I said the goal is to push out apps as quickly as possible.
Coming from my previous job, where I was the only developer, I have full jsdocs/phpdocs, quite a few tests and high level user manuals. They have nothing resembling that.
Is the CS program high quality? If yes, then the job you work in order to attend that program is merely a means to an end. Think of it as waiting tables, just slightly more related to what you're interested in.
You could take the opportunity (not too quickly, be mindful of politics) to make a case study out of it and attempt to apply some best practices, it sounds like it could turn into a thesis about software development in the real world.
Master's degree applicant would be building something like, compilers, distributed systems, machine learning etc as part of the degree
I just haven't seen any correlation between skill and education level. Ha, with the exception of people who get a PMP... I've found them to almost always be bad at running projects.
For web development there is tons of resources on the web to learn.
The other stuff you really need to start reading books or academic papers. And it's useful to have someone to tell you where to start.
Some schools are obviously better than others. The good ones are expensive as hell though. The bad ones are nothing but a mountain of useless shit.
You don't need a degree yes but theory is relevant however yes a CS degree is not a good indicator of any skill and too many CS educated people can't code worth a damn. Theory is not useless as long as you can implement it.
Side note: why do so many people abandon architecture after successfully graduating? As an outsider, architecture seems like a great thing to do for a living.
IMO, what it really comes down to is if your learning style is best suited for a class-room education, and if so then whether you can afford to 'stop the world' and go back to school. A grad-student should be capable of doing independent research, so in theory you should be able to learn how to code on your own (if you wish to be a software engineer). You'll need to be sure you have a way to receive objective feedback on your output, and be ready to humble yourself as you descend down the Computer Science rabbit hole.
In full disclosure, I'm going back to school for a MS in Information Technology. It's not as rigorous as CS, but it's reasonable given that I have a BA in Music. I wouldn't necessarily have gone back if it weren't for having a perfect opportunity to do so (My wife got a job as a professor at a university that had a masters program for IT, and so I'm getting a good deal on tuition).
[1] https://www.google.com/about/careers/students/guide-to-techn...
If you want to work in tech, go for the CS degree. Yes it'll be harder, but it's vastly more valuable. IS/IT degrees are nearly all fluff, especially a MS.
In my case, the school that I'm attending only has a MS in IT. I decided that spending a short amount of time getting a higher degree in a 'softer' field would be better than struggling through the (somewhat arbitrary) math for a long time just to earn another Bachelors.
Either way, I'm trying to use all of the free-time that I have now to supplement my education as thoroughly as possible in the realms of hard CS topics. I hope to integrate this into my thesis as a way of demonstrating that I made the most of my time.
With the benefit of hindsight I can tell you that if you want to work in the quantitive side of technology, the pain of suffering through the math and truly grasping it, is absolutely and completely worth it.
As time goes past, the tech industry appears to be becoming more specialized. An analogy that I think works pretty well is the medical field. In the beginning you just had "doctors", then as more advances were made, the field specialized into nurses, doctors, physicians assistants, and then further into specialties and now sub-specialities.
Someone can absolutely work in technology without a firm grasp on the fundamentals, hell they can even make a lot of money. But it's a difficult leap to go from working on a React & Rails app to working on distributed systems, advancing the state of the art AI, etc.
Also be careful about assumptions about who is in 'management'. This is also a mistake that I made when I didn't really understand the industry. I have spent time working for managers who are non-technical and am rebuilding my life so that I never have to do that again.
Happy to chat more about this if you'd like. Good luck with your degree and I hope it works out well for you.
Academia has a specific purpose for self development of providing a cognitive playground of sorts tempered with tough accountability, critical review and deadlines.
I took a few classes at university before I started a degree program. Despite this there were classes where classmates with undergrad CS degrees were at an advantage, so it was a fair amount of work to catch up/ keep up. Those with an undergrad degree had seen this stuff before for me it was new. On the plus side I was not wasting time in classes with stuff I already knew.
It was worth it for me, I actually saw a lot of things from university at work (I did some time doing Operating System "Augmentation", writing libraries. Datastructures and algorithms and database classes were also useful post graduation. I think the degree helped get work and I enjoyed getting it.
No if: you want to work as a software engineer (made the mistake myself, some friends are in lead positions and earn way more than me and have generally more opportunities because they worked two years more than me, even if I graduated with a 3.8 GPA from one of the top 2 unis of the country) or if you think it will boost your skills as a developer (Udemy/Coursera work better).
Maybe: if you want to work in the government where these things have a value. But spending two years of your life (even if with a scholarship) doing something that might not turn out to be a good investment just for this reason is insane.
Where as maybe a master's is a small advantage.
However, it does make sense given that the capabilities of people with bachelor's degrees and master's degrees become equal at some point, assuming all other things are equal. I do not think a master's degree is a ticket to a lifetime of greater competence in CS and salaries ought to reflect that.
The same could be said for PhDs too given the quality of work that we saw come out of places like Sun. There are plenty of CS people that I believe have only bachelor degrees that are not in any way inferior to holders of PhDs and in some ways, are more capable because their solutions are demonstrated to work in the field. I imagine some of them will receive honorary PhDs for their work.
This is not relevant to someone without a bachelor in CS though. I will post my opinion on that separately.
If you're going to look for a job in academia or research, then yeah, the educational background will matter. If you're going to write code that makes things work, it doesn't matter.
The same is true for the difference between 10 and 12. If those additional 2 years were more of the same, they matter little. But they also could have been full of significant new work and learning.
Knowing relevant theory is power. Is the goal to be an enterprise CRUD programmer or an architect who is a thought leader and helps set the direction of what you're working on?
I know everything can be done without a degree, I have a few genius friends who are doing great. But could they have had more options to choose from, more freedom, more potential with a degree? Hard to say, but most people don't self-learn everything they would otherwise.
But I still stand by the fact that unless you're going to stanford, CMU, or MIT, or a professor who is not strictly a theorist at an above average school takes a liking to you.
If not and you really enjoy the field you're better off teaching yourself.
If your goal is to go into a more academic area like AI or some other topic that's more of an area of R&D, then it's probably more worthwhile. If your goal is to be an academic, then obviously you need not only a masters but a PhD.
I'm a CS master student in Amsterdam. I feel I have more similarity to you since you're also from Europe. The US system is nuts, I don't get it. My current debt is gasps 3000 euro's! If I finish my master degree it will be looks in horror 300 euro's! When someone from the US thinks about giving advice, please know that educational systems are different everywhere. So you need to disclaim where your experience is based upon. Mine is based upon the Dutch educational system, where the whole experience was (back then) funded by the government.
Furthermore, the idea of a university and also the idea of getting a master degree (in The Netherlands) have different cultural connontations. In The Netherlands it is kind of a given to do a master degree after a bachelor. No one knows why, but I feel that a lot of children were raised with the idea to "finish school," and most people feel that getting a master degree is what "finishing school" is like (there are exceptions of course).
Should you get a master degree? I'm going to give you a very opinionated answer. I'd be delighted if people countered me, because my story might be dangerous to take at face value, though less dangerous than having no or not enough information.
I'm a programmer teacher myself right now and one thing I've never realized is that you need to keep pace. Some students fall below the pace, others above it and to some it's the right pace. Chances are high that you're either above it or below it, since I can literally divide my students into 3 equal groups.
Furthermore, my Dutch curriculum gave me a many many obligatory courses during my bachelor. It gave me some freedom in my master. This is bad. Get as much freedom as possible. I've noticed that -- on average -- obligatory courses teach me less useful things. In some cases, I did need to learn certain basics that I didn't want to learn, but more often than not: I learned some academic arcane wizardry that I'm never going to use again (or at least, chances are a lot lower).
By the way, good obligatory courses are everything that's involved with how computers work. So distributed systems, computer systems and the like. Other good obligatory courses are theory of computation, algorithms, etc. You're not necessarily going to use that knowledge but they teach you a certain way of thinking.
Bad obligatory courses: anything that has to do with ontologies (as an optional course it's great, as an obligatory course, not so much), research on Multimedia Systems (too in-depth), software engineering courses (if they don't have a practical/pragmatic basis and emphasis), basically anything that focuses too much on science and research. They're all great as optional courses, but having them as obligatory courses, no. Also, obligatory courses that only show powerpoint slides and academic research paper assignments are a no go. Even as optional courses I'd be wary to take these (from a pragmatic computer science standpoint, go ahead if you want to be more broadly educated).
The next thing that is really important is the student body. You want to be in a student body that suits your goals. If you want to overachieve during your studies, you need to go to a university of overachievers. If you just want to go solo at it, you need a university that's not getting in your way when you do that.
These 3 things:
- pace
- ratio of obligatory courses and optional ones
- the type of students that are here
Are all metrics to answer one single question: to what extent does this study program fit your learning goals and your learning style?
Anything below 80%, don't do it. Everything between 80% to 85%, meh. You'd want at least a 90% fit or higher to consider it to be worth it. Remember, if you have an 80% fit, th...
I would not say the same thing to someone who already has a BS in CS; but for someone looking for a career switch like you are, it makes a lot of sense.
I have a lot of programming experience, and a lot of statistics/numerical computing experience, but not so much experience with more hardware- or low-level networking stuff.
I went back to school after a decade of professional programming and finally finished a BS. It was worth it on a number of levels, but it was not cheap to do as an adult.
Perhaps you've already checked out the field out and still want to switch, but if not, I think you'll (a) find a lot of like-minded people and (b) find a lot of meaningful work in the field that needs computational expertise. That latter point is what's most important to me: issues like building/urban energy consumption, affordable/dense housing are low-hanging fruit that are being done in manual/non-optimal ways right now.
You can email me if you'd like to talk.
But if you just passed through some crappy courses which ends with "in Java" in some third-rate school, then you have, probably, wasted your time and money.
Good schools which still taught fundamental principles, like MIT, will always worth it.