Settings

Theme

The case against CS master's degrees

ozwrites.com

25 points by ozanonay 6 years ago · 46 comments

Reader

bryal 6 years ago

Not everything has to be about work and employability. Some of us actually enjoy learning and exploring the more theoretical topics in CS.

  • theamk 6 years ago

    Sounds like you should be doing PhD then?

    At least in my university, MS students were usually paying full tuition, with the understanding that they'll take classes and leave for (presumably) high-paying job.

    On the other hand, PhD students were usually paying no tuition at all -- instead, after getting their masters-equivalent, they were expected to do the research for a few years and therefore "pay back" by advancing the science.

    (of course the fun fact was that one could drop out half-way from PhD program and get a MS degree.. but this did not happen very often)

    • bryal 6 years ago

      Indeed, I've been considering getting a PhD. The situation in Sweden is quite different to yours however. To begin with, all university education is free, and we further get a student grant of ca. $300 USD / month and access to an almost free student loan for up to 6 years. PhD students all get a salary of ca. $3k USD / month. Also, here you don't get a PhD "instead" of a master's -- a master's is rather a prerequisite to getting a PhD, in practice if not formally. Generally, the path to a PhD in Sweden is: 3 years for bachelor's degree -> 2 years for master's -> 4 years for PhD.

alexktz 6 years ago

My CS masters completely changed my life. Would 100% recommend if you are open to learning a bunch of cool stuff.

  • kixiQu 6 years ago

    * if you are open to paying tens of thousands of dollars for learning a bunch of cool stuff

    • alexktz 6 years ago

      Mine was £5000. UEA in the UK.

      It has paid for itself many, many times over since then.

_wldu 6 years ago

The Georgia Tech OMSCS program is very good and affordable (10K or less). It's also the 7th ranked CS program in the world. And, you can and do interact with professors, not just TAs. I'm an OMSCS grad. I would do it again and strongly recommend it. I think programs like it are the future of higher education.

  • daniel-thompson 6 years ago

    OMSCS student here. I agree with the parent. However, the one downside of the program is that since the marginal cost of admitting an additional student is very low relative to the tuition amount, GT has an incentive to not be very selective about who they let in. From a democratization-of-educational-opportunities perspective, that's good: if you can hack it, then you can hack it, regardless of what formal qualifications you might be missing. But this program is the real deal courseware-wise, and that results in a lot of those under-prepared students taking classes that they just can't keep up in. Lots of those students end up washing out of the program... after paying GT a semester or two of tuition.

    Example: in the Intro to OS course I'm about to finish, we started with 700+ students and are now down to about 340. The projects are typical schoolhouse stuff for systems programming: C programs that manage memory, use sockets, IPC constructs, pthreads, RPC libraries, etc. One of the guys on the class slack just posted that when testing & debugging the projects, he just printed stuff to stdout... for the whole semester... because he doesn't know - and didn't bother to learn - how to use a debugger.

    • throwlaplace 6 years ago

      >One of the guys on the class slack just posted that when testing & debugging the projects, he just printed stuff to stdout... for the whole semester... because he doesn't know - and didn't bother to learn - how to use a debugger.

      Lol that's like the best way to debug C

      • yks 6 years ago

        yep, 10+ years in industry and that's how I usually debug (and I know how to use a debugger).

  • mandy12xx 6 years ago

    5 courses in, instructor presence is minimal. TAs are phenomenal though!

gedy 6 years ago

I really enjoyed Electrical & Computer Engineering, and took CS classes as electives. Felt the math and engineering courses grew my brain, and the CS courses were enough to get me into software. The CS majors I knew seemed to enjoy their choice less!

supercasio 6 years ago

It's sad that his page about self-studying CS [1] does not include any book specific to the Theory of Computation and Computational Complexity.

[1]: https://teachyourselfcs.com/

liquidify 6 years ago

I did a non-cs undergrad to cs grad path... It was hard. I wasn't admitted to the program without fulfilling almost all the core CS undergrad classes. This meant that between the prerequisites and the actual grad classes, I took over 120 credit hours of pure math and CS classes over the course of 5 years.

Obviously not every school has the same demands as others, and there are certainly a lot of degree farms that take foreign students money and funnel them though, but I'm not sure that the authors points ring very true... certainly not for everyone.

HeyLaughingBoy 6 years ago

And then there's my old manager who found a negative correlation between a programmer's ability and them holding a PhD in CS. FWIW, he had a MS in Software Engineering himself and he said that the correlation only seemed to hold for CS PhD's, not PhD's in other sciences. My department had a number of PhD's, but only one in CS and that one was hired a few years after that manager left.

Correlation isn't causation and all that, but it does bias you a certain way.

commandlinefan 6 years ago

What masters degree (or even undergraduate degree) is any of that not true of?

  • Rury 6 years ago

    Yeah, past a certain point you realize how shallow degrees are, as they're merely an organization's approval that you studied something and demonstrated some level of aptitude of it.

    Which is to say, you don't need a degree to study/learn things.

    Though that approval is helpful in opening doors to employment when you're young, it again is not needed when your history of experience, abilities, and work can do the same later in your career...

xhkkffbf 6 years ago

I hate to be super-negative, but I'm not even sure a bachelors in CS is a good idea. Oh sure, you learn a few good things along the way, but then the professors start dragging you down their favorite theoretical paths. I'm all for philosophizing and navel gazing, but there's not much practical in things like lambda calculus, NP-completeness and some of the other topics. To make matters worse, these pursuits can confuse the brain. I know one fancy CS major who dismissed a problem as unsolveable because it was NP-complete. He missed the fact that the dimensions of the problem were such that a quick heuristic did perfectly fine.

The sad thing is that large parts of the curriculum aren't that valuable. Data structures used to be my favorite, but today it's not that important because we stick everything in hash tables or database tables. We rarely use LISTS!

The same goes for compilers. No one writes a compiler any more. Apple just repurposed LLVM when they made Swift. But all of the undergraduates have to pull their hair out making toy compilers and for what end?

Most of the CS curriculum is pretty extraneous. This is why many companies are deliberately hiring technically competent people from tech fields like physics or chemistry. They learn practical skills to analyze their data-- the kind of practical skills needed by corporations not theory heads.

  • pfranz 6 years ago

    Caveat: I never got a bachelors in CS.

    I heard someone else say 30+ years ago you were more likely to be implementing a sorting algorithm or other things often studied in your day-to-day job. Most people's job have changed to integrating predefined APIs--a completely different skillset.

    However, as a counterpoint I wish I had pursued a degree. I've looked over friends' notes from their undergrad and graduate classes and wished I had the time to do what they did. Not just as a personal interest, but to give you a practical understanding of what those magic APIs are doing.

    Similar to a "hello world" of a framework, in practice things get messier. You often end up having to compare frameworks to pick one. Or play around with a few to judge which is best to continue with. Having a rough idea of how it was implemented and knowing the pros and cons of those choices are hugely beneficial. After choosing, you only write the code once, but spend the rest of the time rewriting, debugging, and optimizing. Having those CS fundamentals not only helps you identify when the built-in solution is insufficient, but what better options might be.

    Ignoring all of this, I'm sure you could fill a career with writing one-and-done CRUD apps.

  • adamredwoods 6 years ago

    I don't know if anyone (anymore) thinks that computer science is the same as software development. Knowing the latest library APIs, versus doing research to find a faster hash sort, are two different areas, IMO. I also wonder about the different industries and how they compare (SaaS vs CGI vs HFT).

    I think if you want to forge new roads in programming, a little theoretical studying doesn't hurt, so why not explore a university degree.

    I also do not enjoy the endless debates around self-taught versus schooling. I've seen real-life anecdotes from both viewpoints and find that it's too subjective for anyone to declare anything from either side. I personally don't recommend people jump out and grab a CS degree, but there are some good programs out there.

    • xhkkffbf 6 years ago

      So why not explore a university degree? Let me give you 300,000 reasons-- in other words, the price (in dollars) at a fancy university for said degree.

      I'm not debating whether anyone should study this. I'm just saying that people who want to get jobs shouldn't need to study it. If you want to do the theoretical stuff, have at it. I'm just saying that it's failed my team as often as it has helped. If the theoretical model doesn't match the problem exactly, you can get the WRONG answer as that NP-complete obsessed dude did when he didn't look for a heuristic.

      • odyssey7 6 years ago

        > the dimensions of the problem were such that a quick heuristic did perfectly fine.

        This is also a theoretical model that they teach in CS programs.

        • xhkkffbf 6 years ago

          Some teach this but many don't. They spend their time climbing the hierarchy and saying the word "exponential" again and again. The classes are obsessed with seeing every problem in Gary and Johnson as intractable.

          My point is that many of these theoretical models cause as much trouble as they solve.

      • commandlinefan 6 years ago

        Do you think that this is only true of CS and programming, or of any degree and any job? And if not, what makes CS and programming special?

  • Hercuros 6 years ago

    I think that just because most people do not write compilers for a living does not mean that it’s not useful to have implemented one. Writing a toy compiler properly is an interesting programming exercise that involves steps such as parsing/validating input and transforming it in a structured way. Even if you never write a compiler again, it can teach you many things of how to approach similar problems.

    (Also, Apple didn’t exactly repurpose LLVM for Swift. LLVM is just the backend, and Swift has quite a sophisticated frontend with its own optimization passes and intermediate language. It is safe to say that a lot of compiler theory and programming language design went into writing it. As another example, the compiler for Go was basically written from scratch and does not use something like LLVM for code generation.)

    I do agree that learning CS theory is no substitute for actually writing software, and doesn’t make you a good software developer by itself. And there are probably plenty of excellent software developers who couldn’t recall what a Turing machine is. That said, a good knowledge of CS fundamentals is indispensable for some types of software development.

    • leetcrew 6 years ago

      I think the compiler project we did in college was probably one of the most valuable assignments I ever had. I still have barely any understanding of how a modern compiler works, but it made me much better and understanding compiler error messages.

  • avgDev 6 years ago

    90% of my job is get data from database, handle concurrency, show data to user, save data changed by user. I literally could most likely do my job with 0 CS.

    However, CS exposed me to a lot of different concepts, algorithms, a lot of math. I obtained an associate degree before getting my BS in CS and I did not unlock the key to learning until the CS degree. I feel like I can quickly pick up different things now. I was able to build a 5ft tall retaining wall and submit plans to the city then execute the project. I literally can perform almost all jobs on my car, except machining engine blocks as I lack the equipment. I completely remodeled my house, learning different building codes.

    I feel a BS in CS gives someone a huge advantage, they have proven they can accomplish something, and should also have unlocked the key to learning that works for them.

    I am not sure if MS in CS is worth it though. I thought about it myself but would probably go with MBA instead.

    • bobbyz 6 years ago

      Your point is valid but you can also prove you can accomplish something while also actually accomplishing something meaningful. For example you complete one of your side projects instead of a meaningless assignment. Sure, the side project might not actually succeed, but at least it had a chance. I also feel like 95% of the key to learning are hard deadlines with consequences.

      Also, to varying degrees, every justification for doing a CS degree has smelled like an attempt at rationalizing a poor decision.

      • avgDev 6 years ago

        I do not disagree with your last point but I don't think I would have gotten into programming if it wasn't for getting my feet wet in school. I guess what works for me, may not work for someone else.

        I do feel like online learning can be MUCH MUCH quicker, as no time is wasted on poorly designed assignments. I feel like it is much more optimized especially comparing it to my state school experience.

        • bobbyz 6 years ago

          School is also how I got heavily involved in programming, but I feel like its more-so due to how difficult it is to self-teach programming. I'd imagine the number of people who tried to pick up native android as their first platform and then decided that programming wasn't for them must be quite large.

  • theamk 6 years ago

    Does not match my experiences at all. Plenty of data structures in my job, with occasional need to parse the data. Knowledge of how OSes work and distributed systems also come very handy.

    I think this is because our product is not related to web in any way, and the only UIs we deal with are quick and ugly ones for internal use.

  • anta40 6 years ago

    >> but I'm not even sure a bachelors in CS is a good idea

    If your goal if "simply" to be a software developer (who usually use existing APIs), nope CS education is not needed No need to study fancy theoritical stuffs.

    Just straight learn anything practical like Java/SQL/Python/etc. And thanks to internet, you don't even have to wait to be enrolled in university. Any high school kids can do that.

    >> Most of the CS curriculum is pretty extraneous

    It's science, after all. Can we say the same thing about physics/biology? OK, computer science may not be considered as science as in "natural science". Instead, see it as a mix of math & engineering.

    Still, the goal of CS department is no to produce practical programmers. At least many many years ago in my 1st day at the campus, the lecturers said that. Although no doubt most CS alumni work as programmers. Yes, I'm aware understanding theories is a thing, and writing software is another thing. That's why we also had software engineering, project management classes.

    • leetcrew 6 years ago

      it may not be necessary, but I think getting a cs degree from a regional tech school is still the easiest path for a recent highschool grad to get a good software dev job.

  • downerending 6 years ago

    Part of the value of a CS degree is that many students incidentally end up RTFMs for a lot of stuff before they start their first job. Which makes them slightly less useless in their first few years.

  • NotSammyHagar 6 years ago

    How many people will get your sarcasm? Why, I could add to your post that even hacker news no longer serves its purpose to be at the central core of computing ;-)

  • ramoz 6 years ago

    partly agree.

    CS certainly matters in software development design and implementation today; esp with AI, distributed systems, complex/large data, cyber security, etc.

    Though, personally, I never learned, or was capable of, the appropriate & applicable CS until I faced these real world issues later in my career in advanced work.

    So I do agree that in college I wasn't ready for such a level of detail that I could not apply in any functional matter of life or early career development.

  • bobbyz 6 years ago

    In my experience, the biggest reason doing a bachelors in CS sucks is because it's a massive waste of time, leaving little to no time for side projects. Programming assignment questions tend to be vague and come with poorly scoped requirements. Usually the professor also forgets to tell you several essential details or has made several errors in the code. An average assignment can take upwards of 40 hours, with 10 or more of those hours spent because the professor was too lazy to check over their assignment for 30 minutes before handing it out. The saying that A students work for C students really makes sense in this context. A students never got the chance to work on what they wanted!

    • bdcravens 6 years ago

      I'm only being partially snarky when I say that sounds like a great preparation for working in a production environment.

      • bobbyz 6 years ago

        Every time I make this point someone says something to this effect. If you spend your career writing garbage for a ransomware gang or an outsourced app development agency you probably won't have too high an opinion about software development. It's just a difficult thing for me to believe that this happens in large amounts at the best companies.

        • bdcravens 6 years ago

          Most jobs aren't at either of those two extremes (garbage vs best companies). There's a lot of work in the middle, where your job is to use your tools to facilitate a business outcome; if your boss has to tell you how to do it, the company probably hired the wrong person.

          • bobbyz 6 years ago

            I suppose thats true. Its not very interesting to think about the in-between.

    • adamredwoods 6 years ago

      At U of Washington you get to choose your own senior project (so I've heard firsthand).

      • bobbyz 6 years ago

        Thats actually pretty cool. I actually go to the other UW and watch jealously as startups are regularly birthed from capstone engineering projects.

      • OkayPhysicist 6 years ago

        Wait, that's not the norm? What's the alternative, do they just let a professor invent a couple dozen projects?

    • detaro 6 years ago

      Luckily, not all universities are that crap.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection