Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You may be "right" in theory, but it doesn't matter.

The vast majority of computer science students pursue a CS degree because it has become a prerequisite for being a professional software engineer. NOT because they have a desire to become a computer scientist.

The simple fact is that if you do not have a 4-year college degree you will find it immensely harder to work as a software engineer in the industry. It's silly to pretend otherwise.

The vast majority of today's CS programs do a disservice to all of their students. They are neither good engineering programs training students for industry (for which they currently serve as a proxy) nor good computer science programs. A recently minted graduate of a Chemistry or Physics program (from an accredited US 4-year college program) is, on average, much more versed in the relevant scientific findings and research techniques of their field than a CS graduate. They are so poor precisely because the vast majority of CS graduates do not go on to do CS research or utilize their CS knowledge but instead become software engineers.



> The vast majority of computer science students pursue a CS degree because it has become a prerequisite for being a professional software engineer.

I don't know if things are different outside of Canada, but isn't this precisely what a computer engineering or software engineering diploma is for? That's what I'm doing and it's definitely different from CS - very applied, a lot of low-level programming (assembly, VHDL, embedded C), making a game with Java calling C++, source control is always used, etc.


In my experience, Computer Engineering is a combination of EE and CS, producing someone equally capable (assuming equal interest) of writing low level systems and designing logic circuits.

Software Engineering is more of what Joel is describing, and more schools are starting to offer it as a major, with as much focus going to various project management methodologies as algorithms and data structures.


Things are different outside Canada, specifically in the U.S.. I've found in the U.S. that there are vastly inconsistent definitions for the different programs. In Canada you tend to have Computer Engineers who study in a real engineering program. Some schools may split this into Computer Engineering (emphasis on hardware) and Software Engineering (emphasis on software). Then you have Computer Scientists that range from "Software Engineers" -- in quotes because it's not a real engineering degree but a science one. They study lots of programming, more math than other CS students, as well as processes. On the other end of the spectrum areManagement and Information Technologists that do less programming, less rigorous math, but more business and management education. Having had to interview candidates that have CS degrees from schools all over the world (Canada, Cuba, Russia, the U.S.) I've found that for some reason the U.S. has a weird sort of wild west situation with respect to computer science. Students in community colleges who take one course in Java consider themselves to be studying computer science the same way a student at a top notch program in a place like Stanford would. Here in Canada if a student is studying programming at a community college they're more likely to declare themselves as studying just that, "programming" or "IT".


Answers my question - in Quebec, the title "engineer" has quite a few requirements, mainly having an engineering degree and passing an exam. Hence my confusion with the text: here, a CS graduate could not call himself a "professional software engineer".


While I mostly agree with your point, the phrase "Infinitely harder" is a bit of a stretch. I've worked with many professional software engineers without CS degrees, and even many professional software engineers without 4-year degrees at all.

Personally, I was already a programmer when I took my first University CS courses and realized quickly that while I love programming, CS isn't where my interests lie. I took the CS courses that were most relevant and wound up getting a business degree.

I do wish there were more programs available serving the middle ground between the v-school ghetto and the ivory tower.


Good point, "infinitely" is a bit hyperbolic, "immensely" fits better, I think.

I agree, it is possible to be a professional software engineer without a CS degree (some of the best fit that category), but that's a non-traditional road. More to the point, it's exceedingly rare for someone to intentionally avoid earning a CS degree if they plan, prior to attending college, to become a software developer.


I don't have a degree and I've never had a problem getting multiple job offers when I've been on the market. I've held some very high posts as well. I think people use the degree as a road sign or indicator of possible quality, among other indicators, to come to a hiring decision. When the candidate is demonstrably talented, the degree becomes worthless (not negative, but just not contributing to the decision anymore).


I've personally found that people who got into programming before the dotCom boom don't need to worry about a lack of degree, people who got in after absolutely need a degree.


I suspect it's pretty easy to get job offers when you are demonstratively better than 99% of your peers, degree or no. That doesn't mean your average programmer can find a job without a CS degree...


If you have a solid track record in the industry then you don't need a degree. But if you're a wet behind the ears programmer-to-be with no prior job experience then you'll be in a bad position. Exceptional, naturally gifted software engineers in such a position can manage to get by through demonstrating their talent in some way (e.g. contribution to a major open source project, perhaps), but the average developer is at a severe disadvantage compared to his degree holding cohorts.


   >  ...nor good computer science programs.
This may well be true, and that is pretty unfortunate.

But, frankly, if all you want a job developing software, I'd suggest interning instead of getting a degree. You'll certainly be more qualified than your peers for most jobs four years on.

And, for what it's worth, I'm currently hiring for a Jr Developer. I want someone smart who we can train. A CS degree wouldn't hurt, but it's certainly not a prerequisite.


I don't have a CS degree (or any degree for that matter) and have been programming professionally for 3.5-4 years, 13 total. I never interned, but I spent a lot of time as a child/HS student writing code independently and working for a few open source projects. That got my foot in the door but until recently, it was rough finding work.

Any (career?) suggestions in general? I have a strong background in CS (I made prodigious use of ocw.mit.edu), and I feel competent at a practical level.

At this point, I'm just trying to pick a particular language to master while learning something esoteric on the side.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: