Live data from Hacker News

The limited value of a computer science education

nathanmarz.com

61–70 of 163 posts

Re: The limited value of a computer science education

#61
post #34

Post number 7,819,394 talking about how useful or not useful a CS degree is to a programming job. Here are some lessons I learned by going to school that I find incredibly useful: 1. How to shut up and get some work done, even if I don't see the point to it. 2. How to shut up and get some work done, even if it isn't directly applicable or valuable to a job or something I want in the future. 3. How to take feedback an…

These are about going to school , though, not getting a CS degree. And 100% of these things could, and probably should, be learned in the real world and not through paying tens of thousands of dollars under the guise of education. I did not go to school for a CS degree, and that has not hampered me in any way when searching for a job in software. All I learned in college was how to game the system of the institution…

If you mean 'school' as in 'secondary education' then no, they apply to tertiary education too.

And this is going to sound weird if you're an engineer, but the 'real world' of commercial employment is 90% about gaming the system of an institution which is most likely also a social racket.

That's why kickass engineers get paid less than mediocre managers; because they spend all their time solving fun technical problems instead of gaming the system.

Re: The limited value of a computer science education

#62
post #46

Earlier quoted context omitted.

That's true, and I completely understand, but it's besides my point. My point is to implore people to stop looking at a CS degree as just a means to get a job. If you look at it that way, of course you're not going to find 100% value in it. Getting a job is simply not what a CS degree is for. It was never declared to be for this purpose—nobody claims it's for this purpose (except maybe some schools for marketing purp…

Most parents insist on kids going to uni specifically to get a job. If you can get the same knowledge for free (assuming you have to pay for uni), then what's the value?

I'm trying to say that I found value in it, and many people do. Like I said in other posts, I'm not going to fully describe this value, because it's up to you to find it.

Just know that it's not only for a job. Universities have been around for a long time and have served many great and noble purposes.

Re: The limited value of a computer science education

#63

Isn't the tricky bit that a computer science education is in fact an education in the science of computers (no surprises here), yet what most people study it for is an education in their usage? Maybe what we actually need is a separate field, e.g. "practical computing". - which, I accept, would lend itself less well to University education which we have come to expect as a prerequisite for better paying jobs.

'software engineering' is a degree program in itself in many universities, and it is a curriculum more focused on pragmatic, often even specifically business-focused, project delivery, from coding in a wide range of business-heavy languages to theories of software lifecycles and team management.

That said, anytime I've met one of the hard-working students who opted for a more math and theory heavy CS program instead of an SE program, that person has been able to software engineer and project manage circles around the people who specifically studied software engineering and project management.

Re: The limited value of a computer science education

#64
Interestingly enough, I think the misguided constant push to move CS degrees towards industry relevance more and more makes them more and more worthless -- we have academics going to industry conferences and asking what kind of developers would be preferable to churn out, students whining that they aren't 100% ready to drop in at a company when they graduate. So schools are pushing teaching how to write CRUD apps in java or "a class on the newest hottest mobile app development platform" or "version control" -- all stuff that should be fairly easy to pick up in a day or on the job for someone who knows theory (version control), or has no place in a University (the rest) when they should really focus on the hard stuff, like CS theory (PL, theory of computation, distributed, compilers, algo, concurrency, mathematics), which is MUCH more difficult to learn outside of an academic environment, is universal, and translates to every language and development paradigm whether it's now or 50 years from now.

Re: The limited value of a computer science education

#65
post #34

Post number 7,819,394 talking about how useful or not useful a CS degree is to a programming job. Here are some lessons I learned by going to school that I find incredibly useful: 1. How to shut up and get some work done, even if I don't see the point to it. 2. How to shut up and get some work done, even if it isn't directly applicable or valuable to a job or something I want in the future. 3. How to take feedback an…

I have a degree in Mathematics, I think my educational experience has made me a better developer than if I'd have pursued a pure CS degree alone. Does that mean that I think everyone who wants to develop software should get a math degree? Not even a little bit. But I also don't think they should pursue a CS degree either. In the end the answer is "it's complicated, and there isn't one good answer yet", but we don't g…

You're still, in this post, trying to extract the value of a degree in terms of job power. That's what I'm arguing against.

I paid $180,000 to go to university and I think it was 100% worth it, regardless of my job or how much it helped my job. My selection of 7 points was mainly to make a point, that point being that I see a lot of value in university, many people do, and we should all stop trying to fit all of this into employment, because they have very little to do with each other.

Re: The limited value of a computer science education

#66
post #34

Post number 7,819,394 talking about how useful or not useful a CS degree is to a programming job. Here are some lessons I learned by going to school that I find incredibly useful: 1. How to shut up and get some work done, even if I don't see the point to it. 2. How to shut up and get some work done, even if it isn't directly applicable or valuable to a job or something I want in the future. 3. How to take feedback an…

These are about going to school , though, not getting a CS degree. And 100% of these things could, and probably should, be learned in the real world and not through paying tens of thousands of dollars under the guise of education. I did not go to school for a CS degree, and that has not hampered me in any way when searching for a job in software. All I learned in college was how to game the system of the institution…

>the guise of education

A school that provides merely the guise of education is a bad school. This does not mean all schools are bad.

Re: The limited value of a computer science education

#67
post #55

Earlier quoted context omitted.

These are about going to school , though, not getting a CS degree. And 100% of these things could, and probably should, be learned in the real world and not through paying tens of thousands of dollars under the guise of education. I did not go to school for a CS degree, and that has not hampered me in any way when searching for a job in software. All I learned in college was how to game the system of the institution…

> that institutions like that are a societal racket and waste of time and money. This is completely wrong. Universities are tremendously useful and do many great things for society and humanity. I'm not going to provide evidence because I think that any reasonable person will agree with me.

Sure, but the other 90% of their budget is going to useless pet projects and bureaucratic waste.

Re: The limited value of a computer science education

#68
post #55

Earlier quoted context omitted.

These are about going to school , though, not getting a CS degree. And 100% of these things could, and probably should, be learned in the real world and not through paying tens of thousands of dollars under the guise of education. I did not go to school for a CS degree, and that has not hampered me in any way when searching for a job in software. All I learned in college was how to game the system of the institution…

> that institutions like that are a societal racket and waste of time and money. This is completely wrong. Universities are tremendously useful and do many great things for society and humanity. I'm not going to provide evidence because I think that any reasonable person will agree with me.

[deleted]

Re: The limited value of a computer science education

#69
post #55

Earlier quoted context omitted.

These are about going to school , though, not getting a CS degree. And 100% of these things could, and probably should, be learned in the real world and not through paying tens of thousands of dollars under the guise of education. I did not go to school for a CS degree, and that has not hampered me in any way when searching for a job in software. All I learned in college was how to game the system of the institution…

> that institutions like that are a societal racket and waste of time and money. This is completely wrong. Universities are tremendously useful and do many great things for society and humanity. I'm not going to provide evidence because I think that any reasonable person will agree with me.

[deleted]

Re: The limited value of a computer science education

#70
post #9

>I highly doubt most programmers need to know how to do formal proofs of algorithms, determine asymptotic complexity of algorithms, or even know that much about data structures. Indeed, but I believe that having a solid foundation in theory is important. People have spent a lot of time coming up with ways to reason about common problems, and you don't need to reinvent the wheel. Additionally, while many programmers c…

I agree!

Except that I think formal mathematics and proofs are attainable by informally-trained programmers... just perhaps not computer scientists.

To quote Friedrich Bauer:

"Software engineering is the part of computer science which is too difficult for the computer scientist."

I'm not sure how true that is. I don't have a computer science degree. I just have some interesting anecdotes from a colleague who is pursuing his Ph.D in computer science with a focus on developing a formal proof system. As a teachers' assistant he gets to run some classes. Most students tend to snore through formal methods I'm told. In order to wake them up he asked his students, who are working on their masters, to implement binary search. He gave them a specification for the algorithm and off they went in pairs. He used the PlusCal language from TLA+ to model around eight submissions in roughly two hours (I'm not sure what the exact number was). He found errors in 7 of them and was able to demonstrate what the inputs were and the steps the algorithm would take to reach the error state thanks to the model checker in the TLA+ toolbox. He got a few students hooked from that point.

In my case maths is exactly what I needed. I'd been working in distributed systems for years without an iota of training in formal methods. I'd read Leslie Lamport's papers on time, Paxos Made Simple, Raft, Bloom^L, etc. I have several common textbooks on distributed systems. I'd worked my way through many subjects in graph theory, "concrete" mathematics, discrete maths, etc. But as Nathan says what saved me most was experience and learning what abstractions to use and how to maintain a handle on complexity. If I just followed the code I could make things work. Except when the code wasn't a good enough abstraction (in the mathematical sense)... then things got hard (ie: race conditions, scheduling problems, etc). I used to just follow the code and suss out the problem using standard debugging tools and time-honored techniques but what started to really click for me was modelling my problem in TLA+. When I started leaning on maths I felt like I could start achieving more and solve problems before they became bigger problems.

I often talk about programming as a force-amplifier. If you're an actuary and you know how to program you will be a better actuary than your peers. Maths is the force-amplifier for programmers. You can learn formal mathematics and create a language for modelling computations that you can prove. Anything you can do from there will be better than what your peers can do.

... and yes I realize that not every piece of software needs to be accompanied by a proof. But for the hard problems it's a useful tool to have. And there are many other subjects where it's becoming necessary to understand different branches: graphics, AI, "big data" (ie: applied statistics), distributed systems (even your modern processor is a tiny distributed system), etc.

Post reply on HN