
Ask HN: Is a master degree in CS worth it - chrisherd
I&#x27;m an Architecture graduate who&#x27;s looking to change careers. I&#x27;ve dabbled with coding for years but feel a formalised education may be prudent in enabling me to make the change. Has anybody else made a similar switch, and if so what did they encounter?
======
chpmrc
Yes if: they give you a scholarship AND (one of the following) it's at an ivy
league college, you are deeply interested in a specific topic and you'd like
to continue with a PhD, you like the work of a specific professor and he has
agreed to work with you.

No if: you want to work as a software engineer (made the mistake myself, some
friends are in lead positions and earn way more than me and have generally
more opportunities because they worked two years more than me, even if I
graduated with a 3.8 GPA from one of the top 2 unis of the country) or if you
think it will boost your skills as a developer (Udemy/Coursera work better).

Maybe: if you want to work in the government where these things have a value.
But spending two years of your life (even if with a scholarship) doing
something that might not turn out to be a good investment just for this reason
is insane.

~~~
UK-AL
There's a point at where experience starts to matter a lot less. Who cares
about 10 vs 12 years of experience?

Where as maybe a master's is a small advantage.

~~~
ryao
I recall reading a study showing that a master's degree hurt total lifetime
earnings rather than helping them. Having a few years paying large sums for a
boost in initial pay was not worthwhile because experience eventually put the
two at parity. This is all from memory though. I do not have a link to
reference.

However, it does make sense given that the capabilities of people with
bachelor's degrees and master's degrees become equal at some point, assuming
all other things are equal. I do not think a master's degree is a ticket to a
lifetime of greater competence in CS and salaries ought to reflect that.

The same could be said for PhDs too given the quality of work that we saw come
out of places like Sun. There are plenty of CS people that I believe have only
bachelor degrees that are not in any way inferior to holders of PhDs and in
some ways, are more capable because their solutions are demonstrated to work
in the field. I imagine some of them will receive honorary PhDs for their
work.

This is not relevant to someone without a bachelor in CS though. I will post
my opinion on that separately.

~~~
brianwawok
I got my masters while I worked over 4 years. Not always required to quit
work.

~~~
trentmb
You can often get your employer to foot the bill too.

------
elharo
Yes, a terminal master's degree in CS is absolutely worth it for a person in
your position looking to make a career switch. It will help you learn things
you do not know and qualify you for many jobs you would not currently be
considered for. A CS masters is not the only way to do what you're trying to
do, but it may be the easiest. You do not have to attend a prestige university
or a win a scholarship to make this path worthwhile, though certainly those
things are nice if you can get them.

I would not say the same thing to someone who already has a BS in CS; but for
someone looking for a career switch like you are, it makes a lot of sense.

~~~
kem
I'm in a similar position thinking about going back to school, but I admit I'm
confused about the question, because the programs I've looked at won't
consider masters' students unless they have a bachelor's in CS (or equivalent,
which there are nontrivial requirements there). So from my vantage point it's
always been going back to do a second bachelor's.

I have a lot of programming experience, and a lot of statistics/numerical
computing experience, but not so much experience with more hardware- or low-
level networking stuff.

------
atemerev
I had a successful software engineer career without a degree, but some time
ago I decided to go for it (to leave open the option of pursuing the PhD). So,
here are the results:

\- Change in my career possibilities and new job offers: exactly zero. Nada.
Nil. I work as a software engineer in finance (high-frequency trading), and
there domain experience matters much more than the amount of computer science
education received. (If I would have been a quant trader, not an engineer, it
would be another story -- education matters there).

\- Mind expansion: some. I've got some preliminary math education (so I am not
scared of reading quant papers anymore and can immediately work with
formulas), and also there were excellent courses on coding theory and
automata. Some other courses (e.g. computer graphics) was on subpar quality,
but this is not my specialty anyway.

Was it worth it? For me, that't a definite yes, psychologically and
intellectually. But if my motivation would have been only related to career --
the answer would be no.

------
hahamrfunnyguy
As someone in charge of hiring and recruiting developers, I'd see an extra
year or two of experience being more valuable than a masters degree. The work
my company does is consulting across a variety of industries, and subject
matter experts are always valuable to us. So, your experience as an architect
would still be weighted above above a candidate with a masters degree.

Another thing to consider is cost. If you get right to work, you'll be gaining
valuable experience and making money while you do it. If you spend another
year or two in school, you're racking up debt and getting no real world
experience.

All that said, I'd imagine that there are certain fields that require more
specialization, like AI or signal processing that would benefit from an extra
couple of years of study.

~~~
WhitneyLand
I think you are doing this person a disservice.

With no undergrad CS and no development work experience they won't even be
able to tell you how fast a sorting algorithm is.

Also you're not taking into account how new important tech is unfolding or
what the long term impact of this choice will be over a lifetime.

~~~
pitaj
> how fast a sorting algorithm is

What are you referring to here? Like remembering off the top of your head the
big O of bubblesort? Or figuring out the big O of an algorithm you wrote
yourself?

The first is something easily looked up. No reason to dedicate some of your
limited human memory to that.

~~~
WhitneyLand
>The first is something easily looked up. No reason to dedicate some of your
limited human memory to that.

That's irrelevant because it's true of everything. I can also look up and
learn quantum mechanics at khan academy:
[https://www.khanacademy.org/science/physics/quantum-
physics](https://www.khanacademy.org/science/physics/quantum-physics)

Sure it's feasible to look up facts here and there, but it's harder to grasp
the underlying meaning and generalize it when rushing to check in code for a
job, compared to having dedicated and structured time set aside.

Anecdotally, I started coding intensely in middle school and thought I was
pretty bad ass by the I time entered college. Was blown away at how little I
knew about what I didn't know. Gave up hubris at that point.

------
saeranv
I can't give you any advice on the Masters CS degree (other then that I think
some sort of CS background would be really useful), but career-wise - have you
considered sticking to architecture and follow a more tech path? There are
some great opportunities in the internal research labs of the more cutting
edge firms to develop software. Off the top of my head: P+W (where I work),
Norman Foster, Thornton Tomasetti's Core studio, AECOM, SOM, Zaha. Have you
checked out some of the big computational conferences/symposiums like ACADIA,
AEC Hackathon & Symposium, SmartGeometry?

Perhaps you've already checked out the field out and still want to switch, but
if not, I think you'll (a) find a lot of like-minded people and (b) find a lot
of meaningful work in the field that needs computational expertise. That
latter point is what's most important to me: issues like building/urban energy
consumption, affordable/dense housing are low-hanging fruit that are being
done in manual/non-optimal ways right now.

You can email me if you'd like to talk.

~~~
urahara
Interesting idea. Could you elaborate a bit more on what are some specific
positions and tasks inside architectural companies, where the CS +
architecture combined knowledge would be valuable for an employer?

~~~
saeranv
It's a huge, diverse field so I wouldn't be able to do it justice in a
comment. I suggest looking at some papers from
[http://acadia.org/](http://acadia.org/), and
[http://www.ibpsa.org/](http://www.ibpsa.org/). The latter being an example of
a more specific subset of computational/architecture work (building
performance simulation).

------
zengid
There is no single answer that someone can give you; It really depends on you
and your background. As a personal rule of thumb I look at what big companies
like Microsoft or Google expect of their employees (particularly Google). I
know not every tech company is like Google, but they are a company with a very
rigorous vetting process for applications. That said, even Google doesn't
require a formal degree for their engineers, and they offer a guide for
potential applicants listing what they expect [1].

IMO, what it really comes down to is if your learning style is best suited for
a class-room education, and if so then whether you can afford to 'stop the
world' and go back to school. A grad-student should be capable of doing
independent research, so in theory you should be able to learn how to code on
your own (if you wish to be a software engineer). You'll need to be sure you
have a way to receive objective feedback on your output, and be ready to
humble yourself as you descend down the Computer Science rabbit hole.

In full disclosure, I'm going back to school for a MS in Information
Technology. It's not as rigorous as CS, but it's reasonable given that I have
a BA in Music. I wouldn't necessarily have gone back if it weren't for having
a perfect opportunity to do so (My wife got a job as a professor at a
university that had a masters program for IT, and so I'm getting a good deal
on tuition).

[1] [https://www.google.com/about/careers/students/guide-to-
techn...](https://www.google.com/about/careers/students/guide-to-technical-
development.html)

~~~
wikibob
Just FYI, getting an Information Systems degree instead of a Computer Science
degree is one of my regrets. I would not advise it to anyone.

If you want to work in tech, go for the CS degree. Yes it'll be harder, but
it's vastly more valuable. IS/IT degrees are nearly all fluff, especially a
MS.

~~~
zengid
I agree, but hey, at least you have a framework you can use to fill in the
missing CS pieces on your own! You're probably in a better position to be
promoted to a management level with an IS degree over a CS, so that's not a
bad thing.

In my case, the school that I'm attending only has a MS in IT. I decided that
spending a short amount of time getting a higher degree in a 'softer' field
would be better than struggling through the (somewhat arbitrary) math for a
long time just to earn _another_ Bachelors.

Either way, I'm trying to use all of the free-time that I have now to
supplement my education as thoroughly as possible in the realms of hard CS
topics. I hope to integrate this into my thesis as a way of demonstrating that
I made the most of my time.

~~~
wikibob
Your reasoning isn't far off from what mine was at the time I was choosing a
major.

With the benefit of hindsight I can tell you that if you want to work in the
quantitive side of technology, the pain of suffering through the math and
truly grasping it, is absolutely and completely worth it.

As time goes past, the tech industry appears to be becoming more specialized.
An analogy that I think works pretty well is the medical field. In the
beginning you just had "doctors", then as more advances were made, the field
specialized into nurses, doctors, physicians assistants, and then further into
specialties and now sub-specialities.

Someone can absolutely work in technology without a firm grasp on the
fundamentals, hell they can even make a lot of money. But it's a difficult
leap to go from working on a React & Rails app to working on distributed
systems, advancing the state of the art AI, etc.

Also be careful about assumptions about who is in 'management'. This is also a
mistake that I made when I didn't really understand the industry. I have spent
time working for managers who are non-technical and am rebuilding my life so
that I never have to do that again.

Happy to chat more about this if you'd like. Good luck with your degree and I
hope it works out well for you.

------
thesumofall
After five years of full time work I saw my MSc (Systems Engineering) as an
opportunity to have a bit of meaningful time off of work. Most universities
are much more relaxed with their postgraduate programs and allow you to focus
your energy on the stuff that interests you most. You might learn a thing or
two during lectures but might learn even more through all the extracurriculars
that you will suddenly have the time to engage with. Yes, it was expensive and
I'm not sure if I'll ever break even but it was money well spent on a
fantastic experience. As a plus I managed to switch careers (aerospace to
management consulting) which was not something I had planned to do but simply
emerged out of the people I met throughout the program.

------
ryao
Your best route to employment is to:

1\. Learn the basics of programming. This means writing software to get a
computer to do things, even as simple as adding all of the numbers between
inputs n and m, which is not a bad beginner exercise.

2\. Find an OSS project that interests both you and prospective employers that
has active development on IRC (likely freenode).

3\. Start handling small bug reports and adding minor features.

4\. After familizing yourself with the code base, start collaborating with the
more experienced project developers on bigger changes. More veteran developers
are likely to be happy to offer advice/answer questions on how to do things
like them.

5\. After a year or so, you will likely be able to get a job, assuming that
you do not have offers already.

I sort of did this unintentionally when I started contributing to OSS projects
for the sake of improving them for my own use. That eventually lead to
consulting for a time before I found full time employment at a company that I
felt was a good fit. I went a few years without asking even asking if I had a
degree until a year into full time employment when investors wanted everyone
to submit resumes. I believe any degree would have been sufficient. My manager
for instance only had an applied math degree.

For full disclosure though, I have bachelor of applied science and engineering
that is a double major in "Computer Science" and "Applied Mathematics and
Statistics", plus partial graduate CS study. Also, my company went out of
business last month. I have options for both employment and consulting,
although I now favor full time employment due to familial pressure.

That being said, it would be easier to advise you if you said specifically
what area interests you. There are different areas such as operating system
development, systems programming, embedded programming, web development, user
interface design and others. That matters quite for step 1 in picking your
first programming language. Being multilingual is great (and I certainly am),
but you will find things easier if your first language is language used by
what you want to do as your first job. That way you save some time on becoming
proficient.

------
kinofcain
A masters will be a faster, more expensive path.

Without a CS degree of some sort you're going to need to prove you can code.
Dabbling helps but you'll need to show work experience.

Getting work experience without a CS degree likely means taking jobs that
aren't otherwise appealing.

Contracting or freelance can be a way to get that experience since the bar for
proof is often lower, especially when working in non-technical industries.

But those are jobs, and they pay money.

If you have the financial means and can attend a reputable school, I'd
recommend getting the masters, or even a bachelors.

Having that degree, and learning what they teach you in a CS program, will
help you get a much better job and will help you perform in that job earlier
than learning as you go.

You're going to need to make the call if you can afford the short term
financial hit/investment.

~~~
g00gler
So, if I'm a full stack developer without a CS degree, would you say it's
worth it to take a shitty software development role @ a Uni to go back and get
a CS degree?

I say it's shitty because they don't follow best practices and just focus on
pushing out workflow apps as quickly as possible. No docs, old tooling, etc.
Really a mess.

That's the situation I'm in now, first full time job. I majored in business
[first economics, then MIS], big mistake. Now I'm working for the uni with
plans to get a second bachelor's in CS beginning in the Fall (for free).

People always ask me why I majored in business. I've had recruiters say to me
"Have you considered a minor in CS", etc. despite a very nice portfolio and 2
years worth of clients.

So, since I must deal with HR and would like to be taken seriously as an
engineer, I'm going against the advice of the great Charles Manson and going
out of my way to prove something to the phonies.

Plus, I wanna learn my maths much better but can't bring myself to go it alone
so I figure it's worth it in that regard.

~~~
jakecraige
> I say it's shitty because they don't follow best practices and just focus on
> pushing out workflow apps as quickly as possible. No docs, old tooling, etc.
> Really a mess.

I doubt schooling would fix this. It tends to be more about theory and
algorithms than building "real world"(depending on what you're doing) apps.

Also, those are problems you can fix by reading a few books on best practices,
learning from your team, keeping up to date on tools and just doing it (docs).
If anything, the school would likely be behind on things like tooling and many
best practices related to the modern frameworks.

It's not all bad, you'll learn things that from time to time come in handy,
but getting a CS degree won't turn someone into a good programmer. That's a
skill you'll develop over time from doing it and learning from others.

This repo is pretty cool and links to lots of free courses that show the kind
of things you'd learn at Uni: [https://github.com/open-source-
society/computer-science](https://github.com/open-source-society/computer-
science)

~~~
g00gler
I'm already well aware of best practices and I was really surprised that they
didn't have any documentation or anything.

I meant, is going to school for CS worth working at a place like that.

They really aren't willing to make changes, as I said the goal is to push out
apps as quickly as possible.

Coming from my previous job, where I was the only developer, I have full
jsdocs/phpdocs, quite a few tests and high level user manuals. They have
nothing resembling that.

~~~
wikibob
I would say it depends entirely on your goal.

Is the CS program high quality? If yes, then the job you work in order to
attend that program is merely a means to an end. Think of it as waiting
tables, just slightly more related to what you're interested in.

You could take the opportunity (not too quickly, be mindful of politics) to
make a case study out of it and attempt to apply some best practices, it
sounds like it could turn into a thesis about software development in the real
world.

------
acomjean
I got a Civil Engineer bachelors degree, worked for a bit and then got a
Masters Degree in CS.

I took a few classes at university before I started a degree program. Despite
this there were classes where classmates with undergrad CS degrees were at an
advantage, so it was a fair amount of work to catch up/ keep up. Those with an
undergrad degree had seen this stuff before for me it was new. On the plus
side I was not wasting time in classes with stuff I already knew.

It was worth it for me, I actually saw a lot of things from university at work
(I did some time doing Operating System "Augmentation", writing libraries.
Datastructures and algorithms and database classes were also useful post
graduation. I think the degree helped get work and I enjoyed getting it.

------
mikek
You will learn a lot about programming and it will change your perspective on
it. It will give you a deeper understanding of how things work than you would
otherwise get. It will make getting that first job easier. That said, it is
expensive and you may be able to get a job without it.

------
mhuangw
Look into Georgia Tech's OMSCS. Great program that costs little and and can be
taken while working.

~~~
cagmz
What are the pros and cons of doing OMSCS if one already has a BSCS?

I'm about to graduate with a BS and I will be going straight into the
workforce, but I'd like to pursue a MS (without taking time off from work).

~~~
mhuangw
Pros: Deepens your knowledge of CS and can be used to focus on a more
specialized field e.g. machine learning

Cons: Time and money investment. May be unnecessary if you just want a
standard dev job.

------
pm90
There are many things to consider when choosing this path, depending on what
you want/need.

If you're looking to get better at coding/software engineering, the best way
to do this would probably to take online courses or just start as a junior dev
and OJT. Masters in CS tend to (but this is NOT always true) focus more on
research-related areas. Most of the professors I met during my Masters didn't
really care about version control, unit testing, deployment pipelines etc. all
of which were extremely important in the real world. So Masters is definitely
not a good place to start a career in Software.

On the other hand, there are many auxillary benefits to getting a CS degree.
You can choose to go to another country and some (like the US) have work after
study program that makes it easier to work immediately after you graduate.
There are also many campus recruitment efforts where you can interview with a
bunch of companies all at the same time.... this allows you to negotiate
better offers as well.

------
rapsey
I don't think there is a field in the world where practice and theory is as
far apart as software engineering. Having a CS degree is an entirely
meaningless indicator of that person having any clue what to do at their job.

Some schools are obviously better than others. The good ones are expensive as
hell though. The bad ones are nothing but a mountain of useless shit.

~~~
emptyVal
I don't have a single college credit, but theory is important for a lot of non
trivial shit, for example cassandra, dynamo, project voldemort all use chord+
gossip protocols , i. What about concurrency and parallelism CSP, and the
actor model are from where academia. What about Zookeeper, Chubby, Etcd where
do Raft and Paxos come from academia.

You don't need a degree yes but theory is relevant however yes a CS degree is
not a good indicator of any skill and too many CS educated people can't code
worth a damn. Theory is not useless as long as you can implement it.

------
_Codemonkeyism
No. I know this is not a mainstream opinion, but if you do not plan to go into
academia, it's not worth it. Working the same amount of time as a software
engineer on the job propels your career further than a master degree.

I've hired many many software developers and couldn't correlate a master
degree with the success of the person after being hired.

------
fergie
I did a Masters in Software Engineering, having switched from Sociology and
Philosophy. It allows you to work in software engineering which may or may not
be a good thing

Side note: why do so many people abandon architecture after successfully
graduating? As an outsider, architecture seems like a great thing to do for a
living.

~~~
mdorazio
Based on conversations with friends who did exactly that, the pay is crap,
competition is intense (way too many architects graduating for the number of
jobs available), client demands are ridiculous (extreme hours to meet
deadlines are not uncommon), and a lot of the people running architectural
firms are assholes.

~~~
chrisherd
Exactly that, architcute is an altruistic pursuit where the hours you invest
are never appreciated. Clients don't see, nor do they care about, the amount
of time it takes to create great work.

------
candiodari
It is not worth going $60k-$100k in debt. If you do, at least get an online
one.

~~~
chrisherd
Fortunately I'm based in Scotland, and comparative the the states a master
degree is priced far more reasonably and we have some excellent institution
I.e. St Andrews university

~~~
EliRivers
I took a (second) Masters in the UK, basically because I was interested and it
was cheap. I think you shouldn't even waver; a quality masters at that price
is a steal. Save up some pennies, take a year, enjoy the subject, enjoy
learning, have a great experience.

Even now I toy with the idea of taking a year off and just travelling
somewhere to do another one. Something just plain interesting. Modern Japanese
Literature, for example, or just identifying a few universities with cheap
rates and picking something really interesting out of their catalogue.

If you do it for yourself, out of interest in the subject and because you just
want to be better than you are, at that price it will be worth every penny.
There is a frame of mind that struggles to comprehend education for the fun
and satisfaction of it, rather than as part of earning more money. I smiled
politely and stopped talking about it with them.

------
flatline
If you just want to do some sort of programming for a living, you probably
don't need a degree to make the switch. It will help you get your foot in the
door, but it's going to be an expensive way to go about it. If you have a
particular idea of what area you want to focus in - ML, systems programming,
embedded, etc - then it can help secure a job that would simply be
inaccessible any other way.

I went back to school after a decade of professional programming and finally
finished a BS. It was worth it on a number of levels, but it was not cheap to
do as an adult.

------
mbrodersen
Yes. And it definitely was worth it. I have been programming since I was 11
and thought I was pretty good. However going to University had a huge positive
impact.

A great quote from Lambert:

1\. Decide what the program should do. 2\. Decide how the program should do
it. 3\. Implement these decisions in code.

Only the last part is actually coding. So learning how to think better and
more systematically is absolutely worth it. A good University will teach you
how to do that.

------
sunir
I was just recounting how useful and profitable both my degrees have been.
However I put myself into them both to get the most out of the experience.
More so my masters which let me explore a number of creative ideas in depth to
weed out bad ones and hone skills I am using every day now.

Academia has a specific purpose for self development of providing a cognitive
playground of sorts tempered with tough accountability, critical review and
deadlines.

------
Hermel
It depends. In the end, nothing beats experience and a good track record of
getting things done. When I was responsible for taking hiring decisions at a
startup, formal education was just one indicator of many. If you are talented,
your time is probably better invested in taking a few months off to complete a
few relevant online courses and program an app or website to show off your
skills.

------
virmundi
It will help in interviews since you lack work experience. You could retire as
a teacher. You can get higher rates for government contracts. Outside of that
you can learn more here in a few months. You just don't have the peice of
paper to prove you did anything.

------
alpos
When someone asks a question like this, I get the impression that the
questioner is not designing with the end in mind.

If you are not already, start with the goal and break down your roadmap from
there.

What do you really want to do? (In this case, what are two or three jobs you
would want to do?)

What are the necessary prerequisites to achieving that? (Fortunately, most
places specify these in the job listings)

What steps must be taken in order to clear the prerequisites?

If you need a master degree in CS to do what you want to do then yes, it will
be worth it. If you can possibly do that thing without first getting a master
degree in CS the no, the degree would not have been worth it since there
exists at least one cheaper or faster way to achieve your goal.

------
siscia
No, it is not necessary to work.

Yes it is necessary as it is a certification, it will make easier move across
borders, will make you pay less taxes and will make you easier to hire.

You can really get all the notion without a formal education, provided that
you are curious enough.

------
adpoe
Yes -- for a career change.

However: I got a second B.Sc. in Computer Science (first Bachelor's was in the
arts), and that worked just as well, for a career change, and at less cost.

Check out your options. I found that getting a B.Sc. in CS was very doable,
and would take less time the Master's.

It all depends on your situation. For me, I only had to take CS classes (and
some math/stats). Everything I did the first time through transferred. I'm
guessing your situation may be similar. If in doubt, you can always email the
college and ask for specifics. They're selling a product (education), and
generally very willing to help.

------
lngnmn
It, obviously, depends. If you went through really good courses and
extraordinary teachers, like old-school scheme-based Berkeley CS61A, then,
perhaps, some AIMA based course with CL code, leave alone original SICP
courses at MIT, then it definitely worth it. Berkeley CS188 (Python-based) is
very good one too.

But if you just passed through some crappy courses which ends with "in Java"
in some third-rate school, then you have, probably, wasted your time and
money.

Good schools which still taught fundamental principles, like MIT, will always
worth it.

------
george_ciobanu
My conclusion looking at the executives at multiple large tech companies is
that you can get there without a graduate degree but it's much less likely. A
Master's is good but an MBA is a better predictor, even for companies that
claim it's not a big deal. As an independent contributor or middle manager
you're fine without if you have a CS or eng undergraduate degree. It depends a
lot on what you have, where you are and where you want to go.

------
ebbv
It depends on what you want to do. If your goal is to be a web developer or a
game programmer then no, it's a lot of time investment and you'll come out of
it still needing to learn a lot on the job.

If your goal is to go into a more academic area like AI or some other topic
that's more of an area of R&D, then it's probably more worthwhile. If your
goal is to be an academic, then obviously you need not only a masters but a
PhD.

------
protomyth
If you might as a part time gig teach some classes at the local college, a
master's degree is becoming a requirement given the new accreditation
guidelines.

------
godmodus
It's worth it for the speed of learning it affords you later. It won't teach
you to program - A CS degree teaches you to learn, and learn fast.

I've seen so many technically superior students fail to learn a new technique
because they couldn't read the logic notation.

That said, a CS degree is less cost effective per niche subject than a
specialist with 10+ years experience.

Money wise, it's more or less the same, biased towards experience.

------
agounaris
You kinda of need a structured training and honestly its up to what you really
want to do. Changing career path also means that you will start low by
whatever this means but you can move quite fast once this will happen.

The first thing you should do imo, is to decide what skills you want to get,
what is that you wanna do and then move for MSc or coursera or anything else
that will give this structured training you need.

------
minton
Are online degrees worth it? Part of me feels like most companies would look
down on it and it might be worse than not having a degree.

Specifically, I was looking at
[http://ufonline.ufl.edu/degrees/undergraduate/computer-
scien...](http://ufonline.ufl.edu/degrees/undergraduate/computer-science/)

------
mettamage
Note: these thoughts are intuition based and are not refined. I'd need 20
hours at least to make a text like this refined.

I'm a CS master student in Amsterdam. I feel I have more similarity to you
since you're also from Europe. The US system is nuts, I don't get it. My
current debt is _gasps_ 3000 euro's! If I finish my master degree it will be
_looks in horror_ 300 euro's! When someone from the US thinks about giving
advice, please know that educational systems are different everywhere. So you
need to disclaim where your experience is based upon. Mine is based upon the
Dutch educational system, where the whole experience was (back then) funded by
the government.

Furthermore, the idea of a university and also the idea of getting a master
degree (in The Netherlands) have different cultural connontations. In The
Netherlands it is kind of a given to do a master degree after a bachelor. No
one knows why, but I feel that a lot of children were raised with the idea to
"finish school," and most people feel that getting a master degree is what
"finishing school" is like (there are exceptions of course).

Should you get a master degree? I'm going to give you a _very opinionated_
answer. I'd be delighted if people countered me, because my story might be
dangerous to take at face value, though less dangerous than having no or not
enough information.

I'm a programmer teacher myself right now and one thing I've never realized is
that you need to keep pace. Some students fall below the pace, others above it
and to some it's the right pace. Chances are high that you're either above it
or below it, since I can literally divide my students into 3 equal groups.

Furthermore, my Dutch curriculum gave me a many _many_ obligatory courses
during my bachelor. It gave me some freedom in my master. _This is bad._ Get
as much freedom as possible. I've noticed that -- on average -- obligatory
courses teach me less useful things. In some cases, I did need to learn
certain basics that I didn't want to learn, but more often than not: I learned
some academic arcane wizardry that I'm never going to use again (or at least,
chances are a lot lower).

By the way, good obligatory courses are everything that's involved with how
computers work. So distributed systems, computer systems and the like. Other
good obligatory courses are theory of computation, algorithms, etc. You're not
necessarily going to use that knowledge but they teach you a certain way of
thinking.

Bad obligatory courses: anything that has to do with ontologies (as an
optional course it's great, as an obligatory course, not so much), research on
Multimedia Systems (too in-depth), software engineering courses (if they don't
have a practical/pragmatic basis and emphasis), basically anything that
focuses too much on science and research. They're all great as optional
courses, but having them as obligatory courses, no. Also, obligatory courses
that only show powerpoint slides and academic research paper assignments are a
no go. Even as optional courses I'd be wary to take these (from a pragmatic
computer science standpoint, go ahead if you want to be more broadly
educated).

The next thing that is really important is the student body. You want to be in
a student body that suits your goals. If you want to overachieve during your
studies, you need to go to a university of overachievers. If you just want to
go solo at it, you need a university that's not getting in your way when you
do that.

These 3 things:

\- pace

\- ratio of obligatory courses and optional ones

\- the type of students that are here

Are all metrics to answer one single question: to what extent does this study
program fit your learning goals and your learning style?

Anything below 80%, don't do it. Everything between 80% to 85%, meh. You'd
want at least a 90% fit or higher to consider it to be worth it. Remember, if
you have an 80% fit, that means that you'll most likely waste at least 20% of
your time on university, time that you could otherwise spend on self-study and
creating an amazing portfolio. Also, when the fit is 90%, then you'll most
likely at least waste 10% of your time there, which is twice as less compared
to at least 20%.

If I could do the uni thing again, I'd aim for a 95%, personally. Otherwise,
I'd do self-study. Why? Well, self-study means that I need to create an eco-
system for myself (support group, learning the right material, having
_discipline_ ). When that eco-system is up and running it's very hard for any
university to beat that. You know better what you need than any university
program out there for most cases.

That's one thing I want to leave you with (another realization since I began
to teach): there's no perfect university program for you. It's impossible,
since it needs to cater to different needs for different students. I'm
noticing I cater to the lowest performing students, otherwise they won't get
anything out of the programming bootcamp I provide. This bores the better
students. My 'duck-tape-style' solution is to give them a codeschool account
(like fixing with duck tape, it works but.... yea I think you see how this is
a quick fix). So by nature, study programs have to compromise. The only thing
that could be a perfect fit is when you design your own curriculum.

The advantages of a 95% fit with a university program is in the synergy it
provides. For a slightly lower learning rate you get:

1\. contacts

2\. experts who you can bother with questions

3\. various incentives to study

4\. a proof that you know this stuff (your degree)

5\. a broader view

All these advantages elude to the point of: you don't have to setup your own
eco-system (remember that discipline thing? Or finding outside help? It's
pretty hard for most). If you're really good at doing that, then I'd say
university is not going to help you. Consider the advantages of setting up
your own ecosystem: 1\. you have contacts with more work-experience 2\. you
know experts in more specific/niche fields 3\. clients will give you a strong
reason to know more 4\. your portfolio is your proof 5\. you'll have a more
real-world view

The advantage of uni: you don't need to set it up. Most of it is already
there. The advantage of doing it yourself: more tailor-made, more real-world
experience.

To wrap this up, you need to ask yourself the question: what educational
system (uni, work experience, self study or otherwise) will give me the most
alignment to my learning style and learning goals? How do you progress the
fastest, and can you have some sort of showcase (i.e. degree or portfolio or
blog -- like Scott Young with his MIT challenge) of that progress?

Goodluck

Disclaimer: I finished psychology (bachelor + honours courses), business
informatics (bachelor) and information science (master). I'm working as a
teacher for a programming bootcamp nowadays and am in the final phase of doing
computer science. I also didn't finish some studies, I dropped out of business
school, twice (don't do business school, it's only powerpoints and some
writing but nothing pragmatic). I'm recently beginning to learn how well I
stack up to self-learned individuals and the answer is: about the same (since
HN keeps me up to date with the real world).

------
bsvalley
In theory it's not worth it. In pracrice, based on where you live in the
world, I found at that it makes a tiny difference: promotion, salary, etc.

Plus, if you're looking to apply for big companies like google, etc. It's
mandatory.

Otherwise, anyone can write code!!

~~~
barleymash
It is definitely not mandatory for big companies. Although depending on the
specific hiring manager, some might be more skeptical of your experience if
you don't have a degree in CS, but that is true at any company. Not saying it
isn't helpful, but not mandatory.

~~~
bsvalley
I found out that job descriptions are often vague about the minimum
requirements - like "BS or higher degree in CS".

From what I've seen, HR creates a short list of candidates, this is before the
hiring manager step. When a company is hot, they receive a lot of Resumes. HR
maxes out the requirements in order to create a quick short list. This is
purely based on the content of your Resume. They run a simple search in their
system by maxing out all the requirements to see which candidates pop up
first. In 2017 you'll be surprised how many candidates have more than the
minimum requirements! If you haven't applied through referral and if you're
aiming for a big conpany, you'll get filtered at the very first and automated
step - HR.

~~~
__derek__
Just an anecdote, but: I have a non-CS bachelor's and five years of
experience, and I recently received offers from both of the AppAmaGooBookSoft
companies that I applied to (via internal recruiters).

~~~
bsvalley
Sure, in the recruiter land, Bachelor's + 5 years of exp = Master's. there are
exceptions to the rule.

------
N3cr0ph4g1st
I did a career change and am in the data science field. I would not get any
interviews without my MS in CS. So for me it was essential...

------
dbg31415
Masters Degreees seldom seem worth it. It's just delaying you from doing real
work and getting hands on experience. When I interview someone with a Masters
I just think, "Kid couldn't get a job out of undergrad... wonder what's wrong
with him." But if it gives you confidence, go for it... Give me a self-taught
applicant who builds side projects and has an active GitHub account over a
Masters any day.

~~~
UK-AL
Depends what stuff you want. I would assume a self taught applicant would be
building web apps and such.

Master's degree applicant would be building something like, compilers,
distributed systems, machine learning etc as part of the degree

~~~
stewartpark
I think that also depends. What makes you think that self-taught applicants
can't learn compilers, distributed systems, or machine learning? If the
candidate has proven the same amount of knowledge acquired during the
interview, I'd definitely go for the self-taught one.

~~~
dbg31415
I think back to the best developers I've ever worked with, and one of them did
have a Masters... in Philosophy.

I just haven't seen any correlation between skill and education level. Ha,
with the exception of people who get a PMP... I've found them to almost always
be bad at running projects.

------
kapauldo
No. a masters isnt all that valued at 90% of cs bachelors employers.

------
panjaro
No, tried and gave up. Back to programming now.

------
frozenport
Look at financial outcomes from your target institution.

------
eldavido
My fiancee and brother are both architects. I'm quite familiar with this
career. I work as a professional software dev in the Bay Area.

One thing you'll find really quickly: there's not _nearly_ as much focus on
credentialing and licensing in software, compared to architecture. Like, I'm
talking, zero. No AIA, no AREs, none of it.

My advice: focus on getting an education, but realize your education can come
from a lot of places.

If you want to be a software dev but aren't sure exactly what you want to do,
just take the first job you can get and work your way up. You can absolutely
get to the top of the profession this way (Google, etc.), it will just take a
while. Advantage: practical work experience, cash earnings. You need to find a
place that will invest in you and your skills though; most startups won't do
this, so avoid them. Look for a great manager and a balanced team of
junior/mid/senior people with strong engineering leadership, and a good
culture of code review, learning, and leveling-up. [2]

Graduate programs in CS are better if you want to get into a special area of
computing that requires a lot of theoretical learning. The more established
the field, the more you'll need graduate education. You can probably "sneak
in" to some of the newer subfields with high demand, like genetics or machine
learning/AI. If you want to do signal/image processing, you'll need graduate
school.

You won't get a job at a big, high-paying company without work experience or a
degree. Feel free to try, but the AmaGooFaceSofts don't really recruit for the
jobs you want to get [1] without the right degree or work experience. People
say otherwise, but they're basically full of shit.

I wouldn't advise going to university for you. You've presumably already got a
BA or BS, so you've gained a lot of the non-disciplinary benefits of college
(how to write well, how to organize and structure your time, etc). If you
really just want vocational cross-training, find a good company and clock up a
few years of work experience.

Feel free to email me for more on this topic, email is in my sig.

[1] You can probably get dead-end, low-status jobs in a bigco with the right
credentials, but you'll do better avoiding these.

[2] This can be very hard to spot/recognize unless you've been in the field
for a while. Try to figure out who works there and back-channel to figure out
what it's like working there. All crunch time, endless death march, all senior
people with no juniors, all promotions from outside (no internal talent
growth) = avoid. Probably 90% of startups and most tech companies in general
are terrible in this regard; everyone's in such a damned hurry all the time.

------
peculiarbird
I'm currently finishing up my masters program in CS. So take into
consideration that I haven't had enough time out to get a full perspective on
the choice but I can give you an outline of my experience and why I think it
was the right choice for me. I finished undergrad with a degree in Math and a
minor in business admin. The last year or so I didn't know what I wanted to do
after graduation but was interested in tech. I had read online that not too
long ago (I think these Oppourtunities may still be out there) that people
could finish with a math degree and a company would hire them and just teach
them to code. My experience applying around is places expected you to atleast
have a class or two under your belt. I didn't have time in my schedule before
graduating so I didn't get a chance to take any of these classes. I eventually
went back because of a few reasons. A) Like you I had done a little bit of
self learning but wasn't producing anything super meaningful. B) I was
primarily interested in getting into the data side of things (more math) C) I
felt it could potentially come in handy down the line and lead to more
challenging/interesting positions. So first and foremost the question to
address is why not just figure it out on your own? These is certainly a viable
path as there are a ton of great resources on line and more every day. I think
I decided not to because I thought formal education would be a faster route.
This obviously won't hold for everyone but if I could learn what I needed to
know in a year or two vs longer with self study then I could get in a job
quicker and basically move faster. I also wasn't super confident in my ability
to create anything meaningful that would get me a job on my own. I think
another advantage of formal is there is a social aspect to it and you can
learn from your peers. If you are doing it by yourself you can meet people and
try to ask questions but it may be harder. For point B I think a masters can
make sense depending on what area you want to go into. If you want to do web
dev I say skip it. For me though the chance to learn ML techniques from
experts who study it for a living made it more appealing than trying to figure
it out myself. I know there are options and classes for an emphasis in
"software engineering" at my school but the vibe I get for those is that there
is nothing there you couldn't learn by working in the field for a few years.
So what you want to do is a pretty big factor in my opinion. As for point C
this is definitely more speculation at this point but I have theories to
suggest it is true. First being that contrary to what people want to think
about tech transcending the rules of other industries it doesn't. People are
people and still respect formal education. If there is a situation where all
things being equal you have a degree and the other person doesn't you will
have the edge. It also signals aafety for managers making hiring decisions.
They won't look as stupid if they hire someone with a masters vs someone who
self taught and it doesn't work out. I have also heard and seen people in
developer positions coming back to get their masters. So either these people
are irrational or like spending money for something they could find online.
You can certainly find programs where you aren't "60k-100k" in debt. And I
think my final thought though not rigorous is if you want to do this as a
career why would you want to invest the time and energy on something you will
plan to take up a large chunk of your waking life for the rest of your life.
You get out of life/career/etc what you put into it. Hope this helps.

~~~
spiderwebs
How did you get admitted to a Masters program without a background in CS? Most
CS departments (Masters, PhD) look for standard courses in programming and
data structures. I ask a fellow pure math degree holder with little CS
coursework. I intend to pursue a PhD in CS and enrolled as a post-bac to make
up the coursework to then apply for graduate programs.

~~~
peculiarbird
Same route. Had to take the pre reqs. Honestly it seemed more time consuming
than anything compared to higher level math courses

------
douche
If you can't write code, please flyings Spaghetti monster don't try. I've
wasted too much time trying to fix shit people have left broken

