Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Do I have to have a degree to be a developer?
8 points by tanishalfelven on Feb 18, 2015 | hide | past | favorite | 31 comments
Hello! I am a high school student in the USA, and am currently thinking about my future. I've talked to a decent amount of people on these topics, but since they aren't programmers, I feel that they might not have the best answers, as Computer Science is such a vast and varying career field. I'm going to work professionally as a programmer one day, whether that's as a GameDev or any other kind of programmer, and I want to make sure I don't make a bad choice early in my career.

I've been programming for about 4 years now, and in that time I've been able to learn a lot about programming. Obviously not everything, but still a very in depth technical knowledge. I know that if I went to college, a lot of what I know would be repeated (in terms of Computer Science and Game Development), and I wanted to know my other options as to not have to waste time repeating education.

Assuming I had no degree, and I want to make a fair amount of money, here are my main questions:

Is it possible/plausible to get programming jobs based purely off of experience and a well put together portfolio of previous work?

Is college a required step to get well paying jobs as a developer?

Is working indie a smart way to try to make money?

Will I get glossed over because I don't have a degree, even if I have the knowledge?

tl;dr: Do I have to have a degree to get a job? If so, does it have to be a nice college?




My first boss at my current company made 200k+ as a Director, and he didn't have a college degree. But he was really smart, an SQL wizard (relative to a lot of others), had worked at a hedge fund, and was brought in to fix a really big problem he was well suited to fix.

That said, a CS degree makes it a lot easier for someone to justify hiring you for an important job, and important jobs tend to pay the best. A degree is a credential. There are other credentials you can get (certification, reputation, tenure at an important employer, etc.) But that degree will do a lot for you as a young person with no experience to get others to trust you so you can actually earn experience and overcome that particular chicken or the egg problem.

Lack of the degree will close doors that would otherwise be open to you. It will make it harder for you to get the kind of job you want. You don't have to eat a breakfast. But you'll be worse off if you don't, and you have to eat eventually. The same goes for schooling. You'll have to learn eventually. You may as well do it in an environment that pushes you through that learning at a steady pace.

I don't have a CS degree. I have a business degree, and as a programmer, I think I'm a rarity, but that degree, along with the fact that I know Python better than most of my colleagues, made me a safe hire for my employer. That's what employers like. Low-risk, safe hires. You can do without, particularly in this environment where it is hard to hire programmers, but it will make your life a lot easier if you take the college route.


I really like this, and agree with it wholeheartedly. I'm a Junior at a decent school as a design major, even though I like development more.

I tried to take a Comp Sci. course last semester, but I knew everything that was going to be covered--logic, loops, functions, etc. The basics. You'll encounter the same thing at any college with a Comp Sci. degree.

However, you'll also find that there are much more interesting topics that are taught the further you get in. You'll like it more and more as you go, and you'll learn more and more too.

Something to know is that college is more than just learning to program. College is an experience that attempts to make you a more educated person for the rest of your life. The topics covered will go outside your comfort zone, and that's a really good thing. People who are successful at college know that they're getting much, much more than a certification for their job of choice.

Many people will tell you that college sucks, and you don't learn anything. Trying to be kind, that's because they suck at college. They were the kind of people who partied until 12 hours before their final 7 page essay was due, and were so plastered that they pounded out a steaming pile of hot brown stuff. They say college sucks because they didn't do it right, and so they feel like it is inherently a bad deal.

It's not. If you do it right--do all your work before the last minute, be an active participant in your college community (organize hackathons, run a {insert language} club, enter your work in student shows), and actively network with professors, you will succeed. Get your work done as soon as you can, make good progress if you can't finish it in one sitting, and you will still have time to do things like have side projects, be on social networks, and have freinds. Don't settle for anything less than an A.

If you want to talk more about this, feel free to email me: bitnb at subvertising dot org.


That makes sense. I like how you phrased it "low-risk, safe hires."


I have a degree! Well, a political science degree. So in my experience the answer is no.

I would caution you, however, about this:

> I've been programming for about 4 years now, and in that time I've been able to learn a lot about programming. Obviously not everything, but still a very in depth technical knowledge. I know that if I went to college, a lot of what I know would be repeated

To paraphrase Hamlet (which is the kind of thing poli sci majors are required by law to do), "there are more things in a good CS program, tanishalfelven, than are dreamt of in your philosophy."

No matter how much you've learned in four years of self-directed learning, I can almost guarantee there's a lot more stuff you haven't learned. I've been programming since the mid-1980s, and I'm still learning stuff every day. And the stuff that a good CS program would expose you to is precisely the stuff that you don't know you don't know. Fundamental stuff that goes beyond the latest hip framework.

There's been several times in my career where I've found that not having that kind of grounding has made my work harder. Times where I had to sweat and struggle to figure things out that someone with a good CS education could solve just by pulling an algorithm out of their bag of tricks. If I'd learned those things in school, I'd almost certainly be a better -- and better-paid! -- programmer than I am today.

So yeah, you can be a programmer without a CS degree. But if you know you want to be a programmer, and you have a chance to get one from a good school? Grab that chance with both hands.


Is it important where I go? Or can I just try to cross it off the list and soak up the new stuff?

Sorry if I sounded to arrogant. I understand that my mighty 4 years is nothing compared to a lot of people here. Thank you for considerations.


Oh, no worries. You sound like me when I was 18 :-D

As to your question... well, you'd be spending a lot of money. Like, a whole lot of money. So you should be thinking carefully about which school you'd go to no matter what.

The biggest thing, of course, would be the quality of the CS program. Don't assume that just because a school is famous or has a high overall reputation that the CS program specifically is any good. Ask around places like HN for the experiences of alumni. Ask the admissions office if there are local alumni in your area you could talk to. Things like that.

And look beyond the CS program as well; if you're gonna be stuck somewhere for four years, it's important it not be someplace you hate. Do you like the town/city it's in? Do they have extracurricular groups that match your interests? Does the emphasis they put on things like fraternity/sorority life line up with your own interest in such things? Etc.


Of 7 awesome developers on my team, only 2 have a CS degree. And 2 have no college degree at all.

Granted, we don't exactly do bleeding edge research or anything, "just" web applications.

A degree makes it easier to get your foot in the door, especially at larger companies where computers screen resumes for keywords and HR is on a different floor from engineering.

A CS education will make it easier for you to learn and excel at the "hard" parts of software development. Data structures, algorithms, optimization, cryptography, embedded and firmware, OS development. You can learn those things outside school, of course. But even the first couple years of a CS program will teach you a lot about how computers work and how software is architected.

In turn, there's a lot you gain from practical experience that you aren't taught in school.

I'd say if you're happy building web and mobile apps for startups, the degree is strictly optional. If you want to dive deeper into technology, school will give you a head start.


Computer programming is one class of a computer science degree.

Just about everyone else in a computer science program will have been programming for years just like you. A lot of them will be better than you.

It's rarely irrational to graduate from any serious program at the best public university in your state. So, please take time to do the math for yourself. ($80k for a degree is a lot, but so is $150k of annual income for a well situated young man.)

You should also know that the world isn't as meritocratic as a voluntary college abstainer imagines.

Outside of tech startups that want to (under) pay you at this ephemeral moment of demand shock in the software labor market, there is a whole world of people that will hold your lack of formal education against you for a long time to come.

Don't be surprised if you learn something at university. Your grammar is a mess. You could fix that to start.


Sorry I 'shotgunned' comma's.

Thank you for your critical attitude. I enjoy reading from different perspectives and it is helpful when making these life changing decisions.


God no. Are you kidding? The former lead engineer of my YC/Sequoia-backed startup didn't even graduate from high school. But he was very good, very smart, and had years of professional experience as a programmer before he was hired here.

If you are good at making web and mobile apps, there are hundreds if not thousands of startups in SF and elsewhere that would hire you. But you have to prove you're good. Luckily, programmers can prove that fairly easily by showing their work on Github, and performing well in technical interviews.


I agree with what aaronchall said. I'll add that you should consider the cost of college. If you're going to take out burdensome student loans and/or put your parents in debt (that they can't handle), it might make more sense to skip college, or to consider community college (it's cheap), state schools (if yours is cheap), or scholarships.

Finances aside... I don't see employers hiring a high school grad who also has no experience. During high school, start freelancing on projects that can be listed in a portfolio (not backend/proprietary apps), or convince someone to give you a part-time job (even if it's just installing printers), or do projects for charities.

Also there's nothing wrong with taking a year off after high school and seeing how things pan out.

Importantly, once you have a few good years of professional programming experience, the difference in not having a degree is a lot less. But some companies will still not hire you because of red tape, and some mega corps will put you in a lower pay bracket.

Keep in mind that hiring patterns vary by geography. Take a look at degree requirements in job ads where you want to work and note the in-demand skills. Also remember that many jobs are not posted on job boards. Start networking too (find a local hackerspace or look around on meetup.com).

> I know that if I went to college, a lot of what I know would be repeated

Probably just the first year material. If you want to avoid this then take the AP comp sci exams. Or opt for the easy A's.


I think I'm in a good position to answer this since I don't have a degree and am working as a developer.

Obviously the answer is you can still get a job, and a well paying one at that, without a degree. I had internships but I imagine people would be fine with previous work as well.

I don't have the slightest idea about whether being an indie developer would make you a lot of money, but my guess would be no. Having a full time job gives you a lot of stability, and as far as I can tell most indie developers do not make much money, in fact I think most barely manage to scrape a living.

Interesting and difficult projects are much more interesting on a resume than a degree, unless it's from a top college, in which case it really depends on the school and project.

However, I"ll tell you that I actually did go to college, I just didn't finish, and if I could I would totally go back. Financially it makes complete sense to not go to college if you don't have to in order to find a job, but the thing is, the things you'll learn and do in college is likely going to be much more interesting than the work you'll do in industry.

If you are in a position where you already know most of the things that are taught, I would STILL recommend you go to college. In fact, you're in an even better position to take advantage of college because that means you should be able to take graduate courses instead or do research.

Of course, that's just my experience! I do feel that after you start working you'll have less time to learn whatever it is you are interested in though.


> If so, does it have to be a nice college?

It needs to be (at a minimum) a program that is ABET accredited. And is likely to keep their accreditation until you graduate.

Other than that, it doesn't need to be somewhere like Stanford unless that's something you really want and have the brains for. A state college, a smaller private college, all can be good places to attend. Where you went to school and the GPA you got only matter for the first (and maybe the second) job out of college. Afterwards, employers will give you a pass on it.

If/When you do a college visit, talk to the CompSci department and ask about the faculty, and what areas of concentration they have - graphics, databases, algorithms, etc. And see if that matches what you have an interest in. Call ahead and make an appointment with one of the faculty advisors - the usual university tours will just hand-wave at the building on their way to showing you the glitzy student center. As a point of reference, the CompSci department at universities usually got created within the math, business, or physics departments before being split off. So their syllabus will reflect that heritage.


Degree-less engineer here. It can be done, but you have to work hard. Your college educated peers will have a basis of classroom-based learning that you didn't get, and it'll hurt you early on. Once you get enough years of relevant experience, that degree matters less and less, but you still have to hone your craft more than your college educated peers.

If you want to excel without a degree, you have to build a reputation for being "the guy" that people go to when they get stumped. Is it hard? You bet. In my opinion, it's best to grind out some time at big name companies while you build your reputation. Don't aim for a Facebook or Google, because you'll get round filed quicker than you'll get an interview. Besides, if you get good enough at what you do, they'll come looking for you, with or without the pedigree.

source: I'm a degree-less engineer in the Bay Area with recruiters hitting me up on a daily basis.


In short, no, you don't need a degree to have a good paying job. But this does not mean its the 'best' thing to do. The reason you can get away with stuff like that is because the demand for programming jobs in general is so much more than the supply of labor in that market.

Having said that I personally would recommend some sort of teaching of Software Engineering. This is because a lot of the developers out there (as you can tell from this thread) do not have formal education and hence CAN resort to in bad practices.

The importance of understanding the software product behind simply writing code and the importance of designing instead of hacking and fixing - and the importance of testing and having a process methodology behind creating software is higher level education IMO.


As someone that was in your position not so long ago (5 years), here's what I've learned:

- Yes, you can get good programming jobs based on your experience and portfolio.

- No, college is not a required step.

- I would recommend working in bigger teams, as exposure to other developers, teams, and processes are going to be very valuable to you.

- Not in my experience.

HOWEVER:

As someone who doesn't have a degree, I will also say that I frequently notice the gaps in my knowledge, and while I'm actively working to fill them, it's a lot more difficult to do so when working full time because there's actual work to do. I'd very strongly recommend going to college right after high school if you're going to get a computer science degree. It doesn't have to be anything fancy nor expensive.


When we hire we look at years of working experience, and request a technical assessment before interview. In my opinion, quality of work and culture fit are far more important than a college degree. Many colleges are out of date and behind technology.

I would suggest building up your portfolio and reputation by working on open source projects. You will also learn a ton from experienced developers you meet there - more than you could in the same amount of time at a college.

If you code in C#, we'd love to see your contribution to our project here - https://github.com/Warewolf-ESB/Warewolf-ESB

Good luck!


Software startups would be the place to try - they tend to be less conventional and might look purely at your skill and energy. You could also intern at a company and make an impression. Or volunteer your skills at hackathons and get noticed. The further away you move from startups, I see them preferring a degree, thats the way the market works, unfortunately. On the other hand, not all high-schoolers come out with the required maturity and skill to handle real projects - so being in that minority in your case puts the burden of proof on you.


You need a degree to get better jobs.

Without a degree means that you were poor and think nearsighted.

That was me.

I have learned all the college lessons in high school and think that I could skip college.

Maybe you could get some good paying jobs now. But that's not sustainable. There is no career path.

You could out performance but still underachieve.

However, I suggest that you learn something else in college rather than computer.


There are two developers on my team that don't have degrees, one is a senior engineer, another is junior.

From a hiring perspective, I want developers who can solve problems and be great to work with. You have to prove both those points in varying degrees in order to get hired. In don't care so much whether you have a degree from Harvard.


A what?

No but seriously, definitely not a requirement for success. But in lieu of college experience, read philosophy. Study logic. Learn computer science-y things. Formalizing your understanding of programming is good move. It will make you a more a more fulfilled and generally more interesting programmer.


I would say that not the degree in itself is worth the most, but rather the experience of going to an university and learn things you hadn't learned on your own and meet a lot of people in different programs which you will know afterwards and maybe are going to work with


No. College is severely overpriced. Unless you go to a public school for SE or CS (or something related) you're better off just learning on your own.


Not necessary, but hugely helpful for a number of reasons. Shoot me an email (address in my profile) and I'm happy to talk you through them.


I can't seem to find an email address, but I'd love to ask some more specific questions.

It may be because I just made my account, so my apologies in that case.


Many people don't realize that although they've given their email to manage their account, it only shows in their profile if they purposely insert it there, as well.

So it's not just you.


My apologies! I just added it to the about section, can you see it now?

Thanks for letting me know folks.


FYI: your address is not in your profile.


I'll put my bias up front: I went to one of the best cs school in the US, so the perspective I have and the opportunities I've seen available to me and others I know are not necessarily typical.

1) It is totally plausible to get a programming job with just experience. College just makes it easier to get your first few jobs for most tech jobs. Some require it, just like some tech jobs require a pH.d.

2) Well, nothing is needed since you can learn all the material on your own and software engineering jobs care more about your ability to perform than educational or professional certifications. The value of the courses you'd take isn't that you took the course, but that you learn what it covers. That said, at a good institution courses act as force multipliers for learning the material faster than you would on your own and the overall curriculum ensures that you will have the requisite base of knowledge to be able to do your job well or switch to a different job with relative ease.

You can get all the knowledge of a CS degree without going to school, since between berkeley, stanford, carnegie mellon, and mit, there are enough free courses with totally public material to learn on your own everything you would in their bachelor's program (eg all the projects and lecture slides for berkeley cs courses are publicly available. many classes have webcasted lectures). the only thing standing in your way is your discipline and amount of time you have to devote to learning.

However, college definitely makes getting your foot in the door easier. Internship programs at companies with an HR department usually require you to be a student. Most places large enough to have in house recruiters or a well defined hiring process are going to use college as a quick indicator of baseline competence for your first few jobs at least. Certainly there are ways around this, especially in tech, but there is still a privilege associated with have a bachelors.

3) Do you mean indie gaming? I don't think those people are swimming in money, and I don't think they care. Do you mean just freelancing? Perhaps, if you don't mind treating it like a business with all that entails and not just being the stereotypical programmer who hates anything business related that doesn't involve coding.

4) At many places, yes. Is it fair? No. Is it a good indicator for who would be a good hire? No. Will it still happen anyway? Yes. This effect goes away the longer you've been a professional programmer, but it gets replaced by a similar effect based on how the prospective employers perceives your past employers and jobs. If you go to a great school, then that cachet will follow you your whole career. It will impress people and open doors for you, because it indicates that you aren't a complete moron (it's very similar to the quip "No one ever got fired for buying IBM").

Now for stuff you didn't ask about that I'm going to tell you anyway based on some assumptions I made from your post.

1) Think long and hard about whether you need to be a game dev. There's a lot of people who want to be game devs. There's so many that the market is essentially saturated. That's bad for you because that means employers can pay less (compared to other programming fields) because employers can treat you shittier because they know there's tens of people jonesing to do your job. You will be paid significantly less as a game dev than you would as a programmer in just about any other industry, all other things equal.

If programming is just a means to an end of making video games, I totally understand. Go be an awesome game dev. But if you care about optimizing, even just in part, for compensation and good working conditions, at least look at other programming fields. There is lots of exciting and interesting programming stuff in fields outside of game-dev.

2) There are major differences in quality between the average CS school and a great CS school. If you can get into a great CS school, it is almost certainly worth it, even if you have to take out loan to do so (I'm assuming you'd be taking loans based on not being able to afford the school, not because your two doctor parents refuse to pay for your college, so you can't get any financial or reduced tuition). If you can only get into a decent CS school, well it might be worth it if you won't have any loans, but you'd have to look and see if the material they teach in upper division courses covers things you don't know. I wouldn't take out loans beyond about $35k total, though, in that case.

3) College isn't just about what you learn there, but who you meet. Who you know is just as important if not more important that what you know. True, to a larger degree than in other fields you still need to be qualified and capable of doing the job you get hired for, but unless you are one of the best in the world at what you do, there will be other people as qualified as you. If you have someone on the inside or a friend who can recommend you that can be the difference between getting a job and being passed over for someone else. The network you cultivate in college and early in your career will help you find new jobs and opportunities as you progress in your career. Usually the best positions and the best hires are never publicly available (ie applied/received via the careers page of the company website), but instead come from some internal recommendation.

4) The biggest "problem" I've anecdatally observed with people without a degree or who didn't go to a good school is a lack of background knowledge. That doesn't mean all people without a degree or with a degree from eg "Bob's trucking school and CS degree mill" will have that problem, nor does it mean that no one from, say, MIT will ever lack basic background knowledge. But on average, people without a degree tend to focus only on what they're interested in, so there are gaps in their knowledge. A degree gives, or at least attempts to give, you background knowledge.

Background knowledge is actually really important. Sure you don't use it everyday, but a lot of programming is pattern recognition, and the more background knowledge you have the more patterns you can recognize and solve efficiently.

EG, a few months ago, a friend who hadn't really focused on lower level concepts asked for some code help with optimizing some number crunching scala code on facebook. Within 5 minutes of chatting I'd helped him massively optimize the code because I realized the scala code was bogging down due to two if staements in the for-loop. My background knowledge of how CPU pipelines work, why branching can be expensive, and what compilers tend to optimize and not optimize fixed an issue he'd been working on for days.

TLDR: No, but it makes it much easier for the first half decade or so. No, but the better the college, the more it helps you acquire a job.


Thank you very much for the in depth reply!

I know I said Game Dev, and games are a fun thing to program, but I honestly could be working on Foo or Bar and I'd have a good time with it.

You mentioned the MIT free courses and such - which believe it or not, I've done the majority of. I only bothered with MIT though because they had a lot of different courses and they were all reliable and in the same place. For a time I was interested in compilers and such, so I read the Dragon Book (Or a good helping of it. That's one ugly book). I've also read a few other technical programming books that I know you have to read in college. Despite this I think I'm leaning towards going to college now for many of the reasons you stated (background, networking, general knowledge). Thank you for your answer it is undoubtedly life changing.

Where did you go?


I went to UC Berkely.

if you've been through a lot of those courses and read the dragon book, then another reason you might appreciate college is that you'll be able to do research or take grad classes to fulfill undergrad course requirements.

Btw, if you care to see what they've got public here's the master list (note the years of archives in addition to the most current version of the class): http://inst.eecs.berkeley.edu/classes-eecs.html




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: