Hacker News new | comments | ask | show | jobs | submit login
Ask HN: Do I need a CS degree or should I stay with my job?
29 points by shanelja on Jan 23, 2013 | hide | past | web | favorite | 57 comments
I've been programming for 4 years now, I started when I was 15 and have kept it through, 9 months ago I got my first job in the industry, building PHP web applications for small businesses, 2 months ago, I left that job for a larger agency.

Since I began programming I have taught myself PHP (and everything which comes along with that, MySql, Javascript (&JQuery), CSS, HTML), x86 asm, Scheme and have a good grasp of most aspects of computer science.

I have recently been feeling like my career is reaching it's peak even at this early stage, I feel as though there is quite a low ceiling for how far I could possibly take it in my current situation, I dream of silicone valley and the lifestyle which comes as a perk along with that, but those companies only seem to hire people with degrees.

My new job pays me a remarkable sum for someone of my age with no formal qualifications, but it is only a fraction of what my peers in the industry are earning.

My question is this, should I go to university or would I be better applying myself to the current state of my career and trying to improve it and ignoring my doubts?

Thanks for all the replies, I expected this to disappear as white noise & didn't expect to hit the front page, I will try to reply to everyone I can

P.S. To alleviate some confusion, this would be for the summer of next year, I'm not talking about leaving my job this very minute

I make more than the average US programmer, don't have a degree, and don't have any student loans to pay off.

Most places that "require" a CS degree don't actually, and I wouldn't want to work for any company that is so stuck up in BS bureaucratic policy that it can't evaluate an employee on their merits. I find the lack of degree makes a good filter for avoiding companies with BS internal policies that would be frustrating to deal with on a daily basis. I want to work with humans who take reality into consideration not just arbitrary rules.

With that said, lacking a degree can hamper you in the beginning because you need some way to show that you actually know enough to be worth hiring. I solved that problem by simply working for myself in the beginning. As you've already got a job I say screw the degree, and put the saved tuition fees towards doing something amazing with your life.

It's amazing how much more value your work history can bring than a degree. As a high-school dropout (due to boredom from not being stimulated and learning anything new) it concerned me quite a bit that I wasn't getting the same opportunities or salary as others in my field. I now know that very few places actually care about that degree - and those that do are shooting themselves in the foot imho. As for salary - I had to tell quite a few of my friends that they were getting severely underpaid when I thought I would be the one in that position.

I have to say, I'm pretty happy to see others who have gone this route and lived to tell about it. My family was fairly poor, so we moved around a lot. Education was not really on the top of the list in terms of priorities; my last student record counted 16 different elementary, secondary schools that I had attended.

As a getaway from my personal issues, I would write code and design on local library's or friend's computers. Eventually I was able to buy my own computer and – to make a long story short – was hired full time as a web developer. This wasn't the plan, mind you. I didn't complete highschool, but because of my 3 years of experience I qualified for college. I ended up making the choice of not going and continuing my full time employment. It didn't make sense to me to leave my job, then go to school only to later try and get a job that I already had. Since I was passionate about my work, learning and evolving my knowledge was never an issue.

I don't think this approach works for everyone, mind you. You have to have a sincere love for the work. That being said, college gives you access to like-minded peers, social engagements and a level of submersion that I think is helpful for most people.

Today I own a successful web & digital company, so I have the privilege of being able to look at a resume and not judge the applicant by the CS degree, but more on work experience and passion.

As I stated on another comment, one of the main barriers to entry for me is the money to pay tuition while I am studying, with no guaranteed return, the question then is where to go from here, I don't want to let myself stagnate academically, so I want to at least do something to self improve and I feel that learning yet another language can only teach me so much, I've been toying with the though of an ICS course or something similar but none of the courses they offer are really any good.

(Disclaimer: I have already tried the Coursera courses and thought they were great but didn't really enjoy the format, I would however recommend the Dan Boneh Cryptography class, it taught me more than any other!)

I wish the world was that simple.

It really depend where you are. Here in France companies wont even look at you if you don't have 3 years of experience. It's ridiculous.

And the salary it not even competitive.

>Here in France companies wont even look at you if you don't have 3 years of experience. It's ridiculous.

This is true in most places. I would suggest looking at things you've done outside of professional work that would differentiate you and show you really enjoy what you're applying to do.

It used to be getting a degree would satisfy this. Now the majority of people have degrees so you should look to do other things to differentiate you.

I did found a job in a startup.

I am actually their first employee but again the employee valuation is way different from the offers I got in Cali when I was living there.

There are a number of concerns here. You probably shouldn't go to college for signalling, you'll bore yourself to death and do poorly (unless you have extremely good discipline).

On the other hand, going to college is likely to be both intellectually stimulating and fun. That would appeal to most people and it's not really an opportunity that comes back. Depending on circumstances, you might well be able to keep up freelance programming for money while you're in college which will take away financial concerns and keep you in practice.

Then there's the reliability of your self assessment. Quite frankly, agency web dev in PHP is not a great predictor of actual programming prowess - you can get very, very far in that business using Google and copy-paste. The way you lump ASM in there adds a good WTF-quality to the list, and, honestly, how do you know that you have a "good grasp of most aspects of computer science", never mind, how good is good and how many are most? Think hard about this, and especially about think about unknown unknowns here. When I first "got" QuickSort and understood why trees usually have log n characteristics, I figured myself pretty well sorted. I've since realised just how little of the tip of the iceberg I've actually ever even scratched.

College will, if nothing else, help you draw an outline of the iceberg, so you can better assess how much of it you've actually seen.

The way I read your post, you might well be in a sweet spot for just coding the shit out of everything for the next five years and doing better than your college peers. Most college grads can't actually code well. Or you might be the kind of guy who wakes up one day and realise you don't have ten years of experience, but one year of experience ten times over.

Amen. I do a lot of recruiting and one of the signs that a candidate is high quality is when they know what they don't know.

It's rare for someone without a degree to get the kinds of jobs that exposes them to the kinds of engineering challenges that makes for "10 years experience" as opposed to "1 year experience 10 times over". I'm not saying it doesn't happen -- just that in my experience, it's rare.

Also, having a college degree shows a certain minimum ability to start something and finish it. The more challenging that degree program was, the more important that factor is. A 'degree' from DeVry or Phoenix doesn't count (I'd actually talk to the guy without a degree first...).

Most people have a misconception of a CS degree as if it teaches you how to code. Computer Science is neither about computers or about science. It's a math and a logic degree. With a CS degree you should be able to code, conjure algorithms and all that jazz out of anything. It teaches you how to be more efficient, write better algorithms, use your hardware to its full potential and etc.

Look at the opportunity cost then make a decision. If I were in your shoes... if I'm making more than $90k AND =<25, then I wouldn't go for a degree. However, education never hurts right?

tl;dr: CS teaches you how to be a better problem solver. You probably know more about "programming" and "languages" than most CS majors.

That was what I was originally thinking, in full disclosure, I currently make around $35,000, which for a 19 year old is a fantastic wage, at least, compared to what I have made in the past.

I have been talking to a close friend of mine who attended UCLAN and with the exception of some of the more complicated algebra and (quite a lot of) the compiler unit, I have the majority of the first and second years covered already, but the problem really is the piece of people to prove this, will the Googles and the Microsofts of this world even consider my application with the absence of a degree on there?

When I first started (without my degree) I was making $40k. At six months I was making $50k. A year after that I was making $80k. At that point I felt like I had basically plateaued without the degree. You certainly don't need one to do well in this field though.

As I mentioned in my other post, you'll get more value out of a degree if you study something else _in addition to_ computer science. If you're in CS courses and you feel like it's easy (The more introductory courses will be very easy; you may be able to test out) it'll feel like a waste of time. It is up to you what kind of value you want to get out of it.

In terms of value, I intend to improve my knowledge across every area of my degree units an order of magnitude and also to broaden my horizons, I would love to learn more about the hardware side too, being an all software person, it can sometimes be quite a mystical subject.

I agree about not needing the degree to do well, I would however propose that from stories I have heard so far it does seem to reduce the difficulty.

You don't need a piece of paper to prove this, you need to apply what you know to projects either personal or professional. Preferably professional. Get involved in open source, join a programming community, look for mentors, etc.

A degree can be a good confirmation that you can do what you say you can and you can be relatively sure that someone holding a degree will have a more thorough understanding of things and is capable of functioning independently (usually).

However, there's plenty of people with a CS degree I'd never consider working with and if a company was to hire me based solely on my CS degree I wouldn't consider working for them. There's more to any single developer than a degree they hold, or don't.

If you don't know whether or not you should go to college, then you probably shouldn't go to college. If you're already on a path, at the age of 19, where you've been hired at multiple places programming and you're capable of teaching yourself what you need, why would you suddenly stunt that organic growth?

The barrier to getting a job at an early age is much less often whether you have a degree and much more often whether you have experience. There are lots of people with the former and fewer with the latter.

Unless there's something you specifically want to go to college and learn, and it doesn't sound like there is, you should continue along your path.

I'm a programmer and I have no degree and make more than most of my friends with degrees. If your goal is to make more money I suggest figuring out how much you'd like to make and which companies you'd like to work for. Then study the jobs they offer and the skills required. Then study on your own and find ways to apply what you learn to your current work. That's worked for me.

I started as a web designer, eventually became a an actuarial systems developer, and then a data analyst/developer for one of the larget web sites in the world. A degree hasn't limited me at all.

Having said that, I've struggled with this question my whole life and now at age 30 I'm in school and pursuing a degree. I finally realized I don't need one, but I really want one. Just because its always been something I want. Why? I can't deny that I apply a certain amount of credibility to a degree and I want that.

Edit: typos

This. The last line epitomizes how I feel, the degree provides a certain level of credibility to my career, it is a form of validation in a way.

As a recruiter who tries to find candidates who don't suck, your lack of a degree would not be factor in my decision on whether or not to approach you (if it looks like you don't suck).

One thing that really helps a candidates stand out is something that supplements their resume, such as a well written blog. Being able to show sucess in your career and an ability to articulate what you know is a pretty killer combo.

Thanks for the reply, this is probably the kind of contact I was looking for when I posted this, the question is, without a degree (and to be perfectly honest, no real interest in open source) what do I do to make myself stand out, to say hey, maybe we could have a chat over some coffee? to the recruiters at these companies?

Here's an example of something I've done (I actually use this my personal budgeting): http://pocketloot.com

While I don't participate in other people's projects much I have a BUNCH of projects I've done for myself on github. https://github.com/jcbozonier

I was in a very similar situation about 5 years ago. I was making a good salary as a web developer but didn't have a degree, with all the pitfalls that this entails.

I went back to school and I double majored in CS and mathematics and took the hardest courses I could. Here's the rub, if you want to go back because you feel like you have some gaps in your knowledge and want to fill them in, college can be great for that. I specifically felt weak in math before I went, so I studied it specifically.

You'll be at a big advantage in a lot of the CS classes because many of your peers are starting with no programming experience, so the more programming heavy ones will probably be comparatively easy for you. So focus on more theoretical stuff if you go.

Also, keep costs in mind. While you're at school your good salary means the opportunity cost is fairly steep. If tuition is high too it's very expensive. I went to an in-state school, though I'm fortunate that the local school has a strong program.

In terms of the opportunities it provides, my previous experience as a web developer meant that I got more interest in that arena than in other areas, but the difference was stark. Maybe the economy changed while I was studying, but it went from sending out a ton of resumes and getting a small handful of nibbles to 'if I send out a resume to a job I'm even reasonably qualified for, I'll get an interview.' It was that stark.

Money wise (at least short term) I'm still behind because of the opportunity cost, but I learned a lot and can pick a better quality job, so for me it was worth it. It's a personal decision though. In your case you can send your resume to Silicon Valley first and see if you get any bites, if that's what is more important to you.

The money is one of the main factors why I'm worried about attending university, in the short term I will go from a recently developed comfortable life style (I was homeless a year ago) to struggling again and after working this hard I am reluctant to relinquish the life I am now trying to enjoy!

