Ask HN: Is it worth continuing my computer science degree?

17 points by speedyapoc ↗ HN
Hey HN,

Pardon me if this has been asked before but I am at a sort of crossroads in my life and would like some outside feedback.

I'm a (going into) 2nd year university student majoring in computer science. For the last 4 and a half years, I've self taught myself iOS development, web development, and a wide variety of other computer related topics. For over 3 years, I've been doing iOS consulting for multiple international companies and startups and have racked up a pretty sizeable portfolio for my age.

Recently I was choosing my courses for second year and became discouraged at the electives required to continue in the computer science program. I'm forced to take things that don't interest me like psychology, basic marketing, etc. This made me question whether it is even worth spending the money to get a degree when half of the work that I put in won't even be relating to my field.

In my consulting jobs I've worked with and kept up with individuals that have over 15 years of experience in the field with degrees. In addition, I feel like it could almost be better to consult for 3 more years and even land a full time tech job in my field instead of spending time at university. In addition, during these 3 years I could optimize for my specific niche: iOS development. However, I don't know if the jobs that I've worked at so far are because of my experience alone or the fact that I have experience and am "still in school".

Every adult that I talk to (all of whom have degrees) swear by them and say how they're such a great fallback but I'm having a hard time connecting the value, especially in the field of computer science. I suppose for more traditional jobs it would be beneficial but with the boom in startups lately, a degree is seldom necessary.

Essentially, is it worth continuing my degree?

45 comments

[ 2.7 ms ] story [ 89.8 ms ] thread
Sounds like marketing and psychology could prove very useful in the long term. And a CS degree is great to cleanup the hands-on experience you have. So based on what you described, I'd say: yes, continue your degree.
Like it or not, sooner or later you need to interact with "real people" and in that area a bit of psychology and marketing smarts can pay off.
I was in the same spot as you, I was entering my Masters even though I knew exactly what I wanted to do--apps.

For that reason, that whole year of my Masters felt wasted and it strained me a lot, because at the same time I tried to launch my first startup.

I think doing my Bachelors was definitely worth it, you should do your degree as long as you're not entirely sure what you're really good at.

However, you seem like you know what you want to do and at the vast cost of a degree in the U.S., if I were you, I would completely dive into consulting, apps and startups.

Good luck!

> but with the boom in startups lately

That will not always be the case, and when the market starts cooling off, you will want as many options as you can find. A degree may feel worthless right now, but it provides you with a well-rounded skill set and credentials that bigger companies with actual HR departments will value. Developers won't always be the ones who filter through the resumes.

> Every adult that I talk to (all of whom have degrees) swear by them and say how they're such a great fallback but I'm having a hard time connecting the value...

If the consensus of more experienced people is that you should complete your degree you're probably going to be better off listening to them.

Another two or three years might seem like a long amount of time when you're 20ish but the difference between having one vs not having one can very likely have an impact for the rest of your life.

Thousands of Americans are debt slaves for the rest of their life because they followed the consensus of "good" advice.

The comp sci field may be the exception but you still have to be careful taking advice from people who purchased their degree for a fraction of the purchasing power required for 2014 degrees.

Depends on what you do. I kept my grades up in high school, got enough scholarships to more than cover my tuition, and got my degree debt-free. You have to play it smart. Maybe don't go the most expensive school.
> Thousands of Americans are debt slaves for the rest of their life because they followed the consensus of "good" advice.

The OP was asking for advice regarding a CS degree - high pay and low unemployment probably means there aren't many people in this field that could be considered "debt slaves" - regardless of the increasing cost of a degree.

While I agree higher education costs have gone up far more than they should have over the last decade or two generally speaking a degree is still worth it:

- "Despite these worrisome trends, going to college relative to not going still yields an annual rate of return of 15%" [1]

- "millennial workers with only a high school education earned 61.5% of the annual income of similarly aged adults with a bachelor's degree" [2]

- "workers with a bachelor's degree still earn about 75% more than high school grads, and over a lifetime, that payoff is huge" [3]

[1] http://blogs.wsj.com/washwire/2014/07/10/the-grim-reason-col...

[2] http://www.latimes.com/business/la-fi-mo-earnings-college-pr...

[3] http://money.cnn.com/2014/06/24/news/economy/college-worth-i...

How much is an in-state CS degree from schools like UIUC, Berkeley, or any of the public universities from which so many successful programmers have come from? Factor in Pell grants and such, and it is not so bad.

I did IT work during the day, and took public college classes at night and on the weekends, and took on no debt at all.

People should look at the numbers, possible salaries, debt and all of that. If you're thinking vocationally and as an investment, an English degree from Sarah Lawrence might not be worth it, depending on your financial situation. I myself would rather have some debt and be working through the next recession or two, then to have no diploma, no debt, and not be working through the next recession or two. If he can't get a job during the next recession, he is going to go into debt, and not have a diploma.

Ancedote: A college grad made more money with his guitar playing in bars than with his english degree.

If you are generating good income with your skills then you have already achieved the goal.

Firstly, it sounds like you have a very solid grounding in programming. Why not expand your mind? Take some economics, law or statistics subjects, and you may find a personal interest and niche at the intersection of the two fields. The classical reason that they force kids to do this is so that you don't develop narrowly as an individual. If you don't want to do psychology, do some research into other fields, find one you want to learn about, and talk to the professors about swapping psych for one of them. Remember - programmers in IT are a dime a dozen. Programmers in other fields are rarer than hen's teeth.

Secondly, as an employer a degree serves as a signal that a student is ready and willing to accept short-term pain in return for long-term gain. Compared to other graduates who have a degree, you'll always be second-best.

Lastly, don't be fooled by the perception that iOS will be around forever. A degree will give you a foundation that you can fall back on.

You've already made the commitment of the first year - stick it out. Talk to the professors about accelerating your course if you're doing incredibly well and finding it boring.

> programmers in IT are a dime a dozen. Programmers in other fields are rarer than hen's teeth.

this is absolutely the best point made in this discussion so far.

> with the boom in startups lately, a degree is seldom necessary

This is true. What do you do when the boom ends though? Companies went through layoffs in 2008, in 2000-2001, in the early 1990s etc. What will you do once you're married with kids, laid off and then any job opening available needs a college diploma. Yes, you're OK for the next year. Will you survive the next downturn though, and the one after that?

> In addition, during these 3 years I could optimize for my specific niche: iOS development

Specialization is good, but you never know what might happen. Whether or not it's likely, it's conceivable Android could kill off most iOS jobs in a few years. At that point a broad underpinning of CS theory and a diploma are helpful. Will you be doing iOS development 20 years from now? It's hard to say.

> kept up with individuals that have over 15 years of experience in the field with degrees

Some people get degrees without ever seeming to have learned much. It's not something that should affect your decision one way or the other. When time gets tough and Craigslist job postings start saying "BSCS required", an e-mail from you saying that you have "kept up with individuals that have over 15 years of experience in the field with degrees" is not going to mean much. They'll be knee-deep in resumes of people who have a BSCS. Yours will go right to the waste bin, in many cases.

> I'm forced to take things that don't interest me like psychology...half of the work that I put in won't even be relating to my field

Most of the pioneers of computer science did and do have an interest in human psychology - Marvin Minsky, Noam Chomsky, John McCarthy, Alan Turing and on and on. I'm not sure how you came to the conclusion, two years into a CS program and without knowing what the psychology course was teaching, that it was irrelevant to computer science.

> Every adult that I talk to (all of whom have degrees) swear by them and say how they're such a great fallback but I'm having a hard time connecting the value, especially in the field of computer science.

When the economy goes south, it is better to have a degree than not to. Also, while theoretically someone can do a program of self study, I've never met anyone without a CS degree who understood pushdown automata, theory of computation and so forth. It is helpful to have an underlying intellectual framework. It is possible to be a code monkey who can put together for loops and if statements in PHP or Objective C and so forth, and make money doing it, but an intellectual framework allows people to do more. I see people self-studying practical things such as learning a programming language, but it's very rare for someone to spend months studying theory of computation, or representation of floating point numbers, or formal mathematical definitions of computational complexity, and so forth. So there are gaps in their knowledge. They can muddle along, but then one day they will have a critical race condition crashing their program. As they never studied mutual exclusion, they will only have a vague idea of what will do. Software in general is famous for mutual exclusion bugs, precisely because so many people who don't know what they're doing can jerry rig for loops and if loops together to get something going, but have no deeper understanding of theory, architecture and so forth.

I think you woefully underestimate how many people are learning CS without being told to. I took Jeff Ullman's automata course on Coursera and so have many, many others. MIT's OCW classes have also been used by people doing entire CS degrees. Back when I was at my previous job I was doing to the same for another degree.

I've heard these arguments before and to be honest, they remind me a lot of when I moved to Taiwan as a young adult. It seemed there were always people telling me how foreigners couldn't learn Chinese "properly" without doing college courses...right up until it started becoming common about five years ago. Now language learning is practically a sport amongst autodidacts.

The credential from a degree is an edge, but in terms of actual education, schooling is hardly the optimal approach.

> When time gets tough and Craigslist job postings start saying "BSCS required", an e-mail from you saying that you have "kept up with individuals that have over 15 years of experience in the field with degrees" is not going to mean much. They'll be knee-deep in resumes of people who have a BSCS. Yours will go right to the waste bin, in many cases.

You're only as good as your last record. Who cares what anyone was doing 15 years ago? The degree you got when you were 22 is the same as the trophy won by the school's quarterback: an old nostalgic story at best. It's not who you are today, and I hope you've done far more interesting things since then. I only look at the past couple of positions a person had on their resume anyway.

Even if HR does operate the way you say, I hope we can all agree it's pretty stupid.

I believe neither Steve Jobs nor Bill Gates received a 4-year college degree. They had some college (Gates had 2 or 3 years at Harvard(?)), but no degree. There is a difference between a trade school, a school that teaches you one specific trade (maybe how to be an electrician (I was), or, in this case programming), and a 4-year college degree. The college degree "broadens" you, not as in fat, but as in understanding and appreciating things outside your specific areas of interest. While many of the non-software courses may seem a waste of time, your knowledge does become wider and you may at some future time find that one of those out-of-major courses actually has some utility and may, help you. I have spent a large portion of my life (in time, effort and money) becoming educated. I have degrees in engineering, biology, and medicine, and I do not regret having any of these degrees. They are all useful and I may actually have too many, but I have been curious all my life and like to learn. Now that I am retired, and after 25 years out of software (mostly on military projects), I have taken up the task of studying, learning, and mastering C++. During this past year I have read Bjarne Stroustrup's "Programming Principles and Practices using C++" (2009), Lippman's "C++ Primer", 5th edition (2013), and Stroustrup's "The C++ Language", 4th edition (2013). That's about 3,000 pages. At this stage, I have achieved the software skills rank of "GrassHopper". Software, as used in the fields of computer science and computer engineering, has progressed over the years. First there was coding, then programming, then computer science, then software engineering. The rate of change is increasing. You are a young person. Your resume' and you reputation are everything and so far you are doing well. You are getting work. But, at some point there will be a job, an opportunity, that will present itself and the applicant MUST have a 4-year college degree. Period! If you do not take the time, while you are young, to get your degree, you will never have a degree. You will miss some opportunity. Every person that you know who has a college degree took the time, expended the effort and money, to "earn" a college degree. You have to make the sacrifice to be able to earn your degree. You are not given a degree. You earn it. As some anecdotal evidence of that, let me describe an event. Everyone knows and respects the Nobel prize winning physicist, the German-born Jew, Albert Einstein. Me, too. But my personal hero is the American-born Jewish mathematician and physicist, Richard P. Feynman. You can learn about Feynman in his biography, "Genius". He was a mathematical genius and a physics genius. He invented the "Feynman diagram". At one point, when he was working on his PhD, one of Feynman's advisers suggested to Hans Bethe, the senior adviser, that they go ahead and award Feynman his PhD. Bethe responded, "Yes, yes, yes! We all know Feynman is a genius. But, ... has he done the work (for his PhD)? So, ... my young, successful, full-stack software engineer, that is the story. The decision is up to you. I recommend the earning the degree, just like everyone else has.
I believe the CS degree is one of the least useful degrees there is. The two things most people get from a degree are the knowledge and the credential.

