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

While I'm just one data point, I was a history major, and I've been programming since I was six. I already knew C, C++* , Perl, Python, and small bits of other stuff, and majoring in CS to learn Java didn't seem appealing. I majored in history (with a focus on history of science and medicine) and continued teaching myself on the side.

While majoring in CS correlates with previous programming experience, it isn't an absolute indicator. College is probably too late to learn the fundamental techniques and mindset of programming, anyway.

* Inasmuch as anybody can really know C++...



Huh. I first learned programming as an undergrad. Why do you think it is too late?

[Edit] Anyway, I think that depends on whether said CS major applied himself in college, don't you? I do have friends who graduated out of CS (well, actually we were in CE, but it's close enough) without knowing, or later forgetting, the difference between a class and a function (true story, that. he asked me that question about a year after working in the industry as a "consultant". the bugger works in a big IT consulting firm you've probably heard of). On the other hand, I discovered programming in university, got interested, and kept pushing. I don't claim to be a programming god or anything, but I do at least know how to do fizzbuzz. :)

It also depends on what sort of programming you're doing. If you're talking about typical web apps, then yes, I would agree with you that experience rules. Knowledge of the tools used in that trade are more important than anything a CS course could teach you. However, let's say you do crypto, or write 3D animation software, or any serious number-crunching/algorithmic app. That's an entirely different ball game. I'm sure there are hackers out there who are autodidacts in advanced algorithms, but CS training helps.

Should have made this shorter. In summary, it's never too late and formal CS training helps (if you have interest).


It's not impossible - many older hackers learned to program in college because computers were inaccessible to the public - but the people who haven't tried to learn on their own are years behind, and (perhaps worse) less curious/motivated/used to teaching themselves.


However, let's say you do crypto, or write 3D animation software, or any serious number-crunching/algorithmic app. That's an entirely different ball game. I'm sure there are hackers out there who are autodidacts in advanced algorithms, but CS training helps.

Hmmm, I got nothing. That was perfectly said; I agree completely. I am actually a huge proponent of a CS degree simply for the algorithms and data structures courses. You don't want to know how many times I have seen people doing linear search on a large set of sorted data because they were never paying attention when they got taught binary search.

I am actually a CS/physics major, so I would say that a degree is extremely useful for many of the things that I've seen. One of my projects was writing an elementary OpenGL physics engine that offloaded most of its processing to the graphics card. I can't tell you how much my computer architecture and physics modeling courses helped with this.


You make it sounds as if children need to be indoctrinated into programming. Maybe you are suffering from bias and are clouding your judgment?

Unless you really think it is too late for someone to learn programming starting at the college level. People can learn quantum/high energy/particle/etc. physics or <choose your own advanced field> starting at the college level with no previous experience. Is programming really that hard or is it more a matter of time needed to be invested studying/working becoming better?


Is programming really that hard or is it more a matter of time needed to be invested studying/working becoming better?

It's really a matter of time invested. I should probably take that back about self-trained programmers being better. Instead, what I should say is that self trained programmers are "usually" more interested in programming, which is why they started teaching themselves. If you like programming you will do it a lot, especially outside of class, and that will give you a lot more experience very quickly. On the other hand, I have a number of friends who just started programming in college. Some of these quickly became enamored and did as much outside of class as I do. Although they started behind, I have no qualms that they are as good in a couple years as those who taught themselves. Also, be careful with my statement -- I never said that those who started programming in college will never be as good as those didn't. Instead, my point was that, right out of college, many people will only have 4 years experience (mostly in classwork). In contrast, I am one of a group of people that I know that had contributed to a number of large open source projects and other things (like kernel hacking) before college even started. I'm sure that the smart people who major in CS will have no trouble with doing that in a couple years time, but I'm hesitant to say that 4 years of teaching assignments actually prepare you for programming in industry.


"Indoctrinated" has strong, inappropriate connotations.

If it's anything beyond the sheer amount of time, it's that 1) people who don't teach themselves will probably be at a disadvantage given how much new material regularly needs to be learned, and 2) there is likely a window during which time picking up new skills is easier. Learning programming is probably analogous to learning a musical instrument, a new language, etc., in that people seem to pick things up more quickly if they start while fairly young. While learning a new API or something once you've been programming for a while is largely a matter of time, but there are Big Ideas that need to be learned upfront. I didn't mean to imply that it's impossible to learn them, just that it's harder.


I agree that learning takes place at a faster rate during childhood and that the non-autodidact will be at a disadvantage, especially in programming.

That said, my main disagreement was with your comment, College is probably too late to learn the fundamental techniques and mindset of programming - this was very reminiscent of the dialogue many religious groups will say about instilling church fundamentals, hence the reason I used the word 'indoctrinated', along with its connotations. As for the mindset of programming, there are many fields who are surprisingly close to the needed mindset, and still, it may be largely a personal matter in as much as some person will have the needed mindset no matter the field they choose.

I certainly have no argument over the amount of time needed to learn programming, and definitely agree that starting in college is much more difficult. It is just that I have been impressed by late learners to programming who came from other fields (mathematics/physics/economics being some of the best to draw from), and as such I can not underestimate the ability of another who came to programming later in life.


FWIW, both here and below I rewrote a paragraph several times about the analytical mindset overlapping with several other fields. I never found a wording I liked, so I cut it.

Have a nice weekend.




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

Search: