Live data from Hacker News

Why did we ever think a student's first programming language didn't matter?

m-cacm.acm.org

101–110 of 286 posts

Re: Why did we ever think a student's first programming language didn't matter?

#101
post #83

Earlier quoted context omitted.

> I don’t think everyone can understand computer science. This is a bold claim. None of us are special for working in tech. Our life has presented us the opportunity and passion to invest ourselves deeply in the field, often at great opportunity cost. Saying that a bad teacher makes no difference in student outcomes is equally ridiculous as saying an excellent teacher makes no difference in student outcomes. If that'…

> None of us are special for working in tech Computer occupations as a whole have a median intelligence at least 1stddev in excess of the population median. https://www.gwern.net/docs/iq/2002-hauser.pdf I have to imagine that programmers in particular are even higher.

I've always felt like a good data point in favor of IQ playing a non-trivial role in suitability for programming is the fact that anti-credentialist moves like 10-week coding bootcamps have been so incredibly successful.

Bootcamps took off shortly after I graduated from my top-ranked CS program, and I remember being extremely dismissive of their value: there was no way that you could fit the four years of my CS degree into ten weeks. I've since realized that being good at Computer Science grossly overqualifies you for many programming jobs, and that bootcamps do a great job of giving reasonably smart people an on-ramp to these jobs. I know three separate people who jumpstarted six-figure careers from scratch after attending a bootcamp: one was a waitress, one an artist, and one's entire career thus far consisted of a decade of changing tires at Costco. One of the three wasn't college-educated, and two were first-generation Mexican immigrants (as children) from working-class families, belying the assumption that privilege and educational access fully explains programming ability. Unsurprisingly, all three are fairly intelligent people.

I can't think of another industry that has a similarly egalitarian entry path, and I think a very plausible explanation is that suitability for these types of entry-level programming jobs is little more than a test for high IQ (relative to the population norm).

This is my experience as well. During an ill-advised foray into building the tech org for a mediocre startup with a poor candidate pipeline, the quality of candidates we got was so poor and the work we were hiring for so easy that I pretty immediately found myself dropping every requirement except for knowledge of basic programming + intelligence. This worked pretty well: The no-experience, very-smart guy that I strongly recommended hiring became the capable workhorse of the eng team, and the dumb guy with a decade of experience that the founders hired over my objection was an absolute dumpster fire, unable to work with any autonomy and bounced from area to area in an effort to find a place where he would do the least damage.

Re: Why did we ever think a student's first programming language didn't matter?

#102

"Matter" to what end? That is, if you do not have a specific goal in mind when learning a language, then of course it doesn't matter. On the other hand, if your ultimate goal is to learn a myriad of languages so that you can jump around fields, then of course it matters, as you will likely have difficulty learning advanced concepts without understanding the basic ones. (Just as you would likely not dive into calculus…

>I also don't understand the article's interest in decoupling programming from math It's an unfortunate side effect of America's long acceptance of anti-intellectualism. And people like this perpetuate it by coddling Americans who were somehow allowed to get through high school without even a basic understanding of the fundamentals of math. I am also a victim of this defeatist way of thinking, and have worked hard to…

I had some math teachers who either did not understand math very well themselves and just regurgitated text books, or just didn't know how to teach it well (which, to be fair, can be challenging).

But the article states near the end:

> Conversational programmers struggle to find resources that help them learn because so many of them require a focus on the logic and mathematics, but we are developing approaches to help conversational programmers learn without the math. We might be able to teach a lot more people about programming if we don’t expect students to know mathematics first

I'm just not sure that's a great (or entirely workable) idea. Embrace the math!

That said, I don't think one has to learn the math first; you can learn math and programming at the same time. In fact, it is perhaps easier to learn math when you have a concrete programming context to apply it to. I taught myself the basics of algebra by teaching myself BASIC in elementary school, years before I had a clue what "algebra" was. By the time I was taking algebra classes, it was a breeze. (Calculus on the other hand....)

