
Ask HN: Do I need a CS degree or should I stay with my job? - shanelja
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.<p>Since I began programming I have taught myself PHP (and everything which comes along with that, MySql, Javascript (&#38;JQuery), CSS, HTML), x86 asm, Scheme and have a good grasp of most aspects of computer science.<p>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.<p>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.<p>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?<p><i>Thanks for all the replies, I expected this to disappear as white noise &#38; didn't expect to hit the front page, I will try to reply to everyone I can</i><p><i>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>
======
masukomi
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.

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

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

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

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

~~~
matrix
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...).

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

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

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

~~~
shanelja
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_.

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

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

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

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

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

~~~
darkxanthos
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>

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

~~~
shanelja
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)

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

~~~
dccoolgai
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!

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

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

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

------
cflegal
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 :)

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

------
Gutti
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...](http://ocw.mit.edu/courses/audio-video-
courses/#electrical-engineering-and-computer-science)

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.

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

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

~~~
shanelja
> testing > this out

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

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

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

~~~
jyu
It's good to have options :)

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

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

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

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

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

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

------
lonnyk
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'.

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

------
genwin
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.)

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

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

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

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

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

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

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

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

PROGRAMMER IS LIKE A SUPERMODEL

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.

THE LARGE COMPANY FILTER

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.

THE FILTER

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.

EXPOSURE TO UNCOMMON FIELDS

    
    
        Have you worked with state machines?  
        Machine Learning?
        Assembler?
        Threaded Interpretive Languages?
        UML?
        Patterns?
        Implemented a small round-robin or preemptive RTOS?
        Recursion?
    
        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.

FRUGALITY IS ALWAYS THE KEY

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.

OLD TECH

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.

CONCLUSION

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.

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

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

