Hacker News new | ask | show | jobs
by MCRed 4087 days ago
I think a more interesting question is, how has the ROI of college changed over the past 40 years?

The cost has gone up much faster than inflation.

The number of people going to college has also risen dramatically. This means there are a lot more college educated peers competing with you in the workplace. This means that the college degree is not as rare, and thus has lower scarcity value.

Finally, I think it's quite possible the quality of the education has declined significantly in the past 40 years. When I was in college, almost 30 years ago, I was appalled at how the university focused and spent so much of its money on a losing football team (in a zero sum situation where the other schools were always going to be abel to massively outspend it and had larger pools of students to recruit from) ... and in the decline in the education. I remember sitting in a class and learning about how universities were started by tradesman who banded together and hired experts to teach them, and I thought "Man, I wish I could go to a school like that". Since then I've seen nothing but an increase in these efforts... I've see the quality of a CS degree (based on the people who I interview for jobs who have them) decline.

So the formula is: More Cost, Less Value, Lower Quality = Lower ROI.

If things don't turn around, at some point College will be a losing proposition.

Of course, this presumes that the education colleges give can be obtained elsewhere.

Which brings up another point MOOCs, and online access to open source frameworks have really changed things in the past 30 years. 30 years ago we were buying our compilers (CodeWarrior for life!) now they and our frameworks are open source and well documented. The books are cheaper-- $40 to Oreilley rather than $120 to the campus book store (or are my prices out of date?)

You can learn more modern technologies better than going to college and spending 4 years on Java and C++.

Then there's the MooCs. you can learn CS fundamentals by video, along with people all around the world.

I think we're close to that tipping point.

3 comments

One criticism I have of education systems is that they structurally encourage only superficially studying content.

Let's take my compilers class as an example. I go to a 75 minute lecture 2 times a week and I do about 4 hours of homework a week. I do this over 18 weeks.

That's only roughly 120 hours of study over the course of a semester. That's only as many hours as most full time employees work every 3 weeks! And the sad thing is, I imagine if I spent 3 weeks reading a compiler book, reading though the source of lex and yacc, and implementing some kind of basic compiler using them, I'd be a much better programmer than what we're doing-- implementing a C compiler for MIPS in java, using a shitty lex library and only implenting the parts the professor thinks is important.

This brings me to another point. Programmers are necessarily autodidacts because shit changes incredibly fast. You can't be a one trick pony. So if we're pushing kids through these incredibly formulaic methods of learning, what are we really preparing them for? A life of being an enterprise code monkey? The student who taught themselves anything, even if they are missing a few core details, are more equipped to fix those gaps in their understandings.

I did a hackathon a couple weeks ago that had a sort of business spin on it. There was this group of 4 guys that made a college choosing application based off your GPA, as a desktop java application with a GUI that had background images and looked like an early 2000s keygen program.

The thing is, I have absolutely no doubt that these guys are good students and they'll probably find an alright job out of school. But all they know is java development.

I think that students that want to be more than that probably shouldn't go to school.

Here's a question to you: if I handed you a résumé, without a bachelor's degree, but instead included my github profile and a list of books I've read cover to cover and some open source contributions, am I going to get the salary I am worth?

> Let's take my compilers class as an example. I go to a 75 minute lecture 2 times a week and I do about 4 hours of homework a week. I do this over 18 weeks. That's only roughly 120 hours of study over the course of a semester. That's only as many hours as most full time employees work every 3 weeks!

The comparison doesn't seem fair. First, I suppose you have others classes at the same time. And if you don't, you're free to do additional work on your own. In any case, hard concepts take time to sink in. You're better off learning this over a longer period of time.

Besides, don't think full time employees do meaningful intellectual work 8 hours a day. There are always a lot of distraction. And even when coding, it's not the same as writing tons of boilerplate code than understanding new complicated concepts.

> And the sad thing is, I imagine if I spent 3 weeks reading a compiler book, reading though the source of lex and yacc, and implementing some kind of basic compiler using them, I'd be a much better programmer than what we're doing

Are you sure that you'd be able to do that? supervised education helps you to pace yourself, focus on what is important and to keep motivated over the long run. The actual content is maybe the least important.

Besides, going through lex and yacc sources sounds like a huge waste of time for someone who wants to learn about compilation. There may be some value in this, but it should be last on your priority list.

> Are you sure that you'd be able to do that? supervised education helps you to pace yourself, focus on what is important and to keep motivated over the long run. The actual content is maybe the least important.

I'm 100% sure. The motivation is all there. Why would I be in this class if I had to be coaxed into learning about it?

I think I can learn more in one long sitting than piecing away at any given topic. That's my personal experience. Instead I get distracted taking 5 courses at once and learn comparatively little.

> Besides, going through lex and yacc sources sounds like a huge waste of time for someone who wants to learn about compilation. There may be some value in this, but it should be last on your priority list.

I'm sorry but no. Compared to what we're actually doing, it's far far far better.

What am I going to come away with from the class? I guess I'll be a rock star interviewer, but I don't think I'll be much else.

Implementing something using only common tools and doing it without any code from the instructor would certainly result in more skills moving forward.

"I'm 100% sure. The motivation is all there. Why would I be in this class if I had to be coaxed into learning about it?"

So then why aren't you going through the lex and yacc sources in addition to your compiler class work? It's not like you have to ask for permission.

Because I'm stretched thin by my 5 other courses and other projects.

The point I'm trying to make is that at least for me, I'd be much better off devoting myself to one topic for 3 weeks than spread over 18. That may just be me personally.

Maybe that's the best lesson college is teaching you. In your professional life, you'll have to deal with a lot of frustration working with other people in a way that you haven't chosen!! you have to make the best out of it.
> This brings me to another point. Programmers are necessarily autodidacts because shit changes incredibly fast. You can't be a one trick pony. So if we're pushing kids through these incredibly formulaic methods of learning, what are we really preparing them for? A life of being an enterprise code monkey? The student who taught themselves anything, even if they are missing a few core details, are more equipped to fix those gaps in their understandings.

depends where you go and what their objective is. some schools focus on teaching real-world tools. which is great for getting a job, but less useful because there are completely new tools every few years.

other places focus on the theory of it all so when you see "new" things, you already have the knowledge to understand the basics.

chances are your professor is cherry-picking the parts to implement because while you could fully implement all parts, the learning probably bleeds off quickly. Also, based on your calculations, assuming you take a full course-load (5 courses), 3 weeks * 5 = 15 weeks = ~3.5 months, which is roughly a semester.

sure, you could get an education without a school. nothing stopping you. but, ultimately, people put a value on the piece of paper, the connections can be valuable, and school does a good job of educating/exposing you to a lot of things in a fair amount of rigor in a decent amount of time.

0.02

> if I handed you a résumé, without a bachelor's degree, but instead included my github profile and a list of books I've read cover to cover and some open source contributions, am I going to get the salary I am worth?

Speaking as someone who makes hiring decisions, a strong Github profile means more to me than the school you went to or the degree you have. When I hire people, I care about their ability to get things done and their ability to self-direct far more than their ability to do well on tests. Experience drives salary, not the education line item on your resume.

Speaking as a twenty year old who didn't go to school and doesn't have a degree would you hire me - or at least consider me for an interview - based off my github here (https://github.com/philangist?tab=repositories). I am actually gainfully employed right now at a job I like a lot, but I sometimes worry that I might be pigeonholing myself due to my lack of a formal degree.
I'd certainly consider you for an interview (you show actual development ability and an understanding of some important concepts in your work, which is much more than many interviewees), but speaking frankly, the profile is a little weak - it consists mostly of experimental or toy stuff without any kind of evidence of real-world application, no tests, nothing that's been packaged up for use by other people. These aren't bad, by any means, but by themselves they aren't something I'd look at and say "I want this guy working for me".

You don't have a lot of collaborative work (read: contributions to existing projects) or original work that others are using, which is one of the things I look for in candidates. I'm not just interested in a candidate's ability to write code, but in how they write code in the context of large projects, how they produce deliverables for consumption by other developers and stakeholders. Your Github profile isn't just a chance to showcase your ability to write code, but a chance to showcase how you write code with other people involved. A candidate who is actively contributing pull requests to other projects is very interesting to me, because they demonstrate an ability to collaborate with other people on a codebase they didn't originate, which is obviously necessary in business.

Your commits are clean, though, which is very good. I see way too many candidates with message after commit message like "stuff" and "changes" (anecdotally, I've found this to be pervasive in newly-minted CS majors and academic repositories). That's a major negative for me, because it suggests a lack of desire or ability to communicate the essence of your work.

A strong history of open source participation and/or a strong history of development of a personal project that is actively used somewhere are the biggest things I look for, because they speak not just to your ability to write code, but your ability to ship deliverables. After that, I look at code quality (cleanliness/use of idioms/lack of obvious bugs or errors) and commit quality (how disciplined are you in your commits, how well do you communicate what each change is for). The lack of those things isn't a "no" for me, but their presence is a big "yes".

> ...the profile is a little weak - it consists mostly of experimental or toy stuff without any kind of evidence of real-world application, no tests, nothing that's been packaged up for use by other people.

This is definitely true. I generally put up small one off projects where I implement an idea I'm interested in, as opposed to long-term libraries or applications that are intended to be used by others. For the longest time I wasn't technically skilled enough to contribute to other people's code, but now I think it's more about a lack of time and interest for me. I'll definitely make a deliberate effort to collaborate and work on other people's projects going forward. I'm curious to know though, what do you mean when you say that I "show an understanding of some important concepts in [my] work"?

Writing a garbage collector and binary wire protocol client, even if they're just toys, show an understanding of how things work that is important. A depressing number of professional developers are basically just stacking code legos that someone else built on top of each other until an approximation of the right result comes out, and never get deeper than that. The fact that you've even attempted a mark-and-sweep garbage collector marks you as someone who isn't afraid to get their hands dirty. It's a good thing.
> implementing a C compiler for MIPS in java, using a shitty lex library

Interesting - when I took that course in the late 90s, I had to implement a java compiler for MIPS in C. With a shitty lex library, of course.

"Here's a question to you: if I handed you a résumé, without a bachelor's degree, but instead included my github profile and a list of books I've read cover to cover and some open source contributions, am I going to get the salary I am worth?"

Depends a whole lot on your GitHub profile. For example to determine compiler knowledge I would expect to see a basic compiler implemented end-end as well as a reasonable contribution to an existing compiler and a few write ups/design papers.

Repeat for the other 15 odd important areas of study, and add in a few internships etc to show you can work well as part of a team and yes I would certainly hire you and pay you well. But this amount of work will take 2-3 years in any case.

I'm never asked about my education.. Which has been handy as I don't have a college degree. I was fortunate and managed to kick-start my career after getting a foot in at a rather prominent company. Once the work history starts to establish you're pretty free to blaze your own path. That has been my own personal experience.
You still need some sort of equivalency in the mind of the people doing the hiring before the MooCs move in -- something to get them past the mindset that only people who go to college can perform the job. Businesses also need to stop auto filtering people who don't have a degree, and that's something that you'd actually have to fight for to get removed, meaning most hiring managers won't be arsed to take up that fight. Most sane places will realize that actual code is more indicative of skill than the degree (this is before you've met the person), and we thankfully have free tools to accomplish that goal.

It would be fine if college were something optional and there could be a carefree debate. The degree in America is quickly turning into something that is required for decent employment, but can give you a very difficult financial situation for a long time if the reward doesn't meet the cost.

Agreed. One thing people usually don't take into account when they talk about current College ROI is the opportunity cost. Especially at non-first tier private schools the opportunity cost must be considerable.