Ask HN: Should I attend college?

21 points by ruswick ↗ HN
I am a current high school senior who intends to go into the software industry. I'm trying to decide between enrolling in college to pursue a BS in Computer Science or entering directly into the workforce.

My conundrum is this: I intend to seek a front-end engineering job, and am already very competent in front-end technologies. I have a fair number of items on my resume, mostly from personal projects and internships. I anticipate being able to acquire a moderately well-paying ($60,000 to $80,000+) development job after leaving high school. However, I'm also worried that not pursuing a degree will exclude me from certain well-paying jobs, especially later in my career.

I'm also quite worried about the debt load that a degree would require. I anticipate having to take out between $50,000 and $100,000 in loans to finance a degree.

On balance, do you think pursuing a degree will be more lucrative in the long run?

89 comments

[ 3.7 ms ] story [ 168 ms ] thread
I'd say apply now before it is to late (if you haven't already), attempt to get a job during the summer for what you think you can ($60,000-80,000 may be iffy unless you have access to more progressive companies) and if you can't: go to school.

If you are really lucky you could probably even find a job that will let you go to school part time while you are working which would be the best of both worlds.

You don't have to attend school right away but you'll probably lose all momentum to go as you age.

I think you have to ask yourself, "Where will I be in four years in both of these scenarios?" If you choose college, you'll have a degree, some book knowledge, and some debt. If you choose to work, you'll have four years of experience and some money in the bank.

I'd argue that four years of experience trumps the four years of book learning, and that the debt vs. savings issue is secondary, (but of course points towards getting a job now).

So I would suggest you try to find a job rather than go to college.

This is a false dichotomy. I worked summers and part-time during the school year, my entire time in college. I had graduated with no debt, 4 years of book learning and 4 years of XP. Most of my fellow C-S students had internships paying $15-20/hr by their sophomore year, and almost all that wanted them by their junior year.

This is not to mention that outside of the coasts, unless you are freelancing or starting a startup, people hiring developers often require a degree (at least in hires with less 10 years XP).

If by "later in your career" you mean 3-5 years from now or later, if you use your time well, you will have more than the requirements for jobs which usually require a degree "or" 3-5 years industry experience. You have a huge opportunity to go your own way, in a massive field, with plenty of resources to get you where you want to go, alone.

It will be tough going at first, but if you are good at what you do, you can out-pace what you would earn with a degree. You will have some "verifiable" acclaim, and you can back up everything you may with evidence you built yourself, while doing client projects all you can. Look through online databases of freelancing gigs, but it's a wild west.

A BS in Computer Science will not serve you well if you intend to do front-end engineering, for the most part. IMO, it would be better to work in online communities of experts such as http://stackoverflow.com or http://ux.stackexchange.com/, earn reputation there, and build a portfolio of past work.

Most of all, stay relevant. If you do projects for your own experimentation, develop them to a point that is presentable, then move on to more paid work or experimental work that demonstrates being on the edge of the field, until you are sure you want to "specialize" in a certain way or format or technology.

On the whole, you can do everything you might want to do, including gain contacts and peer review, without college. Participate in online communities with good offline meet-ups and conferences, etc. Stay connected, eager, and active. In 3-5 years you'll have a demonstrated track record of being self-motivated, well educated, and extremely progressive.

I can't over emphasize how saturated the field is, which will be tough for you with or without a degree unless you set yourself apart. Focus on that, regardless of what else you do. I personally believe an independently created career without a degree will be more lucrative in the long run.

I think you should consider going to college. Since you already have a lot of prior experience, it would be better if you try to graduate faster. You can take CLEP exams to test out of GE requirements, as well as get CS-specific courses waived by showing prior experience (I did both of these things). Right now I'm turning 18 but finishing my sophomore year of college.

The way I see it, four years to get a degree is worth it, you will not ever have to worry about whether you are qualified "on paper". Of course most tech companies don't really care as long as you can code, but it's good to have, just in case.

