Live data from Hacker News

Coding Horror: Separating Programming Sheep from Non-Programming Goats

codinghorror.com

21–30 of 140 posts

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#22
Eh, that test seemed like it could be unintuitive to those that have never had programming exposure before.

How are they to know that "=" is assignment and not testing equality? I guess you could glean that from the context where they immediately ask you the values of the variables after the operation but I could see someone misinterpreting the semantics of that operator.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#23
post #13

I see this largely as a failure of education. You see this issue in many areas and much earlier on like teaching mathematics. In schools there tends to be one method used and that method doesn't suit everybody. I see this at work. I've known programmers who, when they get a new hire, will basically let them flounder. I guess the basic idea is that if you're "good" you'll "figure it out" (with minimal time investment…

> I see this largely as a failure of education. You see this issue in many areas and much earlier on like teaching mathematics. In schools there tends to be one method used and that method doesn't suit everybody.

I've found that education, at least K-12, is slowly shifting attitudes from 'Why are students so dumb?' to 'How can we teach this better?' Computer Science is notoriously bad at believing the former over the latter, and papers like this are demonstrations of this.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#24
post #13

I see this largely as a failure of education. You see this issue in many areas and much earlier on like teaching mathematics. In schools there tends to be one method used and that method doesn't suit everybody. I see this at work. I've known programmers who, when they get a new hire, will basically let them flounder. I guess the basic idea is that if you're "good" you'll "figure it out" (with minimal time investment…

You make a number of good points but I want to respond to one thing - the failure of education.

I think it may not be so much a failure of education as so much the economics of education. The use of a single curriculum reduces complexity and administrative overhead (teacher time) which at the professor level is expensive. If the computer science courses were designed to use multiple methods you could indeed better educate a variety of students but at an increased cost.

In my mind the question then is whether or not it is worth the money to educate those that can't succeed with the current teaching method. The entire CS department would need to charge students more per class in order to have more successful students and in order to justify this cost there would need to be a corresponding beneficial pressure for the student to pay those costs (increased demand or higher pay for programmers).

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#25

Jeff closes with the following words IN BOLD: “The act of programming seems literally unteachable to a sizable subset of incoming computer science students” There is, of course, an alternate explanation: “We in Universities seem literally incapable of teaching programming to a sizable subset of incoming computer science students” Experiments going back to the 1980s with teaching children how to program using Lego blo…

Methinks age is the most important factor here.

We teach children the basics skills needed for most studies well before that age. Reading, writing, math etc. You can't expect someone to successfully study literature if they don't know how to read.

Programming is a skill, not just a matter of knowledge, and the foundations for that skill must be laid at an earlier age. Most skills we learn after that are just extensions of those basic skills.

I'm not sure about the current generation, but in my age group (40+), everyone who programs started in their early teens.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#26
post #22

Eh, that test seemed like it could be unintuitive to those that have never had programming exposure before. How are they to know that "=" is assignment and not testing equality? I guess you could glean that from the context where they immediately ask you the values of the variables after the operation but I could see someone misinterpreting the semantics of that operator.

The point of the test wasn't to determine whether or not people who had never been exposed to programming could correctly divine what operation '=' performs in C.

Rather, the idea was to see whether or not, over the course of 20 or so questions, their answers indicated that, whatever they had decided '=' did, right or wrong, they applied their conclusion in a consistent manner.

Thus it was irrelevant whether or not they got the semantics of the operator right; what was important was determining whether or not they had operated as though operators in general have semantics, or whether they operated as though things behave essentially randomly.

It's more or less an attempt to determine whether the test-taker behaves as though the universe is a rational and understandable place or not.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#27
I agree that there probably is a sharp distinction between people who can keep very rigid rules in their head, and project forwards to anticipate what will happen, and lastly also reason backwards from a desired state to figure out the necessary instructions.

The question is whether this can be taught. When I read the study I see another possible conclusion; that we haven't sufficiently prepared everyone for the basic reality of computing -- that this is about arbitrary machine rules, and how to think about them.

Some of us may come into the world having that 'mechanistic' worldview, or perhaps some early experiences teach it to some earlier than others.

But we're evolved to deal with organic environments. Where precise definition and full knowledge aren't possible, so instead we have fuzzier categories and flexible responses. Where everything intelligent in the environment can be negotiated with, using empathy. In programming 101 you have to abandon that mindset.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#28
post #20

As I recall, people have attempted to replicate the results this blog post is based on and the result was debatable. Which is to say, not that they were completely unreplicable, but that under further investigation debate has intensified. It isn't clear that this methodology actually works, but it also was not conclusively destroyed. It's probably not a good scientific base to draw a lot of conclusions on right now.

That is correct - the authors themselves failed to replicate the results. I kept some notes over the years (saw this OP in 2006); from http://www.gwern.net/Notes#the-camel-has-two-humps

...replications of the test have had issues; from http://crpit.com/confpapers/CRPITV78Bornat.pdf:

> "We now report that after six experiments, involving more than 500 students at six institutions in three countries, the predictive effect of our test has failed to live up to that early promise.”

And http://www.eis.mdx.ac.uk/research/PhDArea/saeed/SD_PPIG_2009...

> “A test was designed that apparently examined a student’s knowledge of assignment and sequence before a first course in programming but in fact was designed to capture their reasoning strategies. An experiment found two distinct populations of students: one could build and consistently apply a mental model of program execution; the other appeared either unable to build a model or to apply one consistently. The first group performed very much better in their end-of-course examination than the second in terms of success or failure. The test does not very accurately predict levels of performance, but by combining the result of six replications of the experiment, five in UK and one in Australia. We show that consistency does have a strong effect on success in early learning to program but background programming experience, on the other hand, has little or no effect.”

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#29
post #13

I see this largely as a failure of education. You see this issue in many areas and much earlier on like teaching mathematics. In schools there tends to be one method used and that method doesn't suit everybody. I see this at work. I've known programmers who, when they get a new hire, will basically let them flounder. I guess the basic idea is that if you're "good" you'll "figure it out" (with minimal time investment…

>I see this largely as a failure of education. You see this issue in many areas and much earlier on like teaching mathematics. In schools there tends to be one method used and that method doesn't suit everybody.

Good thing professional educators are almost as observant as you in regard to teaching.

http://lmgtfy.com/?q=differentiated+instruction

I really love how HN conceit lets people post about entire industries as if those people just have no clue what they are doing. And not only do people here hold those pompous and generally ignorant positions, but other people support them!

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#30
post #24
post #13

I see this largely as a failure of education. You see this issue in many areas and much earlier on like teaching mathematics. In schools there tends to be one method used and that method doesn't suit everybody. I see this at work. I've known programmers who, when they get a new hire, will basically let them flounder. I guess the basic idea is that if you're "good" you'll "figure it out" (with minimal time investment…

You make a number of good points but I want to respond to one thing - the failure of education. I think it may not be so much a failure of education as so much the economics of education. The use of a single curriculum reduces complexity and administrative overhead (teacher time) which at the professor level is expensive. If the computer science courses were designed to use multiple methods you could indeed better ed…

Wouldn't increasing the success rate by 30-60% pay for itself? If that much of the class fails out after the first course, that's tuition lost for the remainder of the courses, is it not?
Post reply on HN