Re: Why did we ever think a student's first programming language didn't matter?

#103

Earlier quoted context omitted.

> I don’t think everyone can understand computer science. This is a bold claim. None of us are special for working in tech. Our life has presented us the opportunity and passion to invest ourselves deeply in the field, often at great opportunity cost. Saying that a bad teacher makes no difference in student outcomes is equally ridiculous as saying an excellent teacher makes no difference in student outcomes. If that'…

>> I don’t think everyone can understand $RANDOM_DISCIPLINE. > This is a bold claim. I disagree. What makes computer science so special that it can be understood by everyone, while it is generally accepted that other disciplines cannot? After all, saying "Not everyone can understand chemistry" doesn't draw the same ire.

The bar for getting stuff done with programming is much lower than the bar for chemistry. While I do agree that not everyone can or will be a full time software engineer, I think that most people can incorporate programming into some aspect of their lives. Whether they want to is another thing but that shouldn't stop us from teaching at least the basics even if it means the most they'll do is write conditional excel sheets or figure out how to build their own iPhone shortcuts.

Re: Why did we ever think a student's first programming language didn't matter?

#104
It's my feeling that articles like this are evergreen, simply because the demands on a "first programming language" are contradictory and excessive.

Depending on who you ask, a first programming language (I'll say 1PL to reduce repetition of the phrase) should do one or more of the following:

1) Be practically useful even if the student drops computer science immediately.

2) Be low-level enough to teach the fundamentals of what's really going on with the machine.

3) Be high-level enough to teach the fundamentals of true computer science.

4) Be stringent enough to allow the users to learn precision in their programming.

5) Be lax enough to allow the users to not get bogged down in endless boilerplate.

6) Be in common usage to help ensure immediate practical users for the language.

7) Be an exotic to avoid turning the first year and a half of CS courses into a competition to see who spent the most of their formative years messing with computers.

8) Bonus round: claim that the 1PL is a bogus fixation and instead the learners should learn several different languages.

The problem with all these arguments is that they are all sorta-kinda true, but the consistent application of even a few of them result in a learning load that would result in the first year of computer science (or some "intro to programming" course) being not so much a major but a 2-3 year full time job carried out to the exclusion of all else.

It might make a lot more sense to think not about the 1PL but how the 2ndPL, 3rdPL, etc. are introduced and when. Instead of overloading the 1PL with a host of contradictory and pretentious goals, maybe we teach people the basics of programming as quickly as possible and move on?

For my part, I think the experience of the 1PL should be focused on usability and fun. I'm not really a fan of the whole Java thing for reasons not germane to this, but "Processing" really had a whiff of what was fun about messing around with Commodore 64 BASIC back in the day. Maybe that's more important than making sure that the language in which everyone adds up columns of numbers and prints an invoice for some fucking stupid imaginary warehouse application properly inculcates everyone into the One True Way of Thinking About Computing, whether that's being close to the hardware, or being able to write metacircular interpreters, or be a service course for some miserable engineering department.

The fact is, most of these first-year courses are dull, miserable and unappealing.

Re: Why did we ever think a student's first programming language didn't matter?

#105
post #99

Even MIT abandoned Scheme and SICP and switched to Python. There's a beautiful elegance to that approach. It gives a sense of the mathematical foundation of computer science. It's not that useful for building large programs from off the shelf libraries, which is what almost everybody does today. At one time, computer science required a good understand of what's in Vol. 1 of Knuth. That's not in much demand any more.…

Where can one find those hash table theorists? (Just curious, that sounds really interesting actually)

Re: Why did we ever think a student's first programming language didn't matter?

#106
post #99

Even MIT abandoned Scheme and SICP and switched to Python. There's a beautiful elegance to that approach. It gives a sense of the mathematical foundation of computer science. It's not that useful for building large programs from off the shelf libraries, which is what almost everybody does today. At one time, computer science required a good understand of what's in Vol. 1 of Knuth. That's not in much demand any more.…

There's really no reason to go to university if all you want is to write some Python scripts. University is not vocational training.

Re: Why did we ever think a student's first programming language didn't matter?

#107
In my opinion the best sequence looks something like this:

  - Machine language (not assembler)
  — Assembler for a couple of different architectures (i.e: Von Neumann vs. Harvard, CISC vs RISC, etc)
  - Forth (written from scratch with one of the above)
  - C
  - LISP
  - APL
  - C++
I think of everything else beyond these mostly as C/C++ cousins or derivatives. With languages like Javascript and Python it’s far more about learning the libraries than a massively different programming paradigm.

Learning each of the languages is my list —in the suggested sequence— will provide someone with a deep understanding of different ways to solve problems with computers.

Re: Why did we ever think a student's first programming language didn't matter?

#108
post #70

Earlier quoted context omitted.

The person you responded to didn't make any claims about bad teachers or good teachers. The claim is that not everyone can understand computer science. As an extreme example do you think a person who is mentally disabled can understand computer science? From my perspective it's clear to me that not everyone can understand computer science and the same applies to many academic areas.

The grandparent comment was about teaching, so I interpreted the parent comment to mean that "innate ability matters much more than good teaching", which my personal experience teaching people disagrees with. And sure, the statement "not everyone can understand computer science" is technically true if you include people with mental disabilities. But in reality, some people draw the line a lot higher as a form of gate…

I've spent about 2.5 years teaching programming. Students really do seem to have some innate programming difficulty slider, which absolutely matters. Some of my students worked their absolute butts off to learn programming, and asked for help constantly (which I gave gladly). And they still barely scraped by.

Other students seem to learn programming extremely easily. I would show them something one day, and the next day they've already used what I showed them in their code.

I'm open to the hypothesis that its my fault that some of my students failed to learn programming. I certainly felt terrible for them when they worked really hard and still failed. But I don't think its all me. I certainly can't take equal credit for the students who did very well. My star students seemed like they barely needed me to teach them anything at all.

And for what its worth, the perspective that talent doesn't matter is an awful thing to teach struggling students if its wrong. Students hear that as "If I struggle at programming it must be my fault". I don't think it is. I think some people just have brains wired to make programming easier or harder to learn. There's no shame in encouraging some people to pick a different career. If programming really isn't right for someone, the sooner they swap to something else, the better.

Re: Why did we ever think a student's first programming language didn't matter?

#109

The first language is incredibly important and I normally recommend javascript for the following reasons - it's /highly/ accessible (any computer with a browser can compile and run javascript - you just need to get your browser to load the file) - it shares a lot of its syntax with C-Style languages (which makes transference to other languages much easier - it's 'relaxed' on how it enforces rules (now, this is conten…

I think JavaScript is a bit too advanced though and some mistakes are quite difficult to explain, such as the scopes and event functions, or the relatively invisible typing system. For example, Reddit is full of beginners making fun of JavaScript because concatenating a number and a string using the + operator produces a concatenated string and not a sum number.

However to reduce the complexity, it's possible to restrict students to a subset, using eslint and one or two plug-ins. I like eslint-plugin-unicorn to restrict my co-workers.

Re: Why did we ever think a student's first programming language didn't matter?

#110
post #99

Even MIT abandoned Scheme and SICP and switched to Python. There's a beautiful elegance to that approach. It gives a sense of the mathematical foundation of computer science. It's not that useful for building large programs from off the shelf libraries, which is what almost everybody does today. At one time, computer science required a good understand of what's in Vol. 1 of Knuth. That's not in much demand any more.…

There's really no reason to go to university if all you want is to write some Python scripts. University is not vocational training.

> University is not vocational training.

I'll believe that when employers stop giving preference to people with university credentials.

Until they do that, the primary reason most people go to university for CS will continue to be 'for vocational training.' People follow incentives.

Post reply on HN