CS Degree - Is it worth it?

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

If you can get the problem solving knowledge and experience without college, don't go. Simple as that.

Having known and worked with very capable engineers who eschewed university, my experience has been that a number of them suffer from a syndrome I term "cult programming".

Symptoms of cult programming may include:

  • Highly irregular solutions to common problems.
  • Regularly reinventing the wheel, because you aren't aware of the standard solutions.
  • A tendency to leap into implementation, without performing adequate design.
  • A tendency to leap into optimisation, without performing adequate profiling.

If you believe you may be suffering from cult programming, please consult your nearest senior engineer. If untreated, cult programming may lead to code bloat, feature creep, missed deadlines and failure to ship.

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

Advertisement

If you can get the problem solving knowledge and experience without college, don't go. Simple as that.

Having known and worked with very capable engineers who eschewed university, my experience has been that a number of them suffer from a syndrome I term "cult programming".

Symptoms of cult programming may include:

  • Highly irregular solutions to common problems.
  • Regularly reinventing the wheel, because you aren't aware of the standard solutions.
  • A tendency to leap into implementation, without performing adequate design.
  • A tendency to leap into optimisation, without performing adequate profiling.

If you believe you may be suffering from cult programming, please consult your nearest senior engineer. If untreated, cult programming may lead to code bloat, feature creep, missed deadlines and failure to ship.

I have seen lists very similar to that used to describe programmers who are recent graduates, and that aligns pretty well with what I have seen. Personally, I think it has more to do with your professional education/exposure. I count myself really fortunate that my first job was with really good engineers, and that helped me to progress from 'recent graduate' level to... well, a little better at least. And from that point I have worked with good engineers and so to steal (bastardize) from Newton, if I have seen further it is because I stand on the shoulders of giants. Or, more simply, I became a better software engineer because I worked with good engineers. College degree or not, if you end up working with crappy engineers you are unlikely to be exposed to concepts and practices that will help you to become a good engineer.

-Josh

--www.physicaluncertainty.com
--linkedin
--irc.freenode.net#gdnet

Having dealt with many bozos on forums who think snappy jokes are legitimate forms of long-term life advice, my experience has been that a number of them suffer from a syndrome I term "negative justification". People who suffer this syndrome tend to justify something they've done mainly through convincing themselves that things would have been worse had they not done it.

Symptoms include:

  • Justifying doing some action by denegrating the people who haven't done it.
  • Blaming the flaws of specific people you've met in your life on some arbitrary trait they all share, and assuming that the same flaws exist in other people who share that trait. (Ex: "engineers who have eschewed college ruin everything!")
  • Convincing yourself that all benefits from something you've done justify having done it. (Ex: Saying things like: "You can get industry contacts at school that land you a job!" As if you can't do that at conventions, conferences, club meetings, bars, and park benches)
  • Assuming, without justification, that you are currently better off for having taken some action than you would've been had you not. (Ex: "My CS Degree taught me problem solving!" As though you could not have learned problem solving as well, or better, without the degree.)

If you think you may be suffering from "negative justification" syndrome, please consult your nearest psychiatrist. If untreated, "negative justification" syndrome could lead to working a job you don't love so you can pay off debt you shouldn't have. Eventually, you may find yourself writing unnecessarily argumentative forum posts to boost your ego during coffee breaks.

Ex: Saying things like: "You can get industry contacts at school that land you a job!" As if you can't do that at conventions, conferences, club meetings, bars, and park benches

Really? Sure, you can meet people at conventions, conferences, club meetings, bars, and park benches, but I have first hand experience that university gives you great opportunities to network. No, it's not the only opportunity you'll have in life. But it can be one of the best. My most valuable contacts have all come from my schooling.

Anyway, I'm going to try to give the most unbiased opinion I can here.

Sure, you might be able to learn what you need to to be a great software developer without ever going to school. But:

  • Programming jobs these days are usually not one-man-hacking-in-the-dark kind of jobs. Most programming jobs these days are with companies that have HR. HR can be a huge pain in the butt at times, but you still have to realize your resume goes through them first before you get an interview. And HR cares about certificates, degrees, etc. Even if you (or your future boss) don't care. You might think this is dumb and not how life should be, but that doesn't change the fact that that's how it is.
  • University courses give you an opportunity to learn something from someone who has experience, face to face. You can ask questions on forums and the Internet, but nothing beats the ability to ask someone one on one, face to face. Some topics are difficult enough or uncommon enough that having one on one, face to face interaction can make all the difference in the world.
  • You'll have opportunities to do research. You may not care about doing research, but if it's something you're interested in, university is pretty much THE place to be.

I'll be the first to admit University isn't a rainbows-and-butterflies kind of place. Sure, there are some dumb hoops you might have to jump through (I almost got kicked out of school for not having 2 semesters of a foreign language). It's not super cheap, either (though if you took junior high and high school seriously enough, getting at least some kind of scholarship or financial aid should be pretty possible). And yeah, you might take a class and say "Boring! I learned this all on my own already!" But I personally think you get out of university what you put into it. Which means that if you do it right, you can get a lot out of it.

[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 ]


I almost got kicked out of school for not having 2 semesters of a foreign language

I fell about laughing when I read this - I completely tanked my final year GPA because I decided to try and cram in a year of French to qualify for a second undergraduate degree...

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

Ex: Saying things like: "You can get industry contacts at school that land you a job!" As if you can't do that at conventions, conferences, club meetings, bars, and park benches

Really? Sure, you can meet people at conventions, conferences, club meetings, bars, and park benches

True in theory. But let's face it, the vast majority of people here can't socialize productively and voluntarily without at least two drinks biggrin.png School forces you into it by group projects, clubs, etc. In all seriousness, why do so many people meet their spouses in college? It's very difficult to find that level of social interaction once you've moved out of that environment and the same goes for professional networking.

If you do choose to try and make a go without the degree, there's a few things to keep in mind IMO:

* if your school grades were good, then there's no real problem with enrolling after a few years in the work force, should you decide that the degree is a good idea after all. But it's awfully hard to go back to school psychologically and it will be much more difficult to connect socially with the people around you.

* You better be really god damned incredibly good at your craft. It is not enough to be a "good" programmer or even to be better than your peers. For this to be productive, you need to be stellar. That means a lot of work, a lot of research, a lot of DIY projects. Good software engineers with degrees AND ability AND experience are plentiful right now, so competing with that is not trivial.

* Pick up the standard textbooks for key pieces of the computer science education -- data structures, algorithms, computer architecture, operating systems, databases, etc. Know them well. This actually applies to everyone in the field regardless of background.

* Specialize. Life will be easier if you are really good at one particular thing and have the knowledge and projects to back it up.

* Understand that you will always be forced to prove more than your peers and paid less for at least a while. Some job opportunities will never call you back at all or will inexplicably skip over you. Comes with the territory.

* Interact with the rest of your peers in every way possible. Social networking (especially Twitter), conferences, meetups (IGDA etc), all of it. You need to be actively outgoing.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.

Okay, well this blew up. I'm definitely going to do a degree, especially with all the points made.

anax - An open source C++ entity system


Programming jobs these days are usually not one-man-hacking-in-the-dark kind of jobs. Most programming jobs these days are with companies that have HR. HR can be a huge pain in the butt at times, but you still have to realize your resume goes through them first before you get an interview. And HR cares about certificates, degrees, etc. Even if you (or your future boss) don't care. You might think this is dumb and not how life should be, but that doesn't change the fact that that's how it is.

This. Seriously this.

My wife works in HR and has previously worked as a recruiter. She's told me stories where applicants for a job with fantastic experience weren't even interviewed because some higher up decided they needed a degree.

Hell, you can have all the necessary experience and qualifications and still get discarded if that isn't clear enough on your application.

if you think programming is like sex, you probably haven't done much of either.-------------- - capn_midnight


Programming jobs these days are usually not one-man-hacking-in-the-dark kind of jobs. Most programming jobs these days are with companies that have HR. HR can be a huge pain in the butt at times, but you still have to realize your resume goes through them first before you get an interview. And HR cares about certificates, degrees, etc. Even if you (or your future boss) don't care. You might think this is dumb and not how life should be, but that doesn't change the fact that that's how it is.

This. Seriously this.

My wife works in HR and has previously worked as a recruiter. She's told me stories where applicants for a job with fantastic experience weren't even interviewed because some higher up decided they needed a degree.

Hell, you can have all the necessary experience and qualifications and still get discarded if that isn't clear enough on your application.

I do not work in HR, but I do see a lot of resumes that have been vetted through HR departments.

Usually if we have a job opening, we may get a thousand or two thousand applicants for the job, and usually about 300-400 of those resume's end up on my desk at some point.

At that point you just need to find a way to sort through and discard resumes. There are a lot of techniques for this, but here's a list of things that tend to get me to chuck your resume:

  • Colored paper - Automatic discard. If its not on white copy paper, or high quality white paper, I'm not even going to bother looking at it. Nevertheless, I still get resume's on the occasion that are printed on tan, or other colored paper.
  • Too many pages - Three is about the maximum number of pages I'll allow, if you have more than three pages on your resume then I'm probably going to toss it. Not because the information on those pages might not be important, but because its probably a fairly generic resume listing experience and jobs taken for things that I honestly am not hiring you for. It also is usually a lot of filler material that could have been omitted in favor of more meat.
  • Pages that are too blank - On the opposite end, people who have a two page resume, and one page is half or more empty? Chances are I'm not going to bother looking. If you're going to have a two page resume it needs to be TWO PAGES. That the second page needs to be at least 3/4 full. If you have less experience or content for two full pages, don't have a two page resume.
  • Font, font-size and spacing - Oh god, the number of resume's I've seen that are double spaced size 14 comic sans... Seriously, your resume should be either single or 1.5 spaced in Times New Roman. Arial or Calibri are acceptable too. As for font size, not too small, not too large. 11pt Calibri is pretty good.
  • Hand drawn UML, and written code. Color coded code. Any type of embedded examples
    I swear to god. Someone once sent in a resume that went through HR and landed on my desk. The first two pages were pretty good, the remaining 15 pages were printed source files. Don't do this.
  • No cover letter - This one may or may not break the pile... Depending on how many resume's I'm left with after applying the above filtering I may start to chuck those that are lacking in cover letters, and of those that remain, I READ the cover letter and discard the "form" letters. Form cover letters will almost ALWAYS get you chucked into the discard pile. Sorry, but if you cannot put in the effort to write me an actual cover letter, I'm not going to put in the effort to vet your resume and interview you.
  • Do you have a degree?
    This one may or may not get used, depending on the resulting pile from all the other filters. I don't view WHAT degree you have as being important. I view you HAVING a degree as being important. Having a degree does not mean you know jack diddly about your field. What it does mean is that you have the wherewithal to stick around doing a lot of work for something for four years for few immediate rewards. I.e. Dedication. That means if I put you on a project, you'll probably be able to stick through with it to the end.

    I can TEACH you anything you need to know, so having a degree doesn't mean you know anything. Most CS graduates are TERRIBLE programmers out of college. Why? Because most CS programs do not have you PROGRAM. You instead study and practice THEORY. But, at the same time, having that theory backing you is important for a lot of the work I tend to be doing. People who make claims like "you can learn graph theory on your own" or nonsense like that are wrong. You can attempt to, and might even succeed at having a "decent" understanding of graph theory, but without a third party to verify your answers you've not proven you've learned anything except perhaps how to do something wrong. EECS students tend to come out with a lot better programming skills than their CS counterparts as they tend to write more code, but they lack in other areas. So, as I mentioned above, what degree you have doesn't really matter.

    Work experience doesn't really count in place of a degree unless you've been in the industry for a decade or more. If you've got 3 years of "programming" experience from "Best Buy" I'm probably not going to bother interviewing you :)
  • Portfolio
    Your portfolio matters. Not only do I want to see your source, but your formatting matters, your statement of purpose matters, your documentation (both inline and external) of your code matters. If you have a website that you link on your resume, I expect to find relevant samples of your work on or trivially linked from that website. If I have to hunt your website to find your samples, I'm not going to bother. So either setup a dedicated part of the site that your resume links to, or make your website your portfolio.

    Now, if you've got professional experience, then not providing source is probably a good idea, but I still expect you to link to those things you worked on, and I still want to see samples of YOUR WORK. That means stuff you wrote on your own, projects of your own. Not just "oh yes, I did this and that and that other thing I linked to." because you know what, I can link to anything I want too.

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.

I worked as a web developer for 6 months before going to uni.

I decided to go to uni (Computer Science) in semester 2 and caught up to people by doing summer school and extra papers, eventually i managed to finish my degree in 2.5 years :)

I was in a similar situation to you, it felt very easy at first but it quickly picks up. It was good because i had the option of taking on a higher workload and progressing quicker. You'll have an easy A+ for a while until things get harder around year 2-3.

For me after finishing uni with ~30k of debt in 2012, university has already been and always was, well worth it.

I went to uni at The University of Auckland, New Zealand. Other Good uni's in Aus are similar i believe.

You certainly can work while you study, i got an internship after my second year for 3 months, a 5k scholarship from the company for my last year and worked at the university teaching for about 12 hours a week in my final year which all really helped me get through it :).

There are some very real benefits of university which others have mentioned, it gives you time to work on things you want and gives you a huge network of friends which will help you through your career/life and heaps of other stuff.

I would recommend that if you choose uni go with a more flexible course like CS because it gives you more freedom to avoid dull subjects/lecturers and move into doing things you like, i wouldn't want to do the general first year of Software ENG but thats just me.

Lee Penkman

Addicting Word Games

Word Smashing

This topic is closed to new replies.

Advertisement