We don't expect law students to have been amateur lawyers in high school; it's a bonus if they have been in the debate society or have taken a personal interest in the subject, but it's not necessary. I don't see why CS should be a special case, aside from a misplaced attitude of exclusionary elitism.
If you can afford a video game console, you can afford a raspberry pi (or equivalent.)
> We don't expect law students to have been amateur lawyers in high school
No, but we expect math majors to have done some math before they get to college.
I don't disagree with you that most people can be brought up to speed in less than a year, but it's also not unreasonable to expect first year CS students to have had some programming experience. Computers don't cost thousands of dollars anymore.
Right. This type of democratization is EXACTLY what allowed me to climb the social ladder out of the rural midwest into a Top 15 university and then Silicon Valley. As a teenager, all I needed to teach myself coding and advanced math was free time and an Internet connection.
If you are a boy, video game console is something that is bought for you often times whether you really want it or not. Raspberry pi is likely not and you don't know it exists. And even if you know it exists, you need computer to upload code to it and then you could have just use that computer to code. I know that it is easy to code when you know where to look, but the biggest hurdle is that many kids dont know where to look. Instead, they are told there is something magical and hard about it.
I remember being told that it is hard or that I cant compete because I am (presumably) just learning and other kids "already know a lot". It was bs, but that is where it is for many kids.
Seriously, I knew straight A students who were more hardworking then me and had good grades in math (meaning no dummies memorizing stuff) were under impression I have some special brain because I can program. All the myths around cs tend reinforce such nonsense.
If a kid can't type "how do computers work" in google, they probably won't become a programmer. Are we really wringing our hands over that?
> All the myths around cs tend reinforce such nonsense.
There's another bit of nonsense around CS that a lot of people here believe - that there are all these secretly good programmers out there who just don't know they're programmers because no one ever told them how to start, and that they might not even know what programming is because it's so difficult to get started.
I find it nearly impossible to believe that there are all these smart people out there, surrounded by technology, with hacking and computers in every TV show, with the President telling them to "learn how to code", Bill Gates' name dropped by rappers, Google in everyones' pocket - and no one is typing "how does my smartphone/videogame/internet work" and reading the results?
Like, who is still walking around like, "I got good grades in school and knew people could become doctors, but I didn't know people could make computers go! Why didn't anyone tell me?!"
Are there other problems keeping people from breaking into the industry? Absolutely. Is "not knowing where to look" one of them? There's no way that it can be, not anymore.
If a kid cant type "how human body works" in google, they probably won't become a biologists. Somehow, being constantly surrounded by all those bodies and dogs and grass they did not learned biology. Except that they come to college and do learn. But realistically, "how do computers work" is such a broad question that it does not have to do with anything. It is literally irrelevant question to anything practical.
But that is literally this culture I am talking about - the conviction that if you already don't know stuff and was not interested in the past, you are not talented point stop don't even try. Math teachers nor chemistry teachers assume that - if you are curious now are happy with you learning now.
> that there are all these secretly good programmers out there who just don't know they're programmers because no one ever told them how to start,
They are not secretly good programmers. That takes more then just aptitude. But yeah, a student with good memory and basic math aptitude has genetics for programming. There is nothing special about us. The hardest part of beginner is to figure out what makes sense to learn and what not.
> and that they might not even know what programming is because it's so difficult to get started.
Well, it is difficult when you don't know what to do and get told you probably don't have aptitude first time you struggle with something. It is easy if you learned from simple concepts, either because you run into right game or because you run into good teacher or book.
Exactly like any other learnable skill - math, chemistry, law, physics and so on.
> "with hacking and computers in every TV show"
That has nothing to do with reality. I see sword fights in many movies too.
> "and no one is typing "how does my smartphone/videogame/internet work" and reading the results?"
What does that question have to do with building sofware? Like, real world software with real world homework that suddenly out of nowhere expects you to have skills that were not taught previously.
What does that question have to do with algorithms? Programming languages? Whether the students would be more attracted to solving problems side or building things side or theory side or software engineering side, your how does videogame works is largely irrelevant. Plus the answer will be high level overview of memory/cpu and such.
> Are there other problems keeping people from breaking into the industry? Absolutely. Is "not knowing where to look" one of them? There's no way that it can be, not anymore.
You did not suggested a single practical place for beginner to learn stuff. Only few very general question that does not necessary lead to programming - most of them would lead to electronics at best. And such good resources exist, but none of your suggestions lead to them.
The "breaking into the industry" is far away from "starting with programming". But then again, that is part of nonsense around this. I know people who found a job with very little knowledge in small company just because they looked confident and hiring manager was inexperienced. Few of them even became good programmers, although they created huge mess on their way there and had to rely at politics a lot. But somehow, a honest student with good results in pretty much everything else is assumed unable to learn the same, because he is less good at pretending.
You're way beyond the scope of the original discussion.
Someone suggested people would drop out of CS due to the grief factor of - for example - breakage due to missing semicolons.
Another person then suggests that maybe it's a good idea that CS majors have some experience programming before they enter the program. Note: some experience - no one said you need to have built a "real-world" team project before going into a CS program.
Then all hell breaks loose because, apparently, getting online and reading a couple tutorials and screwing around in a browser-based programming sandbox (there are tons), is something only wealthy people with college educated parents can do.
Sorry, but I don't believe that.
Having the free time with access to a computer to "screw around" on and knowledge of the existence of browser sand boxes are absolutely tied to class.
Why not offer two tracks? People who have never programmed before have to take a 6 month intro to computers course, that people who know how to program can skip. The people who skip the course can then either use the extra time to take other courses or graduate earlier.
The idea that we block off CS as a subject for only those who've taught themselves some programming is absurd and elitist. While we may expect Math students to know Math before Uni, it so happens that 99% of high schools teach the level of Math we expect them to know. In a lot of countries it's compulsory. Same goes with most of the sciences, we expect the level that schools will teach. Unfortunately most schools don't teach programming, and those that do often don't do it well.
Beyond that, I know a lot of poor kids who don't have video game consoles, and there literally isn't $50 in the budget for something that may or may not produce any value (not to mention the monitor, the peripherals, and taking up vast amounts of time on the family computer -- if one exists -- to figure out how to use it).
I have extended family living in rural Utah who don't even have a computer -- they use their phones for the Internet. You can debate back and forth about the cost of a phone vs. the cost of a cheap Desktop, but people need phones to function in society, for better or worse. Try figuring out what to do with a bottom tier smartphone, a limited data plan, and a Rasberry Pi that just arrived in the mail.
I volunteer at the Boston Museum of Science, working in the Tech Studio/engineering department, often showing off the latest "engineering toys" -- Little Bits, Rasberry pi, Scratch on an iPad that controls a Lego robot... Rich kid parents ask "Oh, where can I get this?" It's not a big deal for them to drop a couple hundred bucks on flavor-of-the-week programming toys. Poor kid parents are often interested and enjoy playing around with it at the Museum, but never ask about getting one themselves. It doesn't even occur to them.
Beyond THAT, there are a lot of majors that don't cost a lot of money. You can use the argument "X doesn't cost much to learn -- why haven't you done X before on your own time?" to apply to anyone.
There are now computers that cost as little as taking the family out to dinner at McDonalds. Probably a hundred million more people (yes, however, not every single person, ok) have the means to learn programming compared to when I was a kid.
Acknowledge that, because it's amazing.
What makes you bring up gender over race or class ? There are more middle-class Asian and White women in the field than lower-income African-American and Hispanic men.
Agreed, and when it comes to CS, programming is the easiest part. People who fail to see this are probably the ones who only know programming and no CS.
Say you apply to study marine biology but have never been to the seaside then sure, you might do fine, but really I'd be wondering why you weren't taking a gap year and doing some self-directed study at a beach (hey, that sounds fun!).
How do you manage expectations for courses/modules/whatever from both sides (teacher:student) without such things.
In theory can one easily go to a USA Uni based on relatively unrelated abilities - lets say history and cooking? - and leave with a degree in Electronic Engineering? If there are no subject-based pre-reqs why does one need to declare a major, or is that done later?
My UK degree was modular so I could have done something quite similar, but I was assessed for entry based on abilities pertinent to a nominated degree (not the one I ended up with as it happens). Modules still had [relatively loose, unassessed] pre-reqs such as reading particular books or understanding specific concepts.
In the UK you start to specialise at 13/14
I and I bet having a GCSE and A level in Law would help for wanabe lawyers
Somewhat related to your point, letting novice programmers get CS degrees doesn't fix the problem because there is still a performance gap which results in a hiring gap. If there is problem with demographics having unequal experiences, while colleges can be tweaked to keep the inequality from growing, it is far better to fix it where it comes from.
It's far simpler to say than do, but our society needs to find why the gender skew in high school programmers happens and stop it.
Linux wasn't required for entry-level courses. At the time, they were taught using C++ and a Borland IDE on Windows.
Similarly, source control wasn't introduced immediately. I'm pretty sure CS101 assignments were turned on paper, in addition to email.
And the department offered many options for lab time, office hours, and tutoring. I worked as an undergraduate TA for 2.5 years, which basically meant holding lab hours 3-4 times/week for 2-3 hours at a time, in addition to grading assignments and exams.
I also started a CS program in '95, with practically no previous programming experience. (10 PRINT "HENRIK IS THE BEST", 20 GOTO 10 doesn't count)
One thing our university did though was that the introduction course was in Scheme, which evened the playing field immensely, because most of the kids who could program were self-taught in Pascal or C, and where pretty stumped when confronted with a functional programming language.
But my university's approach didn't help the abysmal graduation numbers either, there were so many classmates that dropped out during the first year. A bunch dropped out because the programme was an engineering programme, and they failed the math parts, but did good on the CS parts. Most of those switched to other programmes that were more pure CS and were successful.
But there were a lot of students who just lacked that elusive thing that makes a person a good programmer. There's been a lot of studies, and lot of previous discussions on HN of those studies, but the jury is still out, we have no idea how to effectively screen people for programming ability. The only thing we can do is toss them into an education and see if it sticks. The original article asks:
> Isn’t it reasonable to expect that people with an aptitude for math, physics, and engineering will also have an aptitude for CS?
And the answer is a resounding no.
Funnily enough, this whole thing ties into the problems of recruiting good programmers, another HN staple topic. We can't tell if someone will be a good programmer before an education, and we can't even quickly tell if someone is a good programmer after an education, or even after years of working in the industry! If there was a quick way of identifying good programmers, we wouldn't be in this mess.
Agreed. Apart from understanding logic, complex math is such a small part of development. I would say programming requires the overlap of knack for math and a pure creative interest like painting. That's much, much rarer.
During the dot boom, there were plenty of CS grads, but after the dot bomb and the market dried up, people lost interest. Also, the pay and incentives aren't nearly as good as they were during the dot boom.
Add off shoring, constantly pushing down wages, and the fact that most US businesses make programming miserable, that's probably most of the big picture.
You mean a pure creative interest like maths, surely ;0)>
There are solutions to this problem as well.
JMU and GMU (high quality, but not top-tier, state schools) both offer pure CS degrees, but also a spectrum of multidisciplinary programs in "IT". One of my current summer interns is wrapping up a degree in info security, with a heavy dose of programming. The other intern is a straight-up CS major. Both appear to have the programming chops to join the workforce as typical application developers.
Of course, in my experience coming in to a CS degree as a techie didn't actually teach me how to make a living writing code. Most of the useful stuff I had to learn on my own time. The connections I made at school helped, but the value of the actual classes was low.
So perhaps a CS degree isn't intended to teach anything to anyone.
However, in general, the idea that you need to already be a programmer per-college to major in CS is somewhere between wrong-headed and toxic.
Where would you have them start instead?
Bumble through learning to program without the theory behind any of it?
That seems like a cart-before-the-horse scenario.