

Ask HN: Minor vs Major in CS - MaxGabriel

I hear all the time on HN about people succeeding in programming without a CS degree, but that's only recently become a reality for me. I realized I wanted to major in CS in my sophomore year, and I've been taking CS courses since then. Unfortunately, because of the lack of course offerings and prerequisites, the only courses available have been Introduction to Programming and CS 1 (and CS2 this semester). Because of this, finishing a major in CS in by the end of my senior year will be almost, if not entirely, impossible (not from a difficulty standpoint--the classes just won't be offered), which is when my four-year debate full ride runs out.<p>Should I stay an extra year/semester and get a major in CS, or get a minor in CS instead?<p>If my fifth year was free as well, should I finish the major?
======
johnkchow
It really depends on your work ethic and mentality towards doing extra work.
In order to become fully prepared after college, you need to have a) a deep
passion for programming (i.e. personal programming projects), b) great work
ethic to continually learn new things (i.e. tools, languages, etc), and c) the
ability to search out fellow programmers and get help. If you're confident in
the things I've mentioned before, then regardless of what degree you graduate
with you'll be fine.

However, if you're not sure which industry you want to work in, not mature
enough to learn and program on your own, or even if you're unsure about
whether you can handle the class workload, I say bite the bullet and take the
5th year. I graduated class of 2010 after 5 years, and I have to say that if
it wasn't for that extra 5th year I wouldn't have matured enough and been
prepared mentally or emotionally for those job interviews and the working
lifestyle after college.

Additionally, all the classes definitely provide some value to you, even
though it's not obvious at first. For example, I took a compiler class in my
5th year because I was interested in how a language is constructed and then
broken down into low level code. Although I never work on low level
programming (I do server engineering with Ruby on Rails), the exposure of
compilers and language grammar helped me understand how Ruby conceptually
differs from other languages and why Ruby is better (or worse) than other
languages in certain situations.

So in conclusion, if you're determined and know where you want to be 3 years
from now, don't worry about whether you graduate in 4 years or not. However,
if you're unsure about the things mentioned above, consider the 5th year
without worrying yourself about the money. As a programmer, you'll do just
fine financially.

------
justinludwig
Any company worth working for will value material, real-world experience over
an academic degree. You'd be much more likely to get a job at that kind of
company if you dedicated your 'fifth year' to working on an established open-
source project, rather than finishing up a major in CS. After a year of
working on an open-source project, you'd have a trail of patches and bug
reports demonstrating your programming competence, and hopefully you'd also
have established enough rapport with one or two of the project leads to use
them as references (and probably also for job leads).

If your fifth year at school really is free, and you're enjoying the college
experience, then there's no harm in spending another year there. You will
learn a few things in your upper-level CS classes that you'll use at some
point in your programming career. But there's nothing you can learn in any of
your CS classes that you can't learn on your own outside of the classroom. The
only real value of a CS education at a brick-and-motor university is a) being
immersed in a community of academic pursuit and discourse, and b) the alumni
connections. And you don't get much value from those things just by attending
classes -- you have to go out and pursue those relationships with your
professors, classmates, and alumni.

------
larsberg
All depends on how you plan to get that first job. If you already have a
company lined up, are planning on joining a startup, or are using the alumni
network at your university, you should be fine. But, if you're going through
your university's placement office or planning to resume-apply, the lack of a
full major will really hurt your job chances.

If it was free, definitely stay and do it. You will learn the most interesting
things in that last year, particularly if you fill your CS electives by
volunteering to work on a professor's research project.

It sounds like you are going to do so anyway, but strongly consider asking the
scholarship provider for an extension. If you have a reason, many of them have
a relatively simple form and approval process (at least, the corporate one I'm
most familiar with -- MSFT's 4-year full ride had basically a rubber-stamp
extension).

------
danielshipton
For me personally, I found the first two years of my computer science degree
to be focused on the "how" of computer science. Getting the basics down so we
could move on to the "why." Years three and four was where I truly came to
appreciate computer science. Algorithms, discrete math and lots of applied
theory are the cornerstones of what I use today, all of which came in the
later years. With that said, if you can front load most of the later classes
earlier, a minor could prove just as valuable.

------
rickdale
Do a 5th year. Study/Major in Computer Science. Maybe you can do honors?