Front-end engineering is a tiny proportion of computer science (ie not covered in a general curriculum at all), so I'd say it depends if you want the depth of more front-end experience putting you even further ahead of your peers or the depth of a huge range of CS subjects, mostly close to useless for your standard front-end engineering role.

Lines are getting blurred, and college/university isn't the only way to learn more things, but I imagine you're ruling yourself out of a lot of jobs by focusing this early. Maybe you don't want them jobs though. I guess my best guess at an answer is take a job if you can and you know it's the career you want, if not bite the bullet and do CS.

I anticipate having to take out between $50,000 and $100,000 in loans to finance a degree.

Is that really what college costs these days? I went to state school which cost about 8-10K per year. My loans are 0% subsidized govt loans. I pay about 150 bucks per month. I could have paid them all off by now, but why?

It doesn't need to be that expensive.

In-state tuition at my state flagship (Illinois) is $20,000. Factor in cost of living and various fees, and costs can easily run into the $30,000 to $40,000 per year range. Moreover, state funding for the university has fallen in recent years, meaning that financial aid is scarce and that tuition is perpetually rising.

If I recall correctly, the interest rate on Stafford loans is 3.4%. Government "Parent PLUS" loans and private loans are much higher. What's especially appalling is that the federal government actually uses student loans as a source of revenue. (http://www.rollingstone.com/politics/news/ripping-off-young-...)

The cost is getting out of control.

You don't have to go there; especially not the whole 4 years; just googled Illinois state is more like $6500, and community colleges are way cheaper -- and you can use CLEP too! (OTOH, CS at UIUC would look really coll on the resume, so maybe transfer for your last 2 years, or go for an MS)
Yes.

Yes yes yes yes yes.

"Front-end engineering" is a craft that happens to be relevant right now. It's an artifact of the particular client-server computing model we currently have. It is not likely to be relevant 5-10-20 years from now.

"Computer Science" is (among other things) a discipline that will give you the ability to learn the next craft, and the next one after that. It will keep you relevant your whole career.

Definitely go to college if you have the opportunity to do so.

Care to elaborate on what potentially could replace the 'client-server computing model' in 5-10-20 years? This seems far fetched IMHO. I can only envision a future where systems place more emphasis on UI and design. I imagine this future because as our computers grow in complexity, the interfaces used to control them need to become more simple and interaction-focused.
Mobile, wearable technology come to mind.
Yes but these devices still require a large amount of UI design/interaction. I don't see how this would change the 'front-end' ecosystem much
Given how much "front-end technologies" seems to translate to "javascript / html / css" nowadays, I'd be incredibly shocked if it didn't.
Considering the fact that these are the de-facto UI languages for the World's most widely deployed platform (web browsers), do you think that javascript / html / css are going anywhere anytime soon?
1994 you: Considering the fact that these are the de-facto UI languages for the World's most widely deployed platform (Windows), do you think that the Win16 API is anywhere anytime soon?
While I see your point, you're comparing a closed-source proprietary platform to the web. Apples to oranges if you ask me
Even if Windows had been using X11/Tk or whatever back then, it wouldn't have made a difference.
Look at how different UI is from mainframe/green screens to the client-server apps of the 90s-00s to todays mainly web front ends. It has changed drastically over the past 40 years but still pretty much does the same thing. Provides the user a way to interact with computer/software/data.
If everything is apps in the future then "front end" technologies may be compiled native code like Objective C or Java or even Python.

If your computer only uses voice, the "front end" technology stack is very different from what we have today for websites.

If government and market forces cause the web industry to stagnate over time (see: net neutrality, pervasive privacy concerns), then the hot industry of the future might be something totally different.

I think this is a weak argument that ignores some of what the OP wrote.

A CS degree alone will not keep him relevant 5/10/20 years from now. The industry is, for the most part, a meritocracy, and he will need to keep his skill set up-to-date with industry trends forever.

In my experience, good CS students tend to learn more outside of class. Based on the OP's post, I would bet that he is sufficiently capable of self-educating.

(comment deleted)
A completely opposite summary is just as valid, in my opinion.

"Front-end engineering" is a cutting-edge craft and a working knowledge of this will develop into the next important thing 5-10-20 years from now.

"Computer Science", as it is taught, can be 30+ years out of date, depending on the course. Few academics have functional industry experience and many are regurgitating theory that they learned a long time in the past, not fully updated for existing practice.

> a working knowledge of this will develop into the next important thing 5-10-20 years from now

Do you know something the rest of us do not about "the next important thing"? Surely you can imagine a scenario in which your "cutting-edge" skills become devalued. If history is any indication of things to come, such a scenario isn't that far-fetched.

> "Computer Science", as it is taught, can be 30+ years out of date, depending on the course

You're right - some courses are garbage. But when I was in school, the courses I took on databases, algorithms, AI, and mobile robotics were extremely relevant and still are today. Most CS curriculums teach fundamentals and concepts, which have never gone out of style.

When you say "30+ years out of date" the first thing that comes to mind is a computer engineering class I took based on the intel 8085 (1977), which was about 30 years old when I took the class. Writing assembly code for the 8085 happened to be one of the most interesting and important parts of my CS career, despite being 30+ years out of date compared to the Java and Python code I write these days.

Not the OP, and I would've phrased the comment a little less strongly. However, I'm a full stack engineer who came up from the front-end engineering ranks, and I've successfully gone through two major tech switches (desktop -> web and web -> mobile).

The specific tech stack you use as a frontend engineer will almost certainly be obsolete in 5 years. The general skills you learn as a frontend engineer will not be, and that combination of skills are not taught anywhere, particularly not college.

If you're doing it right, you learn way more as a FE-SWE than just Javascript. You learn design concepts like hierarchy, line, typography, color theory, etc. You learn information architecture and how to present only what the user needs to see at a given time to them. You learn how to structure a large application through MVC, MVP, component trees, etc. You learn how to keep it responsive and low-latency. You learn concurrency and how to deal with user interactions that may occur in the middle of your app doing something. You learn animation and motion design. You learn security, input validation, never to trust user input, and how to design the UI so that invalid inputs aren't even possible.

Those are widely transferrable skills. As long as there are computers and people who use them, we'll need to figure out how to interface between them. And as more fundamental CS concepts become available to mainstream, non-tech-savvy users, the need for frontend engineering skills only becomes greater (witness companies like GitHub, DropBox, and Twitter, which are based upon bringing UNIX utilities that have existed for 40 years to mainstream audiences).

I loved my compiler design and machine architecture courses, but demand for those skills is very specialized, and you have to be very good at it to get a job doing them. I'm actually one of the lucky ones who has used my compiler skills in a large corporation, but honestly frontend engineering has opened up many, many more doors for me.

> The general skills you learn as a frontend engineer will not be [obsolete]

To play devil's advocate: What if the next mainstream computing interface has next-to-no need for any visuals? In other words, do you think point-and-click and/or touch interfaces will be as prominent in 10 years as they are now? I can't imagine that computing applications will always interface visually - seems inefficient.

I've worked with folks doing gestural (eg. Kinect-style) and voice interfaces. Some of the principles are different, but a lot remain the same. The basic ideas behind deciding what's the absolute most important information for a user to know, getting in their mindset, progressively revealing more as they navigate through the app, and being instantly responsive actually become more important with gestural/voice interfaces, because your communication channel with the device is lower bandwidth. (At least now - gestural interfaces have the potential to be much higher bandwidth, but current camera tech isn't up to it yet.) A lot of the math behind gestural interfaces is also very similar to the math behind 3D computer graphics.

I also think that computer interfaces will retain some visual component at least for the foreseeable future, because humans are predominantly visual creatures. There are some situations where this isn't appropriate - eg. while driving a car - but when you have the user's full attention, it's usually fastest to present information visually.

I think that a lot of the changes might be in the form of refinements or new UI models. Mobile has opened up a whole bunch of new UI metaphors - scrolling is much more important, with things like pull-to-refresh and sticky toolbars, and it's now customary to stick all links and navigation options behind a NavigationDrawer - but they didn't fundamentally change what being a FE-SWE is about. It's more like these are new UI widgets that can be used to build a better experience on smaller screens. Things like cameras and accelerometers do change some of the paradigms behind frontend engineering (I bet OCR and physics will become much more important in the near future), but so far they're being used as subroutines you call out to.

20 years ago, the hottest ride in programming for smart kids was VB for Windows client applications. Microsoft was an unbeatable monopoly who would control the desktop forever.
Don't forget there'll be some steady jobs in the tech industry that OP would automatically be disqualified from for not having a college degree. Also, if a job offering is competitive and there are multiple candidates with the same skillset and experience as OP, the person with the college degree might get the benefit of the doubt.
I think it really depends if you want to go the corporate soulless uninteresting but well paid and secure work route.
Not necessarily. You don't have to be a big soulless corporation to prefer candidates with a college degree.
This is true, and absolutely worth considering.

As long as you have access to enough of the market that open-minded employers are competing for your work, I believe that this wouldn't harm your salary or propsects in a meaningful way.

Why go for four years?

I loved my college experience and I found that network I built was awesome. If I were to do it again though I would probably go to CC for two years then transfer to the college of my choice to offset the cost.

I would also look for freelance/part-time remote work during my time throughout my college career.

If not for the education, college helps you learn a lot about meshing with people from different backgrounds. It's also a lot easier to get 'a foot in the door' with various companies if your college holds job fairs.
If you are going for CS then just stick with a state school education. I regret going to RPI and Harvard and ending up with enormous school loans, but at the time I thought I need to be at a well known school in order to succeed.
Don't go to an expensive school. Second, work while you go to school. Lastly, you don't have to finish and get the degree, just get the foundations of what you need and a few great connections.

If you don't go to college, you won't get college experiences. Trust me, college experiences are some of the best in life.

If you go to a super expensive school and don't work, really depends on how much money mommy and daddy got, plus you don't want to be they guy who shows up for a Web Dev position with all your fun algorithmic theories but you hand code new functionality like a chump.

Either way, you'll be fine if you're typing if-then statements but get some life experience, too, or else you'll just be a nerd with no stories, aka lonely.

If your experience is as good as you claim, you should have zero issues going to college and working part time at decently well paying job.

I am speaking from experience, that is what I did. I never had to take any loans and thus graduated with zero debt.

I think this is kind of a false dichotomy. If you can find a job right out of highschool in the software industry, you may be able to find a place that has tuition reimbursement for you to take part time classes.
If you can access $60k jobs after leaving high school, then pursuing a full-time degree will cost you at least 3x$60k + tuition.

This advice is specific to your situation and not my general advice:

If your assessment is accurate, and if you have options in the job market (you are not tied to a single generous employer, say), I would recommend you don't take a degree.

A degree is going to put you perhaps $300k (1 house) and several years in the hole. It's not obvious that you'll then have better access to the job market than you have now. It's even possible you would have worse access. For most employers, practical experience of work they need trumps college classes.

There is absolutely nothing stopping you from taking a degree later or taking one part-time if you decide that it's relevant to you.

As a final point, you should consider applying for both college and jobs, giving you a clearer choice of your available options.

If you can access $60k jobs after leaving high school, then pursuing a full-time degree will cost you at least 3x$60k + tuition.

Let's not be to US-centric. If you look beyond the borders of your country, it's perfectly possible to study at a relatively high-ranked university for a small tuition fee. E.g., the university where I studied in The Netherlands has a rank hovering between 78 and 98 in various ratings (e.g. Times Higher Education World University Rankings). Yearly tuition is Euro 1835 for students from the EU and Euro 7500 for international students.

There's nothing US-centric about what you quoted; the 3x$60k figure (and it could end up being 5x) comes from the opportunity cost of going to school instead of working. That can be lessened with part time work and full-time during summers, but it's still there.
Sorry, I misread. But I still think the point stands. Tuition fee is not an issue in many other countries. Besides that, in most areas, a post-university income will likely be higher than working for four years after high school.

Then there's also the social factor. University allows you to network with peers, some of which will be very successful and may give you good leads. It's also a good place to meet a life partner and have a good time.

Yes. The point of a degree is to ensure you learn enough about the right content/concepts without proceeding with gaping/gratuitous hold in your education. Self-taught certainly can work, but better that you have dozens of well-informed experts review every aspect of what you need to know. A degree also assures employers of the breadth & depth of your knowledge without having to deeply examine you themselves. Yes, the process isn't perfect, but it's better than the gross ignorance I've seen in some surprisingly well-placed people.

Now, if you're confident enough in your current talents, strike out into the workforce and earn what you can until you (A) can pay cash (yes, cash) for that degree, and (B) you can figure out where that cash will be best spent. You can also persuade some employers to pay for the degree, saving you a bundle.

Whatever you do, don't go into debt for it. Cash only. For everything, not just a degree.

"I'm also quite worried about the debt load that a degree would require. I anticipate having to take out between $50,000 and $100,000 in loans to finance a degree."

You may want to consider if you can do better than that. My Bachelor's and Master's are from Michigan State University. There is little (though not quite zero) evidence to suggest that there are radically better programs out there, because so much of what you get out of a college depends on you. (I wish I'd done better, I certainly could have done worse. But I can definitely attest that top-tier != awesome skills; I've given interviews that are definite counterexamples.) Double check, because some state university programs do seem to be wastes of time, but by no means all of them.

College is an easy, but expensive, way to acquire certain skills that, yes, will indeed future-proof your career. It is easy in that you will be guided through a useful course of study; it is expensive in that it requires not only some money, but also a lot of time.

One way to resolve the matter is to try your best to work with a counselor to up the quality of what courses you take. While this is poorly advertised, a degree is ultimately a certification from the certifying body that you have completed their minimal course of study. The set of requirements they lay out front is their default answer, but they can give others. While they will probably be inflexible on the number of requisite credit hours, they're often quite flexible in terms of what those credit hours can really be, and in particular they can be quite flexible in terms of substituting harder courses for easier ones. Consider trying to skip over the intro courses, as that will particularly open up the more advanced tier earlier. Much of the real value of a college degree is in the higher level courses; if you can get there faster, go for it.

I'd honestly think about a dozen times about taking on $50,000-$100,000 in debt right now if that's really the only choice you can find, though. That's frankly catastrophic levels of debt at the beginning of a career. One nice thing about the computer career path is that you will be able to handle it, but even so it's a burden, and if you have any sort of life hiccup this level of debt can become a big problem. I'd seriously consider grabbing a job, doing my best to pocket as much cash as possible, and wait for the post-bubble-pop to get your formal education (taking the previous paragraph even more fully to heart at that point). You may also discover that you do indeed have the discipline to pick up the harder stuff on your own. (The touchstone for that, IMHO, is whether you can teach yourself how to build a compiler; if you can do that, you can probably self-educate just fine.) It's hard to be sure when and if the bubble will pop, so it's a risk, but at this point, so is taking on that amount of debt. Alas, there are no non-risk choices.

So, no quick & easy answers. I'd be suspicious of anyone in this thread who offers one. But the question becomes much easier if you can work out a way to take on substantially less debt, though.

> I'm trying to decide between enrolling in college to pursue a BS in Computer Science or entering directly into the workforce.

Do what I did and have it both ways: take a gap year before starting college. I was accepted to MIT's class of 2016 but I won't be joining until the class of 2018 (this coming fall) because I joined a startup in San Francisco. If you're as good as you say you are you'll be able to get a job, and most universities allow gap years without a problem.

> On balance, do you think pursuing a degree will be more lucrative in the long run?

Yes. There are also many other reasons to go to college. Let me know if you have any particular questions or if there's some way I can help.

EDIT: Let me recommend a gap year again for a different reason: it lets you put off your decision until you know more about working in the real world. It would be easy to decide to continue working after your gap year and never go to school. It also provides a nice "hedge" against the real world — if you end up disliking your job, it could never be more than a year before you head off to school.

> > On balance, do you think pursuing a degree will be more lucrative in the long run?

> Yes.

Do you have good evidence for this? I've seen data that says that each year of post-high school education correlates with a ~8% bump in salary, but I am doubtful that this is a causal effect.

If the OP wants to make money, spending time becoming one of the best persons at some subset of front-end engineering is almost certainly more lucrative and more easily doable outside of a university. Alex Maccaw (http://alexmaccaw.com) is a good example of this.

If you have the discipline to teach yourself front-end engineering in high school, you have the discipline to teach yourself anything in realm of applied computer science. Github has replaced the college degree in this field, and differentiating yourself from the rest of the competition is pretty easy to do if you stick to a meaningful path of self-improvement.

Paying $50k for a college degree in computer science is ludicrous. Most of the people here who are telling you to do so are probably more interested in retaining the value of their own investment, by influencing the next generation to make the same decision. If there's value in having a college degree - your employer will reimburse you for tuition expenses. If they refuse to do so, it's a tacit admission that the value it adds to your output is worthless to them.

I'm what you would call a 'front-end' engineer. Senior front-end developer is my current title, though I'm quite capable of full-stack development. I make $103,000 annually and do not have a college degree. There has never been a job that denied me due to lack of education because I've been able to prove myself and my abilities. Going to college is a great resume boost, but has had no bearing on my career thus far.

(source: Front-end dev for 5+ years)

I've been on a lot of interviews in the past couple years and maybe 1 out of 5 even think to question why I don't have an "education" section on my resume or what my schooling is (none). No one cares. Being able to do the job/get through a technical interview/show decent code samples is ridiculously more important than a degree.
Yes.

I do think which school you can go to affects the outcome. I understand that application season is over, but hopefully you've applied to many need-blind schools that are in the top-50 where you wouldn't have to take out any loans.

It's also a great way to seed your life-long personal network in a different way. A lot of your college buddies will go onto diverse fields, and together you will spot many connections between them and pursue those. This can be very lucrative as well.

College, besides the learning, teaches you things you didn't know you needed to understand. It often changes you as a person - It's not only that you now know more answers, it affects what types of questions you ask.

Let me tell you

It's all a fad

The more "high level", the more a fad it is. Nobody is going to remember coffeescript in 10 years, maybe 5.

"Front end development"? Let me tell you something, I bough a book about HTML in 2007. This book is basically worthless today. Sure, for someone who has never studied it is it useful. But things change. How much was IE6 knowledge 3 years ago? How much it is today?

College won't teach you about the latest features of Windows 8, or Mac OS. It will teach you how and why things happen the way they happen.

And that's "timeless". Considering most of it was invented in the 70s and still apply.

Enjoy four years of friends, learning, and not having to work every day. You never know where it will take you, if you decide in two years you hate it you can still get a development job.

Why are you so eager to jump into the 9-5?

Lucrative? I don't know, and I don't even care.

Will you be better at your job? Yes. Because you'll learn abstract concepts that you can apply to learn 'new things' more quickly and understand them more deeply.

If it's about the money you need to pay for college: Would you be willing to study abroad? I'm studying Computer Science in Germany and pay about 250€ ($350) per semester (incl. access to public transportation but of course without rent, food, etc).

The 4 years of college (3 here in the uk) will open doors for you that may not open otherwise.

You will be able to explore opportunities (should you want to) that you wont be able to explore without a degree. Thats just the truth right now.

So if you are sure you are okay with the limitations, then eschew college.

But realise that 3 years is a relatively short amount of time. It will pass before you know it and would do your future no harm.

Plus you can work in college. I do/did it.