I agree with the Math, I have been practicing Oxford CS & Maths entrance exams (I don't intend to go to an institute as "high" as Oxford, but I set the bar for myself quite high) and have been routinely scoring much better for the logical and riddle based exercises than the Maths and have recently been practicing my logarithms and linear algebra where I feel I am lacking (or at least weaker than my other areas)

If you want to be a great* developer, you can skip the degree if you want to but _not_ the work it represents. The higher up the chain you go, the more "pattern" problems you will run into; What I mean by that is that you will encounter more and more problems where someone who "did the work" will recognize that "Oh! That's just a semaphore." or "Oh! That's just a b-tree." where someone who hasn't will think they have to invent something new to handle it or pay someone a million dollars to implement it for them. I've seen this happen to non-CS bosses of mine several times (and yes, I tried to warn them and explain) with disastrous results for their careers.

So you have to put the work in either way. If you're going to put the work and time in any way, why not get the degree? That's not a rhetorical question..there may be several valid answers to that for you, including but not limited to money, time constraints, etc.

*You can be an "okay" developer and not do any of this...you might even end up happier in the long run...that's something you have to decide for yourself.

Since this question seems to come up all the time, I have crafted a stock answer in the idiom of some books I really enjoyed in my youth:

Choose Your Own Adventure: Should I get a CS Degree? Do you want to be a great developer? Yes! (Page 3) | Not Really. (Page 2)

(Page 2) That’s totally cool, actually. If you were going to force me to wager on who becomes a success or changes the world more, I would put my money on an “okay” developer with a strong business sense, basic understanding of Minimalist/Gestalt design principles, or thorough understanding of a problem domain where technology has not been fully brought to bear over a purebred “great” developer any day. The great thing about choosing this route is that you can always decide later that you want to go deeper down the rabbit hole and learn more if and when you need to. My one nugget of sage advice if you choose this path is this; Be very, very cautious of not investing too much effort in solving “big” problems without first trying to do some research about who has tackled a similar problem before and in what way. You probably have some friends who went and got CS degrees; Buy them lunch (much cheaper than getting a CS degree), explain what you’re working through and ask them if it sounds similar to any data structures or patterns that they know of. An ounce of humility and patience here can literally save your product/career. You win! THE END!

(Page 3) OK Then: Here is something you need to hear. Despite what all the “look at me, I’m a successful developer and I have no CS degree” reinforcement responses that inevitably pop up on these threads might lead you to believe, you cannot skip doing the work of understanding the fundamental and counter-intuitive principles and patterns that (most good) CS curricula impart and be a great developer. Doesn’t happen. Sorry.

However, despite what all the “You _need_ a CS degree – I got one and I know you could never be a good developer without one” responses (that also inevitably pop up on these threads) might lead you to believe, a CS degree is not the _only_ way to learn these things. It is _a_ way…and you might even say a pretty darn good and efficient way…but you can do it on your own if you are motivated enough.

That leaves us with the question below: How do you want to do the work? On My Own! (Page 4) | At A University! (Page 5)

(Page 4) Cool. I guess I’d recommend googling Data Structures and Algorithm Analysis as starting-off points…if you wanted to read (and understand even half of) Knuth’s books, you could most likely put any CS Bachelor to shame. Have at it. GO TO PAGE 6!

(Page 5) Cool. The one obvious advantage of this path is that they give you a little totem at the end that says you did the work. That little totem may be worth more or less depending on who is looking at it and their general worldview – but no one can ever take it away or deny that you have it. The other obvious advantage is that it puts you in the general vicinity of other people who were willing to do the work. Maybe you meet some of them and end up doing some things together? I don’t know. The obvious disadvantage is that doing this costs money. Don’t do too many drugs, join a couple clubs (but not a frat/sorority) and savor the concept that for 4(-ish?) years, your entire environment is focused on your personal intellectual enrichment – this will never, ever happen to you again in your whole life. Don’t be too smug when you finish, though…you have about 5-7 more years of hard work ahead of you before you are worth a real damn to anyone but your mother (but at least they will pay you)…so don’t break your arm patting yourself on the back. If you’re lucky enough to graduate during one of the bubbles, you can get hired quickly at a good rate..but save your money, because bubbles don’t last forever. If you graduate during an “offshoring trough” take a job in a niche industry or do tech support for a while, but don’t panic – the next bubble will be coming in 2-3 years…the system just has to flush out all the “Look at me! I’m a growth-hacker/new-media-guru” dead weight they hired during the last bubble. Learn at least one new “technical” thing on your own every year (just make sure it’s a real thing you can use to solve problems and not some doucheword like “agile”) but spend more time with your friends (in real places, not some MMOG). Always be the person who buys the first round of shots/beers when you meet new people – you will either get one back in return and a new friend, or you will learn quickly who is not worth keeping around…either way, you win. THE END!

(Page 6) If I am going to hire you, you better believe I will ask you what you did instead of getting that degree to learn the stuff you need to learn so that you aren’t spending my team’s time and money trying to solve problems that were solved 30 years ago in a much better way than you ever could...(No, child, you are not more clever than Dijkstra)…and if you think that me daring to ask you that is sufficient cause for you to terminate the interview process, then you have done my work for me. On the other hand, don’t let me give you a haircut, either – and I will try to; I put “CS Degree Required” on my job postings because I don’t want every bubble-jumper who spent an hour watching a Coursera video wasting my time. I want you to give me your resume, but I also want you to stop and think for a second about whether or not you’ve really done the “equivalent work” to mature as a developer. You are different from the school of fish who just aren’t “finishers” – but you are swimming in the same pond, so make sure I know the difference between you and them…and if I can’t tell, then I really do suck and you just saved yourself 6-7 months of working for a place where you don’t want to be anyhow and you win. THE END!

I'm a senior in college right now. Don't do it on a whim. You're already in a great situation. Getting a degree won't change too much if you've already got the relevant experience. Remember that passion and drive (as corny as this sounds) are worth much more than the piece of paper itself [0].

Yes, there's a certain amount of credibility to go with the degree. Yes, it might help you get a better job. If you really do feel like you've hit a ceiling, then you might just want to get that CS degree.

I think colleges can be great [1]. Joel also gives some excellent advice to CS majors who actually want to program [2] (one of the great misconceptions about CS is that it's closely related to development like you're doing).

[0] Ironically it's college that gave me that drive.

[1] http://recoding.blogspot.com/2013/01/college-heck-yes.html

[2] http://www.joelonsoftware.com/articles/CollegeAdvice.html

OK - here's my input. I work at a 95K+ employee company, not much into the CS as more of an IT service provider - we do some coding, but not a lot. When I've been hiring, I would generally, cut at the first pass people who don't have degrees. It is more about the formal education process then the knowledge you get - shows me ambition and commitment.

Also - you've already jumped once in the past year, another red flag.

Put applications in at 10 companies you want to work for, and see if you make it to the interview.

If you want to advance your career, go to college.

You've already said it - you're a good coder, time to become a good developer. If you want to advance, it is not all about the coding.

>When I've been hiring, I would generally, cut at the first pass people who don't have degrees.

I hope this was for junior-level positions, where I can understand that education might make a difference versus people with no experience or education. For jobs beyond the junior level, the number of highly-qualified people in our industry with no degree whatsoever is bigger than you may think.

I'm in a master's program in comp eng. (software focus), but before coming to my program I was basically a wordpress hacker, and not gainfully employed like you. My education was in music.

The cost of my education is and will be nothing short of immense (loans). My classes aren't always amazing. Still, I hadn't anticipated the full value of my choice to come back for that technical degree. You don't just go to school to program or do homework. There's much more to it than that. A huge part of it is networking and peer collaboration. There's that old saying that if you look around and you're the smartest person in the room you're in the wrong place. My professors are incredibly networked and have brought me internship and job leads I couldn't have found on my own.

Also, I'm in comp eng, which is typically more of a hardware degree. I could have done CS, but I ended up in eng for a number of complicated reasons. Still, you mentioned the hardware thing in a comment, and I've found great value in studying some hardware. The ability to talk from high level language through gate level implementations is valuable knowledge.

I think the other thing to consider is the state and future of this industry. Naturally, it's incredibly bright, amongst a sea of industries headed for the garbage can. More and more, the masses will be flocking to where the jobs are going. I think the formal education might be helpful in this sense.

On the flip-side, you seem like you are already on your way. Nobody would not hire a candidate with ten years of real experience due to the lack of degree.

If I were in your shoes, it would come down to cost and networking. Can you finance it well? Will it give you exposure to people and places that will greatly accelerate your career?

Of course, I still believe in liberal arts and creativity, so there's also the whole education for education's sake argument :)

One thing to consider is if you ever want to live abroad.

At 19, I found myself in a somewhat similar position to yourself. I was employed as a software engineer at a fairly large agency. Soon after I found myself holding a senior engineer position at another well-respected company. This was before I had any degree, and by and large, my career trajectory would probably be fairly successful either way.

One thing I had not considered though was living and working abroad. Foreign countries often care about whether or not you have a degree when deciding whether to grant you a residence permit or work visa. This might sound stupid, but it is definitely the case. Even stupider is that it generally doesn't matter what your degree is in, but rather just the level of education.

Living in Sweden and working as a software engineer at a great place now, I sure am glad that I finished my BA in Political Science.

At the minute I would say keep the job.

I'm currently at university in the UK in 2nd year(not one of the top universities) and have actually learned more from other students and the internet than from my actual course so far.

It's getting to the stage where I'm learning things now, but it took a year and a half.

A few people on the course are here only for the bit of paper at the end, they've been programming for years, contributed to open-source projects, but don't have solid experience and so can't get a decent job.

A good job with opportunities for advancement in the future is a great asset to have at the minute, especially if there are more senior developers that will help you out.

If you are worried about missing out on learning some things from university there are some great resources out there, for example: http://ocw.mit.edu/courses/audio-video-courses/#electrical-e...

If you apply yourself to the work, and want to learn, you can do it yourself.

Look around for online courses on computer science, software engineering, algorithms etc.

Another useful topic I would suggest searching is interview practice, there are a lot of websites, and some email lists that will go through common interview questions, data structures, algorithms, design methodologies. The fundamentals that a CS degree will give you that you will learn to build upon.

It depends on the school. A lot of schools' CS curricula are really just a series of classes designed to teach you how to be a reasonably effective programmer; I would avoid these, because it sounds like you are already an effective programmer so you will not gain much. On the other hand, there are schools were CS is challenging and where just being a good programmer won't help -- and someone like you may actually find that the courses are interesting.

You mean you think that I would get a lot more out of a formal qualification if I left my comfort zone, focusing more on the theoretical than the practical?

My programming skills are pretty solid, I'm happy to sit down and write code for hours on end but as for the theory side I am probably below the par in terms of the other students.

> testing > this out

I think you need to look at the situation in a completely different way.

You are 19 years old with 9 months of real experience. Most companies will pass over you right now because of this. If you are getting a great pay check, put the hard time in for a few years and work on side projects to build your brand.

I don't know anyone who will hire someone with only 9 months experience (regardless of age/degree) and your skill set that will provide the perks you are looking for.

Your $35,000 / yr is no where near the peak. If you are average to below average as a developer then getting a degree could help (entry level out of college seems to be ~$80,000 in NYC/SF). If you have some heavy contributions to F/OSS or an extensive github profile, then you have already have a lot of nerd cred to cash in, and getting a degree is not as necessary.

One of my friends is a college dropout. He has been programming for 15+ years now, and is one of the most productive and thoughtful developers I know, earning roughly $150k / yr. The lack of a degree has made it difficult to get past the front door of large companies, but it does not stop him from getting CTO solicitations from well funded startups.

You also frame this question as an all-or-nothing decision. This is simply not true. You can test out the waters by taking a few classes part time while you are working. If you like it, keep going. If you don't like it, figure out what it is you don't like, and adjust your direction.

Good advice. I'd lean toward no college for the OP since as you point out there are still tons of companies that care about results over pedigree, and that thinking probably makes them more enjoyable to work for too.

It's good to have options :)

Don't compromise your career for a piece of paper. I have made the mistake of going back to college when I couldn't really afford it. Initially I rationalized that although taking classes would basically preclude working, in a couple of years I'd have a degree and be able to make a lot more money -- it would be worth it in the long run. The stress of being broke turned out to be much worse than I'd anticipated. Even though I'd been broke before, it was different in the context of having made a commitment not to go out and get paying work.

Add to that the "normal" stress of doing course work and... I wound up dropping out after a year and a half. Two weeks later I was back at work as a programmer. It's been almost ten years since then and I've consistently had recruiters after me the entire time -- I've never had to actively look for work. I've met many other people with similar backstories to mine, and all of them were gainfully employed and relentlessly pursued by recruiters.

In the first 3 years of my career, I was asked about my degree in every interview. I'd say: I'm on hiatus from school due to financial concerns, but I have every intention of finishing my degree as soon as possible. This was a) true and b) enough to satisfy every single interviewer, without exception. Because all interviewers care about is your ability to deliver. As my career progressed, people pretty much stopped asking about my degree. Recently one of my managers told me (after 2 successful years of working together) that he'd never even checked whether or not I had a degree. He'd hired me solely based on my past accomplishments in the industry. I think this is a typical attitude for hiring managers, especially given the current, extremely tight market for programming talent.

School was extremely useful and I still intend to go back and complete my degree some day. But when I do, it will be for my own satisfaction, not because of the impact a degree would have on my career.

I was in the same position as you but replace PHP with Java.

I thought I didn't need a degree but then met people in the industry that I wanted to be like, but I was limited by not having a degree.

It wasn't possible for me to study full time and I didn't really want to as I wanted to continue to have my years of work experience growing, so I signed up for a part time course.

Two years before my degree was finished I was nearly passed over on a job because I didn't have a degree so it really encouraged me to get it finished.

With the last round of job interviews there are many that said I would not be being considered without the degree.

If I were back in that same position again, I'd choose to do it the same way. Your relevant work experience keeps growing but you still get a degree - it's hard work and long hours but I think it was worthwhile.

It is not an either/or choice. You can take one class a semester at night or on weekends if you do not want to go to school full time. At minimum, do a level 2 course on algorithms and data structures. CS is not like pre-med - what you learn you can apply immediately to a great extent. Go to a public college if cost is an issue. Your main problem is not what you don't know, it's what you don't even know that you don't know. If you do not do full time school, slog out one class a semester until you take a level 2 algorithm and data structure course. Some of the classes should be enjoyable, because if none are, you might be in the wrong career.

At your age, your already on a trajectory to surpass the worth of a degree. That is, the cost + opp cost of getting a degree may not be worth it in the long term.

If I were you, I would try to find ways to transition my expertise. Let's face it, most managers can't gauge the abilities of a PHP expert. Many people are great at PHP, but can't cut it on other techs, so why take the hiring risk.

If, however, you could tell me a list of things you've built with Python, Ruby, etc. I would know that your stated "grasp" is probably validated. And so, by widening your expertise, you open yourself to new opportunities and prove your abilities along the way.

If you already have some programming experience, it doesn't make much sense to invest time and resources to go back and get a degree. When I'm interviewing, I prefer people that have a CS degree, as they tend to be better programmers. However, if a candidate has the appropriate knowledge and skill for the job, then they'll be hired. My suggestion would be to go pick up some comp sci books and learn some of the fundamentals on your own, it will increase your skill level without having to go through the expense of college, and it will increase your competitiveness.

I don't have a degree and have been in the industry for 12 years. I did, however, take community college classes that interested me when I had the time. You might want to see if you could keep a full time job and take a class at night at a local community college. If you love it and want more, quit and go to school full time. If you think you can fill in the gaps by taking more classes, then keep going at night. If learning in classes really drives you nuts, then quit and keep going the way you're going.

You seem to be trying to build a path to an end goal without having an end goal. Figure out your end goal and then figure out the best path to get there. A college degree may or may not be part of the path, but nobody can give you their opinion w/o knowing your end goal. You should also consider your location when considering your path (something I did not do for a long time).

Also, I think it is fair to say that most 'job requirements' are more accurately described as 'job guidelines'.

I'm in a semi-similar situation. I'm 23, graduated college a year ago, but I focused on music. I knew some html/css and got a job as a developer and taught myself to code WP themes from scratch. I'm a good graphic designer, but programming interests me more, even though it's harder for me. I recently began using Udacity.com CS101, which is pretty neat. I make the same as you right now, I'm just not sure where to go from here..

I say get the degree only if you want it mostly for reasons other than a career. The ceiling isn't low; there's plenty of jobs for developers without a degree, paying just as much. If you're making $35K now as others here say, you could soon be making $80K+ if you apply yourself. (A hiring manager told me he'd pay $85K for someone 6 months out of high school if they had 6 months home practice developing in IOS for the iPhone.)

Look into an online or distance degree, not necessarily in CS. Most places that have a degree filter will be okay with any degree over no degree. Specifically, try the London International Programmes. http://www.londoninternational.ac.uk/

That said, you should go to university for the intellectual stimulation, not just to get a higher paycheck.

Stay with your job, work harder. Forget the "lifestyle" Save a lot and really live below your means, keep building on your skills and looking for better opportunity. Start investing your savings, some of them in your skills and businesses. If you really play the hand you have now right, you can retire in 15yrs WORKING without ever doing a START UP and getting acquired or going public.

Consider school in the evening and online options through accredited institutions. It may take longer, but you're already employed in the field and it shouldn't hurt your career for a while.

It hurts your career when you want to work on harder problems. As a CS minor, the only way I'll work on certain classes of problems is if I start the company myself.

I'm reading a lot of comments saying that it's not worth it to get a degree. I think that they're wrong, not necessarily because you'll have a hard time finding a job, but because you'll be missing out on a great life experience that will enrich your life and should give you some better tools for analyzing problems. These tools will come not only from CS classes, but also from humanities courses, and interactions with other students.

That said, I wouldn't recommend leaving your job to go to school full time either. Why not take night classes and get that degree over time? I think that, at least right now, in classroom is a superior experience to online, so I would probably go for some place that you can actually sit in a classroom. Even if it's just at a community college to start. I got my BS in Electrical Engineering, and didn't really like my curriculum. So, after I graduated and moved out to Boston, I found out that Tufts University offered classes that residents could audit cheaply. I took a few programming courses to plug holes left by my degree, and a philosophy course with Dan Dennett (because it was Dan Dennett and I had to).

Some of my favorite courses at university were not programming courses. Among my favorite courses were: Free Will, Literature, Nietzsche, Data Structures, Game Development, Differential Equations and Quantum Mechanics. You would miss out on most of those unless you are actively seeking them out.

There are also some soft-skills that come along with education, namely, being able to communicate well. This is one of the more important things when it comes to landing a job, at least for making it past the first level of filters. I've seen some awful cover letters and resumes, it helps a lot to be able to write well, and state things clearly.

Also, I'm not sure what you think the lifestyle of Silicon Valley is like, but for me, it's just a lot of hard work. Don't get me wrong, I love it here, but it's not particularly glamorous. Perhaps the biggest draw, well two biggest draws, would be that, first, you'll never (assuming we don't have another tech bubble burst on us) have trouble finding a job here, if you're a decent programmer. And second, that you'll regularly run into other programmers everywhere. If you're living some place where people look at you funny when you tell them that you build computer programs for a living, and would rather live in a place where people generally have a clue as to what you're talking about, this is a good place for that. Also, you probably won't have trouble finding a job here.

You left after 7 months at your first industry job, and you're talking about leaving your second industry job 2 months later. To be honest, if I saw that on a resume it would be a much bigger concern to me than your educational background.

Oh, sorry, I should have explained, I already refused an offer this year from a university when I took this job due to my financial situation being pretty dire and getting both of the offers at the same time, I wouldn't be planning on starting university until the summer of next year, when I would have been in my current job nearly 2 years.

I should probably have included that information in my post, my apologies.

Do you really want to keep working for others or is it really that you want the money and grandeur of those big brand-name employees? With your skills, perhaps you should think about planning and creating products of your own.

A FEW POINTS: (not yelling, just wish HD had markdown to enhance posts)

    1- If you are not going to become an entrepreneur
       being a programmer is like being a supermodel
    2- If you are going to work for large companies
       degrees are necessary filters
    3- The academic knowledge filter
    4- If you don't get a shot in fields you don't know
       exist there things you are not going to learn on
       your own
    5- If you can be frugal you might be on the right path
    6- Technology moves very quickly
Let's look at these one-by-one.


Depending on what you are doing your career can become far more difficult as you approach an age range between 35 and 50. There definitely is age discrimination in the tech industry. This is particularly true of programming. Companies will never tell you this, but they'd rather hire a 24 year old vs. a 40 year old. Why? There could be many factors here, from the ability (and desire) of a young person to just-about kill themselves working 24/7 to lower pay.

Why might a degree be important here? If you hit the age wall your only options might then be to become an entrepreneur or move into management. You don't need a degree for entrepreneurship. You probably do for management.


Large companies, companies who hire lots of people all the time, almost have no choice but to implement first-level filters. The process doesn't always lend itself to the laborious, time-consuming and personal process you would need to evaluate someone who is self-taught. If your goal is to work from some of these companies, you'll need a degree or you'll need to get in at a lower level and prove your worth from within.


Quick, list sorting algorithms in order of computational efficiency!

I know tons of brilliant people --with and without degrees-- who could not answer that and the myriad of other "are we still in college?" questions in interviews. The fact is that some companies use crap like this to filter you. I call it crap because, to me at least, all is says is that the person might have a good memory and that maybe they spent a week preparing for the interview. It says virtually nothing about anything else. I rather sit down with a candidate, present a problem and actually work together on solving it. Take into account that he or she is probably nervous and just watch how they go about the process.

To me flexibility, process and creativity are far more important. In fact, I want to know how someone goes about dealing with a problem they know absolutely nothing about. For example, I might ask you: "Do you program in Python? No? OK, let's sit down and see how you approach writing a program that generates n numbers in the Fibonacci series in Python.". Of course, this process takes far more time than simply kicking you out the door if you don't have a degree or can't answer a set of puzzles. However, it tells me far more about you as a person and as a professional who is very likely to have to deal with things you know nothing about while working for me.


    Have you worked with state machines?  
    Machine Learning?
    Threaded Interpretive Languages?
    Implemented a small round-robin or preemptive RTOS?

    Why not?
If you are doing run-of-the-mill web development these and other subjects can probably be classified between "never applicable" to "uncommon". Can you learn ML on your own? Sure. Most people don't. Too many other shiny things to focus on. For example, that new language or framework you are seeing posts about with more frequency on HN. The problem is that such subjects do have relevance and applicability in areas one might not always recognize. College will expose you to a wide array of subjects and theory that, even if studied superficially, might become a part of how you think when faced with new challenges or difficult problems. There's value in that. Again, you can learn these things on your own but you kind of have to know they are there as an option in order to reach for them.

That said, some of what you are going to learn in college today will be utterly useless in twenty or thirty years. Example? In the 80's they still taught FORTRAN. OK, maybe not useless today from an academic standpoint but useless in terms of relevance to the vast majority of CS work today.


You are 19 and live in the UK. Can you save £30K per year (or more) if you really and honestly cut out everything you don't need in life? Do this for ten years. Save your money. Invest some of it in low-risk investments (see a professional). Don't get greedy. If you don't screw it up, in ten years you'll have £300K in the bank. That is life-changing money at 29 years of age. Use the ten years to also learn a LOT about money and finances. Don't blow it on stupid shit. If you get to that point you'll be able to decided where YOU want to go and what you want to do. Maybe you take a few years off and jump right into college to get a degree based on what you now understand is your primary interest. You will have options. And no debt.


I alluded to this earlier. Someone who went to school in the 80's was not exposed to any of the myriad of technologies, languages and frameworks that exist today. To some extent, nearly everyone in CS becomes self-taught after a while. You have to. Things move too quickly. Today you can choose from a pile of languages and platforms to work on. Twenty years ago that was not necessarily the case. It can be confusing and exciting at the same time. College will teach you a number of things that are applicable to today and could be nearly useless in ten or twenty years. I don't know, to pull an example out of my hat, you could go to Stanford and study Objective-C and iOS programming. Today this could be a valuable skill if you want to work at Apple or start your own business writing iOS apps. In ten or twenty years? Who knows. What we do know is that it is far likely that you will have to learn new things that aren't even in the horizon today. Most of the theory, discipline and workflows you are going to learn in college today will still be applicable and valuable in twenty years. That's probably where a lot of the value is.


Anyhow, one could go on and do a dance where you jump between both sides of the argument, for and against college. There is no easy answer because nobody knows if the next Facebook or Google is someone inside your 19-year-old brain. What if it isn't? They you are like the vast majority of professionals in this field who will need to work until they retire. Consider that for a moment. This isn't meant to be a downer but rather a trigger for you to think about the various options and permutations life can throw at you. Yes, you could come up with a brilliant idea on Monday, execute on it brilliantly and never look back. Or not. I feel that, to some extent, a degree could be more useful later in life as you might have a need to transition into management. At some level people are simply not going to even consider you for, say, a VP or CTO position without a degree. A degree also opens the path to, perhaps, going for an MBA and shifting your career in another direction as you get older. Again, think supermodel. You are hot today and everyone might want to hire you. What will happen in twenty years? In many ways what choices you make today are really a preparation for the latter part of your life, when options will be reduced.

This, in general, has nothing to do with the question of a degree. Lots of youngsters go get a degree and fail to recognize what life might have in store for them when they get older. They blow money and time right and left. I was one of those youngsters. I bought my first house when I was 21 years old. Paid cash. I owned two race cars, a sailboat and every new piece-of-shit electronic gadget that came out. I was making a lot of money in tech and blowing through it like it was free. I wish someone had kicked me in the head and schooled me about what real-life looked like after the party. Eventually the party was over and I lost everything. Lucky for me, I have entrepreneurship in my DNA. It wasn't long before I launched my own business and bootstrapped myself from nothing --and I do mean "nothing" as in not a penny to my name-- to being a successful business owner. I did waste about ten years of my life. I am proof that a degree isn't an antidote for youthful stupidity. In the end my massive "phase 1" failure taught a lot. Maybe it was good that it happened that way. I don't know.

Choose wisely.

I'm in a similar situation but contemplating a masters. I'm actually leaning towards a masters in computer science rather than software engineering.

Do a degree part time. Don't leave your job.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact