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

This touches on several issues.

1. Should college teach you to program?

This is a philosophical question about whether a CS degree should be educational or vocational. The general consensus seems to be that it should be the former not the latter. It should give you the theoretical foundation that you can apply to almost anything.

Therefore, college won't necessarily teach you any programming beyond what you need to read examples and do assignments, which may not be particularly deep.

2. Do you like to program?

Frankly, every good programmer I know started programming long before they went to college or at least programmed outside of college for their enjoyment.

If you haven't done that and don't do that then I really have to question if you're in the right profession.

3. Programming vs Being a Programmer.

Being a programmer as a job for which you are paid is different to programming. It involves many other skills such as design, reviews, dealing with people, writing documentation, supporting applications and so on. This is not something taught in school (nor could it be really).

I view the first 2-3 years of your work life as an apprenticeship of sorts. You've got the basic theory, now you have to go out into the real world and make yourself useful to somebody.

Many companies have graduate programs and the like. I think it's fairly important to start off somewhere that's good, meaning they'll teach you something (rather than simply crushing you, which, sadly, is more the norm).

If you can put in 2-3 years at, say, Google, Facebook or Apple after doing a good CS course, you'll have gotten yourself off to a very good start.



1. Should college teach you to program? This is a philosophical question about whether a CS degree should be educational or vocational. The general consensus seems to be that it should be the former not the latter. It should give you the theoretical foundation that you can apply to almost anything. Therefore, college won't necessarily teach you any programming beyond what you need to read examples and do assignments, which may not be particularly deep.

I personally think that's a problem. There is nothing wrong with being educational in your sense of the term, but I do think people with a degree in CS should be expected to know how to program.

Not expecting a CS alumnus to be a programmer is like having an architect not know how to draw buildings, or a surgeon not know how to wield a scalpel.

Sure, the degree should absolutely teach you more than just programming, but there is no value in being a CS grad without knowing how to program. It's sort of the low level toolkit that you absolutely must be proficient in to being with.

A strange thing about CS education is that we have all these people studying Computer Science or even Software Engineering without ever looking at a significant piece of software. You learns lots of small examples and lots of theoretical bits, but as far as I can see most programs never take a look at, say, the Apache webserver and explain how all these small things come together to produce a successful piece of software. That's really a pity.


Not expecting a CS alumnus to be a programmer is like having an architect not know how to draw buildings, or a surgeon not know how to wield a scalpel.

You do realize that with both professions you noted there is usually an apprenticeship time (internship/residency) -- and also in both professions you must licensed (in architecture typically after your internship and in medicine before the residency).

I do disagree though that there is no value in not being able to program. The main contribution of CS is not programming. It is in the theory of computation. I really do view programming as purely incidental.

You wouldn't expect a mechanical engineer to know how to repair a 2011 Ford Focus. They'll konw the basic ideas under the hood, but all of the technoogy specific aspects of it shouldn't be taught.


What you want is a different program. Call it software engineering. I agree that too many people seek CS degrees, but that is not a good reason to change CS into something that it is not.


Difference between Computer Science and Computer Programmer. I'm sure there are colleges that teach Computer Programming.


"Frankly, every good programmer I know started programming long before they went to college or at least programmed outside of college for their enjoyment. If you haven't done that and don't do that then I really have to question if you're in the right profession."

This scared me in college, since I hardly programmed before (or even during) my degree. However, I've found that it's simply not true. Not just for myself, but for the many people I've met who started with completely different careers before getting into programming.


Everyone you know knew how to program before college? Just curious: A. Were you born after 1990? B. Is nobody you know from even a slightly disadvantaged background?


I got into programming partly because I didn't have a lot of money. My parents were smart enough to recognize that having at least one computer in the household was incredibly important, but that one computer happened to be a good decade out of date. One of those "I saw this at a yardsale and picked it up for $50s" deals", the type of machine I use as personal mailservers/spaceheaters these days... I sure couldn't game on it, so besides using it for word processing and research, I learned how to program on it. I grew sick of win95, and nothing else would run on it, so I learned how to put linux on it and use that.

Anyway, my point is this: My current machine I do most of my work on has 64 GB of ram and 32 cores, but you absolutely can get into computing with the kind of money you can earn on a weekend mowing lawns.

(And yes, I was born before 1990. Not everyone in college knew how to program already, but all the kids who made it through the weedout courses sure did...)


I lived in BFE, Idaho until college and didn't have access to a PC most of my time there, and unfortunately, I had access to zero programmers. My introduction to programming concepts was made through trying to figure out and modify crappy JavaScript snippets on websites in 1999 over a 33.6K connection.

When I entered college, I was surprised that most of my classmates have had broadband connections and better computers for years, but never bothered to do much more than receive email with them.


Well, good stuff. :) I didn't have access to a pc before uni (1998); I just ate the material up and practically memorised Deitel & Deitel's c++. I worked for so little cash programming through summer I suffered from malnutrition. I don't even know if I was natural - I just banged my head against the wall until it fell down. It really is rather rewarding :D.


You're responding to the quote of the comment I responded to. I've met many people who started programming late, that was my point.


d'oh.


"Frankly, every good programmer I know started programming long before they went to college or at least programmed outside of college for their enjoyment. If you haven't done that and don't do that then I really have to question if you're in the right profession."

Do you apply those standards to everyone, or just to programmers? If only programmers, why?


I personally don't know of any surgeons who performed surgery before going to medical school or outside of medical school for enjoyment.


Medicine is one class of skill.

However, there are others in the same vein as programming:

  * fine arts (drawing, painting)
  * music 
  * football and other sports
  * creative writing
I'd guess that any student majoring in the above fields already possessed basic (or even advanced) skills before entering the university.

On the other side, there are fields that are more "professional", where students only begin learning these disciplines at college:

  * medicine
  * psychology
  * economics
  * law
Obviously, students are exposed to concepts before college, but they wait until they get the professional credential before doing surgery, filing lawsuits, prescribing antidepressants, or raising interest rates.


Medicine has a much more rigorous training program.


Same goes for other more common disciplines too, especially the engineering disciplines. How many people were building bridges, designing buildings, or creating CPUs before their formal education?

The engineering-ish side of CS (programming) is far more similar to the sciences (physics, chemistry) or mathematics than other engineering disciplines are because anyone with drive can and does delve into it without the help/permission of formal educators.

This is to say nothing of the fact that real CS is a branch of mathematics...


The "do you like to program" and "programming vs. being a programmer" are really good points.

We recently hired and then let go of a guy who is doing a CS degree, good grades, competes in ACM tournaments, so he was really sexy as a junior programmer. It turned out he doesn't really like to program, he's not a programmer. The way this materialized was when given an assignment, he wasn't willing to proactively figure out how to solve it. We either told him in great detail how to solve it or he'd throw up his arms.

This happened in 9 out of 10 cases, whether it was a really small (1 hour) or a larger (multi-month) assignment. After two months of this we let him go.




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

Search: