
Ask HN: Do I have to have a degree to be a developer? - tanishalfelven
Hello! I am a high school student in the USA, and am currently thinking about my future.
I&#x27;ve talked to a decent amount of people on these topics, but since they aren&#x27;t programmers, I feel that they might not have the best answers, as Computer Science is such a vast and varying career field. I&#x27;m going to work professionally as a programmer one day, whether that&#x27;s as a GameDev or any other kind of programmer, and I want to make sure I don&#x27;t make a bad choice early in my career.<p>I&#x27;ve been programming for about 4 years now, and in that time I&#x27;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.<p>Assuming I had no degree, and I want to make a fair amount of money, here are my main questions:<p>Is it possible&#x2F;plausible to get programming jobs based purely off of experience and a well put together portfolio of previous work?<p>Is college a required step to get well paying jobs as a developer?<p>Is working indie a smart way to try to make money?<p>Will I get glossed over because I don&#x27;t have a degree, even if I have the knowledge?<p>tl;dr: Do I have to have a degree to get a job? If so, does it have to be a nice college?
======
aaronchall
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.

~~~
bnb
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.

------
smacktoward
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.

~~~
tanishalfelven
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.

~~~
smacktoward
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.

------
cauterized
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.

------
falsestprophet
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.

~~~
tanishalfelven
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.

------
vonnik
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.

------
logn
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.

------
rifung
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.

------
chiph
> 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.

------
bitshepherd
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.

------
kocsenc
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.

------
cweagans
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.

------
Warewolf-ESB
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](https://github.com/Warewolf-
ESB/Warewolf-ESB)

Good luck!

------
annasaru
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.

------
c1
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.

------
Bahamut
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.

------
cilix
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.

------
jhildings
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

------
ryanSrich
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.

------
jtfairbank
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.

~~~
tanishalfelven
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.

~~~
mod
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.

------
joshAg
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.

~~~
tanishalfelven
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?

~~~
joshAg
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](http://inst.eecs.berkeley.edu/classes-eecs.html)

