CS Degree - Is it worth it?

Started by
53 comments, last by assainator 10 years, 7 months ago

Two years ago, I was in your shoes. I'm 21 now. There are two things you must think about when making this decision:

1. Is the school you're going to a "CS School"?

2. Are you confident enough in your abilities to not get a degree?

If the answer to 1 is "No," then no. Don't even bother. Especially if their CS department is small. The stress of dealing with subpar professors, and unenthusiastic students who barely remember the difference between << and >> will kill your enthusiasm for programming. Don't do it to yourself.

2 is there because, honestly, you don't need college for anything but help. Classes, professors and classmates won't make you better or worse. But they can push you in a certain direction (as mentioned above). Classes on any subject are only helpful if you weren't going to study the subject on your own as intensively. Otherwise, the school system's one-size-fits-all process will just slow you down. So think about it: Summer just ended--what were you doing? If you, say, started studying a topic that'd be covered in a CS degree (Algorithms, Programming Languages, Object-Oriented Design Patterns), or worked on a big project (even if you didn't completely finish it), then you probably don't need to go to school--you've got the enthusiasm and the internet. If you watched Let's Plays and screwed around not getting much done, a degree program with mentors, and a community of kids who share the same interest, might help you stay focused. Only if the answer to 1 is "yes".

The BIG takeaway:

At this point in my university career, I see more clearly than ever that if you want to improve yourself you need three things above all: Motivation, a mentor, and a community. It's hard to become a great Computer Scientist/Programmer without detailed, catered feedback from someone who already is one. It's challenging to keep focused when every time a friend calls you up, it's to talk about games they're playing rather than coding. It's impossible to improve without having the desire within yourself to sit down alone in front of a computer and debug code you're sure should be working perfectly. For hours. You have to supply the Motivation. But if the school can't supply you the other two, then it's not worth 4 years of a life you'll only live once, and potentially thousands in debt--something that can ruin you. Don't make the common choice; make the smart choice.

Good luck, and have fun.

Advertisement

In the first 2 years of my degree, that means 12 courses, around 4 were about programming.

The progression was:

learning algorithms and control structures -> learning basic data structures and pseudocode ->
learning advanced data structures and put all of that in a programming language -> shift to object oriented programming and patterns.

So the "programming" part isn't that intensive at all, and you lightly touch over programming languages. Its pretty much the big elephant in the room that you're supposed to learn to progress anyway.

Now the other 8 courses dealt with algebra, function analysis, statistics, logic and boolean algebra, assembly, logic gates and low level workings of CPUs, system/organization analysis and database design and normalization.

And still all of those subjects are pretty much introductory, you're not going to skillfully use SSE intrinsics in your codebase after an assembly course, you're not going to understand everything inside the CPU after a few classes on logic gates and basic circuits, you're not going to properly make a big database after just learning small normalization and what a schema is. It is a very "broadener" of knowledge, it can open your mind to many, many applications that computing in general can have.

I consider it a good experience.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

It really depends on you: how you learn, and what you want to do in life (I'm going to assume that you are indeed talented at programming).

You get out of college what you put into it - if you aren't well suited to college (either the learning style or the life style), then you may be better off not going to college. A talented individual can always wrangle one's way into an internship, and with a little work experience under the belt, many of the same doors open up.

If on the other hand you thrive in college, it is absolutely invaluable. A computer science degree will make you a better engineer, and above all, a broad liberal arts education will help you become a better human being. And the mo0ney you spend obtaining that degree is a small amount in the long run of engineering salaries...

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

I am in the exact situation that you are in. I am 18 and I have been programming since I was 10. This year I have got an internship at a company programming for them over the summer and now they have decided they want to keep me. So what I am doing is taking the year off and deciding what I want to do for school. In this time I think I will program another game or two and release them and see if that kicks off...I would really like to be able to make it as an indie developer. Anyway I think I have decided to go into school and take some classes in business cause if you are as experienced as it sounds then you will not get that much out of computer science anyways...I mean I am constantly debugging the other programmers slow code at my work to make our software actually run nicely.

I actually think you will learn something from it as now you are just going on past experience but you can't scientifically justify why an algorithm works the way it does. This is something a CS degree should teach you. Other than that learning about proper data structure and algorithm design is extremely useful.

It's the things besides programming that a uni teaches you that can help you out, I had hardware logic designs as part of my first year program. This seemed completely useless at first up untill you reach the course operating systems and all of that stuff becomes important again as it explained how memory worked in hardware, how addressing of memory works in hardware.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

Philip Greenspun is an MIT professor of software engineering / computer science and electrical engineering. He has many good ideas about what an excellent engineering and computer science program should contain. I really wish I knew about his advice before I entered college. While I did receive a good education, I really thought it could have been better.

Here is a link to his software engineering teaching page: http://philip.greenspun.com/teaching/ Check the links under the 'Background' section.

It's pretty good advice for when/if you look for a college/university program. One thing that really struck me with his approach is that theory is something really left to the student (not to say that it won't be covered). It's more or less something you'll pick up in the course of doing project after project. And that's really the basis for his argument: the workforce expects you to complete, from beginning to end, projects. Getting requirements, continuous and clear communication with all parties involved, knowledge of tools and usage, et. al. He feels a good education will have you completing your >20 or 30 projects, so that by the time you enter the workforce, instead of having only a few, if any, under your belt this very next project is number 21 or 31.

He also has a biting commentary about his attendance at a "typical" non-project, theory only course. That's worth a read. I also really like his ideas about having no summer breaks. You aim to complete your degree in 3 years or less. Think about it. College is pretty expensive! You want to be able to start paying off loans ASAP. Why wait 4 years?

Anyways, I could go on!

My junior and senior years at college did have a decent mix of hands on projects under a non-Philip Greenspun curriculum. I had to make an OS, an Ada compiler, a motherboard computer system with small OS using a Motorola 68000 (yes, showing my age) -- that was with wire-wrapping no less, yeesh!

As a skilled programmer without a degree (yet), let me say in no uncertain terms: get a degree.

Even if you can _do_ the job, getting that first job is tons easier with a degree. HR departments (and most hiring managers) will hire a candidate with a degree over one without. And even when you do get a job, you'll get paid far less than a "more qualified" candidate.

And really, why would you *choose* to slave away 40 hours a week rather than spending 4 years hanging out with uninhibited coeds?

As a skilled programmer without a degree (yet), let me say in no uncertain terms: get a degree.

Even if you can _do_ the job, getting that first job is tons easier with a degree. HR departments (and most hiring managers) will hire a candidate with a degree over one without. And even when you do get a job, you'll get paid far less than a "more qualified" candidate.

And really, why would you *choose* to slave away 40 hours a week rather than spending 4 years hanging out with uninhibited coeds?

Uninhibited coeds tend to have an inverse financial effect when compared to employment.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

As a skilled programmer without a degree (yet), let me say in no uncertain terms: get a degree.
Even if you can _do_ the job, getting that first job is tons easier with a degree. HR departments (and most hiring managers) will hire a candidate with a degree over one without. And even when you do get a job, you'll get paid far less than a "more qualified" candidate.
And really, why would you *choose* to slave away 40 hours a week rather than spending 4 years hanging out with uninhibited coeds?


Uninhibited coeds tend to have an inverse financial effect when compared to employment.

I have lost somewhere around $25-30k *per year* over the past 15 years by making less than my degree'd peers. And that doesn't include the 15 months I spent unemployed because nobody would hire a non-degree'd computer programmer with no formal experience.

Not getting a degree is absurdly more expensive than even today's universities.
Yes. You SHOULD get a degree. Be it a CS degree, an EECS degree, or even an English degree. Any degree is always better than no degree.

There are a lot of reasons for why you should have a degree, but here's a few:
1. It shows you are able to commit to a project (getting your degree) for years on end. As an employer I'll often have projects that go on for many years and will require dedicated people to complete.
2. You will learn many things that are difficult or simply unlikely to learn outside of getting a degree. In the CS/EECS case you get all the theory that goes along with the practical. It is important to note that CS is much more theory oriented than EECS. EECS will have much more implementation side of things. Things you might end up learning include: Graph theory, set theory, complexity theory, combinatorics! All of these you COULD learn on your own, however its hard to correct mistaken assumptions and/or errors in your reasoning without someone else checking it for you (i.e. homework, quizzes, etc.)
3. It looks good on a resume.

Frankly, as an employer who gets to see lots of resumes... if two resumes cross my desk, each with similar portfolios but one has a CS degree and one doesn't, I'll take the CS candidate. Even if I did take the one without, I wouldn't pay that person as much as the person with the degree... because I don't have to. Any degree increases your income level, and that increase more than pays for the few years of learning and socialization you will undergo at a college.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

Adding to the list of reasons why you should get a degree: connections.

If I had never gone to school, I never would have made the connections that have led me to where I am (not that I'm in some super high-up position, but I've had some cool opportunities). By going through school, you'll connect with professors, peers, and others which very well may open up a lot of doors (in addition to the extra doors a degree/education will open).

[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]

This topic is closed to new replies.

Advertisement