The material in a CS degree is pretty accessible for self study compared to that of some other majors. No expensive materials are required beyond a $500 computer. Instructors don't generally spend time with you while you are actually programming, so you won't be missing the kind of 1 on 1 feedback a music major would get. Also of critical importance, CS materials tend to be strongly represented in MOOCs. There are already people using Coursera, edX and OCW to complete full degrees (see: http://youtu.be/piSLobJfZ3c).

As far as credentials go, it's a similar story. There are few fields in which the credential matters less than they do in tech jobs. Tons of my friends work at YC companies with either unrelated degrees or none at all. I personally graduated with a Japanese degree and still managed to break into the industry quickly once I started focusing on developing my hard skills. I received interview offers from pretty much every top tech company in the bay area and the degree never came up. I very, very nearly took one of them but instead chose to do a start-up. At this point it's possible some investor would be hesitant about us because we don't CS degrees, but it's also probably likely they'd be interested in our exceptional backgrounds.

One caveat to this is is that without the CS degree you have to have the skills. Also I wouldn't count too much on being an iOS domain expert since specific tech stacks keep changing. You probably want to learn all the things you'd get from a CS degree if you don't have them already.

Unlike a lot of posters here I really don't see anything wrong with not getting the degree. I would strongly suggest that you make a bargain with yourself and save/invest everything you would have spent on college. That will limit your downside and give you the option to stop working and get the degree if you change your mind and/or find your skill-set is no longer in demand. Even if you learn the equivalent of a CS degree on your own, you might find yourself wanting to return and study something like applied math, which pretty much gets you by the credential barrier for any job a CS degree does plus quite a few others.

>The material in a CS degree is pretty accessible for self study

Whether or not it is, I have yet to meet anyone who has done self study who has studied theory of computation, mutual exclusion, and that sort of stuff, month on end, like CS students do. Everyone seems to go straight to what is immediately useful, like the syntax of Objective C and so forth.

Also, the big technological leap allowing this was the Gutenberg printing press, not MOOCs and the like. Theoretically one just needs the textbooks and some other materials to self-study almost any topic. Yet people have still been going to universities for centuries. The movable type printing press was the major innovation for this, MOOCs have been relatively minor in comparison to this thus far, yet people have still gone to universities for the past few centuries.

> Also of critical importance, CS materials tend to be strongly represented in MOOCs

I did not find this to be the case. Some subjects we went into in class that I did not understand or wanted to look into more indepth, I would go online looking at Youtube videos, MOOCs, various materials etc. I was usually disappointed. If I was lucky I would get a poorly shot Youtube video of some professor with a thick foreign accent explaining the subject, often poorly.

>I have yet to meet anyone who has done self study who has studied theory of computation, mutual exclusion, and that sort of stuff, month on end, like CS students do.

Now you have :) Ullman's Automata course was my favorites: https://www.coursera.org/course/automata

I find the MIT OCW superior to MOOCs for multi-course sequences, btw. If you want to do a full degree, use OCW. Coursera/edX auto graders are great for classes with programming assignments, but since there are so many classes from so many schools prereqs are a problem. If you're interested I wrote this comparison of the options late last year: http://logicmason.com/2013/self-directed-programming-and-com...

I'm a 'self-learner' (graduated with a non-CS degree) who went through the Machine Learning course on Coursera, which inspired me to pursue my Master's in Computer Science

You are right about self-learners avoiding heavy academic subjects. The huge problem with self-learning is that I had a moron for a teacher. There's just too many unknown unknowns - I didn't know what I was missing out on.

Oh, and the credential helps too. Immigration departments don't look at Github profiles :)

> Immigration departments don't look at Github profiles :)

That's a fantastic point, and one which has probably been overlooked so far in this thread. Yes, it's entirely possible you'll be able to find a great job/company in your home country, but good luck getting a skilled workers visa in any major country without having 'professional' level qualifications.

>Instructors don't generally spend time with you while you are actually programming, so you won't be missing the kind of 1 on 1 feedback a music major would get.

Really? That wasn't my experience at University at all. Every practical assignment had at least one lab session, where usually both the lecturer of the module, and some more senior students (final year undergrads for 1st/2nd year classes, typically PhD students for 3rd, 4th year classes) to help with implementation. We got feedback on every piece of code we ever wrote.

>Tons of my friends work at YC companies with either unrelated degrees or none at all.

That's great. How many jobs are the YC companies contributing? I'm sure they're (mostly)all amazing places to work, but there's plenty of jobs you wont even be picked up from the pile of CVs if you haven't done a degree. You might not like HR departments, but most companies have them, and it's generally not a good move to alienate them if you don't need to.

>Unlike a lot of posters here I really don't see anything wrong with not getting the degree.

I think it's important that I reply to this point, just so you don't misunderstand me. I don't think there's anything _wrong_ with not getting a degree - I have plenty of friends who either didn't finish or didn't attend University, and many of them are in good jobs (some of them in tech). That said, it's important OP knows what you _do_ get by having a degree - and I'd strongly disagree with your statement about it being one of the least useful degrees.

Yes, really. By "spending time with you while you're actually programming", I meant instructors literally being right by you correcting mistakes and giving feedback in real time. This kind of feedback isn't uncommon in music programs but is very uncommon in engineering programs.

Did your instructors or TAs pair program with you? If so, what school were you at? I would consider it to be a very positive indicator of your program.

>We got feedback on every piece of code we ever wrote.

Sure, but asynchronous feedback on code certainly isn't something that can only be had at a university. Every bit of code I wrote while on the merchant engineering team at Groupon was reviewed by at least two people and the same is true of most my open source contributions.

>How many jobs are the YC companies contributing? I'm sure they're (mostly)all amazing places to work, but there's plenty of jobs you wont even be picked up from the pile of CVs if you haven't done a degree.

That may be true of many places, but at I can claim with certainty that FB and Google will both give interviews and even recruit engineers without CS degrees. It wouldn't surprise me if it were the least appealing jobs that most strictly adhere to credential-based hiring decisions.

FWIW, I used to run an HR effort at a tech start-up before I became an engineer myself, so I'm not completely unfamiliar with how they operate.

> Did your instructors or TAs pair program with you? If so, what school were you at?

Yes! As with many things in life, you get back what you put in. There were plenty of TAs and Lecturers who would happily sit and work through a problem or alternate solution with you. The key factor was them knowing you weren't just trying to avoid doing it yourself.

> Sure, but asynchronous feedback on code certainly isn't something that can only be had at a university.

The point you made originally was alluded to that this sort of thing not happening at Universities. I was simply using my personal experiences to assert that, in my case at least, it did.

For what it's worth, I went to University in Glasgow - the University of Strathclyde.

> That may be true of many places, but at I can claim with certainty that FB and Google will both give interviews and even recruit engineers without CS degrees.

I'm sure they do, and I know the company I work for does as well, but I also know the people who don't have a formally educated background tend to get grilled harder on CS theory than those who do. Having a degree in CS is not a useless thing.

The point here of course, is whether it's right for the OP (:

I do not think that you must get the CS degree. Someone go to the school because they do not have equal specticic niche, and they do not have the ability to taught themselves, a god study habit.But you do. So it is worth contuning your degree. But you need to continue teaching yourself. That is the most important thing.
> Recently I was choosing my courses for second year and became discouraged at the electives required to continue in the computer science program. I'm forced to take things that don't interest me like psychology, basic marketing, etc. This made me question whether it is even worth spending the money to get a degree when half of the work that I put in won't even be relating to my field.

Well now it depends.

Do you want to be a front line programmer your entire life?

Sure, skip taking those courses. Never learn about psychology, after all, what use is knowing how people think, leave that up to someone else. They can figure out what the user's want.

And hey who needs marketing? I mean you may make the best piece of software in the world, but you don't want to actually sell it do you?

Those electives are what make for a well rounded person. Writing good code is hard, but engineering software that serves ends users well is a lot harder and requires a lot more knowledge.

From understanding cultural issues around the world, to basic principles of design. Having a wide background helps a lot.

You're making the assumption that psychology classes teach you how people think, and that marketing classes teach you how to generate sales - they don't. If he was still interested, he could just buy the textbooks, or more likely, get similar resources for free online.
Learning from a textbook about psychology is not the same as having discussions, generating ideas, learning from others and teaching others. Just my opinion though :).
yeah, wasted 4 years doing that. would have been way better spent working.. anywhere
The most interesting course I took in College was comparative studies. read quite a few books I would have never read in a million years. With perspectives from authors about things I wouldn't have thought about. Plus, why aren't you going to college parties and having fun. You can try working hard in your twenties and going to college parties in your forties but that's just awkward.
There's a price at which it's worth it and a price at which it's not. $10k? Sure. $200k? Nope. Now it's a matter of finding that inflection point.

Do you have any scholarships? What percentage of the degree are you paying for and how much of that is being financed?

Might you be able to walk into the president's office and negotiate your tuition? Not the bursar. Speak to a decision maker with vision. If you're as good as you say you are and can prove, with pay stubs, that companies also find you that valuable as a sophomore, you're an asset to your university.

You're the success story they're dying to tell prospects. And you might be willing to make introductions to those companies just in time for the campus career fair. And what about when you become an alumnus? If you're this promising as a sophomore, where will you be in 10 years that they can continue to reap the benefits from? College is a business, too. Sell them on you.

You're concerned that you could better spend the time in university improving your skill in iOS development. How can you leverage those gigs in your curriculum to count toward credits?

As for the courses you're not interested in, don't make the assumption that you are aware of all the things you will ever need to know to be successful in life. But again, there's a price at which that exposure makes sense, and a price at which it doesn't.

(comment deleted)
In order to secure a good job you need a great portfolio that shows that you have the aptitude and talent required for the job.

As long as you are willing to continue learning and keeping pace with technology (iOS could wane or you could lose interest) you should continue to be in demand.

BTW even if you got your degree, you would still need to keep up to date. I've seen too many people who stop learning as soon as they graduate. They end up in management sooner or later.

If you are able to get consulting jobs that you like now, then I doubt that getting the degree is going to get you better jobs or more money.

As you may have realized, any adult older than forty went through college back when it was lots cheaper and students routinely graduated with job offers in hand. You may be wise to discount our advice.

I wouldn't spend fifty or a hundred thousand dollars slogging through a major that you hate, in exchange for a reward that you can't see yet. Take a break for a while and get that full-time iOS developer job that you crave. Work for a while, save every penny you can, and await future developments.

When circumstances change, and iOS developers become as commonplace as Java developers are today, or the economy cools off for a while, or you find yourself jammed against a career ceiling, or you become bored out of your mind in your little cubicle, or you grow a little older and suddenly realize that your dream is to become a computational molecular biologist with an art studio: College will still be there. Believe me, even when you're forty and fifty colleges will still happily take your money. (Although I was once warned that medical schools don't admit students older than thirty-five, so don't wait too long to become a heart surgeon.)

As someone with the opposite experience (I have just a semester of college): if you're even a little bit successful with the iOS development job, it's going to be very hard to go back to school. Once you let it, life happens fast.

I don't regret not going to college, but I'm not happy about how drastically my life choices foreclosed it for me.

Okay, I'll take your word for it. Let me put on a different hat and try a different tack.

---

This is the best time in your life to go to college. It will be harder to go back, later. But you're wasting your limited college time on iOS development, which has nothing to do with college and vice versa.

You will have the rest of your life to build iOS applications, if that's what you want. (In ten years, let alone twenty or thirty, it probably won't be.) But you'll only have a few years of access to a university: It costs a fortune to go, and it's hard to find the time. Make the university count, or take my original advice and get out until you're ready to take it seriously.

You need a real major: That is, one which is real to you. Based on your question, I'm not convinced that CS is it. I count three mentions of iOS in your question, and zero mentions of such things as compiler theory, concurrent operating systems, cryptography, programmable logic, deep-UV photolithography, or computer vision algorithms. If you can't get inspired by anything from that list, or if your so-called CS department doesn't offer such subjects, study something else.

(Just because you like programming doesn't mean you're supposed to like CS. CS is to programming as physiology is to playing football, and you can love weight training, passing, and tackling without necessarily loving vesicular transport and the troponin-tropomyosin complex.)

I'm a physicist so I tend to recommend sciences - physics, chemistry, biology, geology, astronomy, meteorology - or mathematics, or engineering. But I know wonderful programmers who studied classical music, medieval Icelandic, and Renaissance essays. (And art, architecture, and design, of course, but that goes without saying.) Steve Jobs, legendarily, only liked one college course: Calligraphy. It doesn't matter what you study. Find something more challenging, more interesting, or more awesome.

Labs. You'll never see them again once you graduate. Take every lab course you can stomach.

It saddens me to hear complaints about electives. Elective courses are beautiful. The best of them are professionally-guided tours of other fields, custom-designed to showcase the good parts. Ask around, find out who the best teachers are, and take whatever they offer.

I'm 24 & had to make a similar decision to you. I had a full-time job offer in a startup when I was 19, 2 years through my CS degree. I decided to stop university & work.

I rarely think about going back, my work experience & portfolio of actually building products has entirely outweighed the "piece of paper". I'm in a SF startup now, on a very good salary for my age & I have years of experience now. It has never been a deciding-factor in landing jobs.

That said, if you want to work at the big corporates (Google, Apple etc etc), I would imagine this is where you would need it. Also, if you are not from the US, having a degree is pretty much essential to getting a work visa.

Devs are in such demand, particularly in SF/The Valley, that I truly believe a degree would always be overlooked for actual experience. As other posters mentioned, there are CS degrees on Coursera etc now that you could still continue to study for free in your spare time.

How long before you are completely, utterly outsourceable?

I don't know why you think business and marketing are useless. I'm a programmer, and had more than one conversation today on how to market our product. Most technical decisions depend on business decisions. I don't make the business ones, but I have to know when the business folks are missing something (it is more common for tech types to know business than vice versa) and inform them.

I need linear algebra. I need statistics. I need physics. I need algorithms and optimizations. I need to understand DCF. It goes on and on. I'm taking time out tonight from reading a pretty heavy math book to answer this. Learning will never, ever stop.

All of that must be caveated by the quality of your school. Some schools will set you up to be able to do anything you want in the field for the next several decades. A bad one, well, good luck. I wouldn't waste the money if you are at the latter.

If you've been able to keep up with others solely with the know-how you've picked up on your own in terms of software development, then great; my advice: take as many non-CS classes as possible. After you graduate, you'll spend all of your time in CS - constantly learning. But you'll rarely get a chance to learn anything else. College is where you do it.

Really, I see college as a way to learn how to learn. You've done that with CS, it seems. Now learn how to learn in other areas. You'll probably never get another chance.

During college I hated having to take any non CS class. In hindsight, I'm really glad I had to.

How can you be interested in consulting and not psychology?
I believe that my CS degree was worthless to me. I learnt nothing. Everything I know is self-taught, either pre-university or post-university. I kid you not.

However, and here is the kicker; My degree is NOT worthless to the multiple employers I have had. Of course it was worthless in reality, but those letters after my name helped.

Stupid, but a fact of life.

I recommend you finish the degree, but do the stuff you love alongside. To be honest, the fact that you are enjoying your programming gigs is a great thing.

Going to university is similar to going to school, except nobody bugs you anymore about doing work. You have to play smart within the system, whilst abusing it to your own benefit within the confines of the rules that you can manage to bend without breaking them. Know your Rubicon.

This. I can't tell you how often the barrier of not having a degree is an issue, even in places like Silicon Valley where supposedly skills matter more (yet majority of postings including for a large number of startups requires a degree).

If you have a solid portoflio, solid work experience, etc... this might not be an issue down the road but it can be difficult just making that first step. Unlike Junto, I didn't get a degree. I dropped out. I regret not doing something about it sooner. Although things did work out in the end, having that degree would have been much easier even if the courses and everything else turned out to be useless relative to what you do.

Go to school. Work on projects and learn on the side. Make connections while you're still in college.

Firstly, what's you financial situation? Are you paying for college, do you have a scholarship, etc.?

I think anyone can make it without a degree given sufficient motivation. I'm doing a degree because I recognize I don't have the motivation to teach myself certain areas of "hard" math, statistics, and theoretical CS. Yet I recognize that these topics will be useful. All of these topics can be learned through MOOCs/MIT OCW today (given sufficient motivation).

An alternative you could consider is to try transferring to a top CS school like MIT/Berkeley/CMU/Stanford/UIUC, or to another all-around top school. You may find that you'll be seriously challenged and stretched at those schools (or maybe not). This depends on your financial situation, though.

I would finish it. You'll be pushed to do courses like analysis of algorithms and operating systems, very tough and important topics you might not cover otherwise on your own.

While these may seem disconnected, the fact is you will build much more intelligence here than continuing to make (likely trivial, sorry) iOS and web apps. Basically with a proper CS education you will learn the fundamental skills needed to adapt to new technologies, rather than being a "trade worker" of the tech industry whose experience and knowledge is confined to languages and frameworks that can fall out of style at any point.