It's hard to get things right and we will fail; we must be humble
October 11, 2018 9:47 AM   Subscribe

Shaping our children's education in computing : a talk by Haskell designer Simon Peyton Jones at Strange Loop about computer science in childhood education- its nature and place, and the work of effectively implementing it.
posted by Jpfed (46 comments total) 18 users marked this as a favorite
 
I have one question here: why is it so "critical" for children to be pushed into computing at such an early age? Think about it - this is at odds with how we treat most other professions, where there is no expectation that entrants need to be inducted at such a young age. The answer here, I think, is a cultural one - the tech community does not see itself as just a professional community, but more and more as something more all encompassing. And in turn, this has led to a lot of unhealthy thought, like the idea that to be "good" in tech, it has to be your life.
posted by NoxAeternum at 10:10 AM on October 11 [10 favorites]


like the idea that to be "good" in tech, it has to be your life

We push our kids to be literate, they learn to hold a pencil just as soon as their hands are able to hold it. Early brains are receptive in a way older ones are not. Same thing here, fluent native computer interfacing people are a natural, logical progression in our species development.
posted by Meatbomb at 10:21 AM on October 11 [14 favorites]


I agree with Meatbomb, and to extend that: I think the argument is that computing is a new fundamental skill, like literacy, athletics, music, math, foreign language. You can absolutely pick up anything later in life, but it's easier when done earlier.
posted by clinthowarth at 10:26 AM on October 11 [4 favorites]


fluent native computer interfacing people are a natural, logical progression in our species development

I think this is probably the wrong way around. People (and probably coders, now I think about it) as a whole are getting less fluent with low-level computer interfaces as time goes on. Current trends suggest to me that all levels of interface are going to require decreasing amounts of specialist fluency over time.
posted by howfar at 10:28 AM on October 11 [8 favorites]


Same thing here, fluent native computer interfacing people are a natural, logical progression in our species development.

Being a developer myself, I don't see this as being the case, seeing computers as tools for us to live our lives. Furthermore, the people pushing the idea that kids need to learn to code early are clearly self-interested in the matter, which should have us looking at the argument more critically.

And no, I don't buy the argument that "computing" is a new fundamental skill. We teach things like math and literacy because they are fundamentally woven into our society - someone without a basic understanding of either will be unequipped to operate in society. That's not the case with computing at the moment, and I don't think it should be.

(And no, I don't see understanding technology to be the same thing either. One can understand how to use a tool without fully understanding how it works.)
posted by NoxAeternum at 10:34 AM on October 11 [7 favorites]


howfar's comment holds some water in regard to low level interfaces. having just interviewed a bunch of developers for an embedded job, the only qualified applicants were 40 or (much) older. Younger developers had zero work experience with assembly and only minor coursework while in college. Probably 99.9% of developers will never even need to know the existence of assembly, the age gap in experience was pretty shocking.

I'll go watch the talk now
posted by Dr. Twist at 10:46 AM on October 11 [1 favorite]


Reasons I, a 34 year old woman in the tech industry, think it's worth teaching kids about coding:

(1) The entire tech industry is rife with dudes whose parents bought them a computer when they were 4 and let them play with it and learn how to code, so they enter the workforce with more than a decade of coding experience already under their belts and they are prone to hiring people just like them. So like, you only learned to code in college? Well that's BS and means you're not passionate/committed/qualified! So making this a skill learned more universally at younger ages means it puts more people from varying socioeconomic and demographic backgrounds on a level playing field with the families whose parents can afford computers and have the expertise to help kids learn.

(2) Coding is, fundamentally, logic. Even in the increasingly abstracted languages that are commonly used, it's a framework for thinking about and implementing logic and math. So in that respect, it's useful to teach it almost alongside math, to teach the thought process. But additionally, I think it's important to understand that *that is what coding is* because it underpins a vast majority of the tools we use every day, and without building literacy in how that stuff works and why it works, we'll just think it's magic - and then we do things like trust machine learning algorithms to make hiring decisions or believe that our Facebook newsfeeds are showing us objective view of what our friends are doing and thinking. This is, to me, as important as teaching kids about critical thinking and analysis of literature and journalism - how can you judge the information you receive in the world if you don't have the tools to understand how and why it comes to you in the first place?
posted by olinerd at 10:51 AM on October 11 [30 favorites]


I’m just going to +1 the argument that teaching programming isn’t necessarily about learning to code, it’s about teaching logic. Logic is indisputably an important underpinning of modern civilization, and a facility for thorough logical thinking will benefit kids as much as it benefits our wider society.

If it prepares kids to be, at least, un-mystified by technology as they go on to do other things with their lives, that’s just a bonus.
posted by Nutri-Matic Drinks Synthesizer at 11:00 AM on October 11 [6 favorites]


I have a video of my 4 year old daughter saying "A monad is a monoid in the category of endofunctiors."
posted by ocschwar at 11:03 AM on October 11 [12 favorites]


On point (1), that's a massive problem with the culture in the tech industry that leads to a lot of the toxicity there - the mentality that tech is your life, that STEM skills are more important than others, etc. And you don't fix toxicity by leaning into it. Furthermore, that "decade of experience" has been shown to be rather illusory as well - take these kids out of the comfort zone of the common languages used, and very often it turns out that they're on the same footing as someone just learning to program.

As for (2), if logic is a critical skill (and this I do wholeheartedly believe), then let's teach logic, without using computing as an educational Trojan horse. In my own education, I was taught formal logic as part of my math education, going through and learning how to build a formal proof, how logical statements are built - all without needing to rely on using computing as a framework for teaching it.
posted by NoxAeternum at 11:07 AM on October 11 [6 favorites]


Right, but kids go through their entire education saying "ugh, why do I even need math" and they'd likely do the same with logic. Grounding it in "you can program things to make logical decisions based on what you believe to be logical, like look at [this app you use], let's talk about how it does that" shows the applications immediately. I like the idea that the theory of logic is meaningful and will stick, but based on what I see with math, I'm not confident that would happen.
posted by olinerd at 11:11 AM on October 11 [5 favorites]


And to your previous point -

(And no, I don't see understanding technology to be the same thing either. One can understand how to use a tool without fully understanding how it works.)

Technology has bias. Programming, in particular, which is inextricably linked to everything we do these days, is especially biased. If you don't understand how the nature of the way the technology is built introduces that bias, you won't understand and be able to compensate for that bias. This isn't like "I've been taught how to use a computer for word processing but I don't need to know how memory allocation works"; this is "I've been handed a newspaper without any education in what propaganda, yellow journalism, journalistic bias, etc are, or how journalism is funded, or how to evaluate one source versus another."
posted by olinerd at 11:15 AM on October 11 [6 favorites]


Like, we're getting to the point that understanding the scientific method is a critical component of being a citizen, because of the amount of scientific research we're asked to evaluate and act/vote on - climate change, vaccinations, nutrition and diet, GMOs, whatever. Similarly, because algorithms - not just "technology" broadly, but specifically algorithms - are increasingly affecting how we interact with the world, I think understanding how code gets written is becoming a critical piece of good citizenship.
posted by olinerd at 11:21 AM on October 11 [5 favorites]


"I've been handed a newspaper without any education in what propaganda, yellow journalism, journalistic bias, etc are, or how journalism is funded, or how to evaluate one source versus another."

Yes, exactly this, it is all about literacy. Like anything else, logic and critical thinking need to be grounded in reality, contextualized, to be meaningful to learners. Computers and coding are one (very relevant and interesting) pathway into those basic questions of truth, logic, how the world works and how to interface with the world effectively.
posted by Meatbomb at 11:24 AM on October 11 [4 favorites]


Technology has bias. Programming, in particular, which is inextricably linked to everything we do these days, is especially biased.

The problem is that this also applies to technology education as well. Eric Schmidt doesn't advocate for early technology education because he's concerned - he does it because he's a tech mogul and pushing for early technology education benefits him in two key ways:

One, it increases the labor pool for him in the future, making it cheaper for him.
Two, and this is the important part, it puts a positive bias towards technology in the minds of the students, subtly pushing them towards the tech-positive viewpoint.

Look at how everyone is framing using teaching computing - "look at this tool that lets you solve problems!", as if there's no inherent bias there, but there is.
posted by NoxAeternum at 11:28 AM on October 11 [3 favorites]


Well, yeah. But for every tech mogul hoping for cheaper labor, there's someone like me looking with desperate envy at the people who had computers when they were five, saying "Wow, I wish I'd had that as a kid." I do a lot of volunteer work with a well-known K-12 STEM program - I'm a product of it myself, and I wouldn't be in engineering now if not for having access to the equipment and knowledge base of the program mentors, because literally no one in my family (1) knew anything about it or (2) could afford that stuff. All of my fellow volunteers and I are in it because we want to give kids the opportunities we felt like we didn't have. Leveraging tech moguls' money to fund it is totally something we do and yes we do do the "blah blah increasing the skilled workforce" line to raise that money but also, I work in robotics - let me tell you, we're gonna need a different kind of skilled workforce across the board, not just to fill Google's coffers. Coding is basically vocational tech for the future. And both my fellow volunteers and I would be the first to advocate for continued strong funding and support for the liberal arts within education - there are certainly calls for "just teach everyone to code, why bother with philosophy and English class, who cares", and that's BS, those are important subjects for contextualizing our society and also we aren't here to force anyone into a particular career path - but we also can read the writing on the wall; leaving coding as something you learn in college if you choose then to specialize in it is going to be seriously problematic for the people who can't or won't go to college because more and more jobs, even traditionally "blue collar" jobs like manufacturing, are going to require some basic programming skills or, at the very least, an understanding of how the equipment they work with is programmed.
posted by olinerd at 11:40 AM on October 11 [7 favorites]


I grew up around computers. I made a successful career of it. I love writing code, I love experimenting with technology, and I absolutely believe that early exposure to code has made my life better. I've been around techies for most of my life in many different contexts.

I've seen zero evidence that being computer literate makes you a better person. I have seen zero evidence that being able to program makes you any better at distinguishing fact from fiction. I have seen zero evidence that learning "logic" helps you make logical decisions in your day to day life.

I have met many wonderful people in tech. I've also met conspiracy theorists, misogynists, gambling addicts, alcoholics, and people who are just generally clueless about the consequences of their actions. Many of them are of the opinion that their understanding of digital logic makes them better suited to make decisions about or for others. I don't buy it.

Teach media literacy and social skills in school. Teach tech, too. Just don't expect it to have any impact other than preparing kids for a career in tech.
posted by phooky at 12:00 PM on October 11 [11 favorites]


I beat you all, when very young I had a small plastic binary toy that would slid back and forth and do and/or/nand for like 4 bits. I think it could build a half-adder. Only toy I really wish I'd put in a box to rediscover. Didn't make me rich or academic but it was fun and ties elements of the current world that is becoming just magic for many. Didn't hurt, love ballet, art and other disciplines. Other folks are different, but math/logic is a really good core tool for folks to have.
posted by sammyo at 12:09 PM on October 11


My counterpoint, olinerd, is what happened when Carnegie Mellon retooled their CS department (which is a fascinating story in of itself and worth reading up on.) The short version: CMU used to have a CS department where you had to be the sort of person who was using computers when you were 5 to enter. Then they realized how much of a gatekeeper that was, and how it was pushing women and minorities away. So, they retooled the program, designing it so that interested students without any serious prior background would be able to succeed. And while it had the desired effect, increasing the number of women and minorities in the program, it also had some interesting knock on effects. One was that they found that the revised introductory course (which was built around a toy functional language) wound up putting a number of students who had been "coding" for years on the same footing as the new students with no background, because they hadn't actually learned basics of computation.

This is why I say the mentality in the tech industry that you had to be coding early is so toxic - it's meant to be exclusionary, and it fuels further toxicity. And the answer isn't to lean into it and say "well, then we'll teach everyone to code early" (in large part because they'll just move the goalposts), it's to call it out as bullshit.
posted by NoxAeternum at 12:28 PM on October 11 [8 favorites]


If anything, I think we should be teaching kids more skills that don't involve screens. How to work with emotions, communicate, listen, see other people as people and not things to be used. How to feel in control without needing to impose control (which is probably the appeal of computer programming for many...I command, it does what I say...certainly was true for me).

I say this as someone who's been playing with computers since a very young age (first language was Logo on an Apple IIc then BASIC on a C-64) and as someone who, for a long time, carried many of the negative stereotypes of white male computer programmers, until I started doing the personal work later in life.

Computers give access to worlds that are endless in some ways yet quite limited in very important ways. Consider for example what programmers get wrong about names; compromises made in the name of functionality and ease/abstraction (for the programmer) that reduce humanity to a limited set of preconceptions. Learning how they work and how to use them is important, but it's not the be all and end all. Logic is important, but given how many programmers fail to use that logic when it comes to interpersonal relationships, I don't see that that knowing algorithmic logic necessarily helps someone be a good person.
posted by kokaku at 12:31 PM on October 11 [7 favorites]


The problem is that this also applies to technology education as well. Eric Schmidt doesn't advocate for early technology education because he's concerned - he does it because he's a tech mogul and pushing for early technology education benefits him in two key ways:

This is true of every mogul's investment in any sort of education, though - they want to keep their workforce pipeline flowing, or they want to test out their (probably stupid) pet theories, or they just think it makes them look good. It's still an important topic for the rest of us to be talking about.

Computing (which of course is not the same thing as "computers") is just a subset of math/logic, anyway - the part that seems backward to me is just how little time seems to be spent on it compared to kinds of math that are likely useful to far fewer people, these days. As far as CS in the core curriculum goes I'd think it should be like anything else, though - everybody gets a little and you can get a lot if you want to. When I was in school this was more like none/a little if you want to, and that was in an academically-competitive college town. The exception was the kids I'd meet who went to school in rich parts of Silicon Valley proper, who had tons of resources available. I don't know what it's like these days, but it suggests to me that the bigger problem may be equality of access.
posted by atoxyl at 12:33 PM on October 11 [1 favorite]


The reason I don't buy the whole "you don't need to know how a computer works to use it" argument against teaching some basic CS early on is that as a species we are absolutely not served well by the idea that computers are magical boxes that do things in mysterious ways. The more that kids understand that they're fundamentally dumb machines that are basically only capable of doing things you tell it (or train it in the case of ML) to do, the better off we are.

That said, I do agree that CS shouldn't be taught at the exclusion of other important topics, like media literacy, government, economics, etc. that seems to get the short shrift currently. Ideally we'd have both.
posted by Aleyn at 12:44 PM on October 11 [3 favorites]


One was that they found that the revised introductory course (which was built around a toy functional language) wound up putting a number of students who had been "coding" for years on the same footing as the new students with no background, because they hadn't actually learned basics of computation.

This is interesting to me because I went to a school that was still using SICP - which is all about using a strange language to give a tour of the fundamentals of computation - but it was replaced a few years lated by something taught in Python. One of the reasons for this was that it was thought to be inaccessible - I had mixed feelings about this decision because it was a fantastic course if you did "get" it, and because this was right when functional programming was actually getting hot (sorta) again in the real world. But it was also true that the department's previous approach to easing people in was to teach an "intro to the intro" course - the traditional version goes pretty deep pretty fast and clearly a lot of people did have difficulty with it. I have no idea how the new version of the course worked out - I think they ended up with something that was still supposed to cover similar concepts - but I'm also intrigued by the CMU version of the story.
posted by atoxyl at 12:52 PM on October 11 [2 favorites]


There seems to be a lot of zero-sum thinking in this thread.

(Also, as the parent of a child attending an under-resourced Title I school, this discussion looks... sort of different. The opportunities for students there to find something outside of the 3-Rs that sparks their curiosity and desire to learn is highly constrained by limited resources and if someone wanted to go in and teach those kids CS I'd be overjoyed. I mean, my own kid loves coding and gets that opportunity at home but I think he'd probably do better at school and enjoy school more if he had the opportunity to incorporate this interest into his day. And if he attended any number of affluent suburban districts a few miles away, he absolutely would.)

The reason I don't buy the whole "you don't need to know how a computer works to use it" argument against teaching some basic CS early on is that as a species we are absolutely not served well by the idea that computers are magical boxes that do things in mysterious ways.


I work in tech support (for a client base of highly-educated very intelligent people who are notoriously not good with computers) and my job really would be easier if "computers are magical, mysterious Netflix and Facebook boxes" was not the starting point of many of the discussions I have. Then again... job security?
posted by soren_lorensen at 1:05 PM on October 11 [3 favorites]


Maybe copies of The Way Things Work Now for everyone. Folks would have a better sense of things even if they did think tiny mammoths were doing all the calculations.
posted by kokaku at 1:56 PM on October 11 [1 favorite]


Isn't the only reason to even have kids is so that they can run, maintain and debug your legacy code? I mean otherwise why would you do it?
posted by srboisvert at 2:15 PM on October 11 [20 favorites]


Okay srboisvert, you win the thread.
posted by kokaku at 4:32 PM on October 11


I'm another software professional who doesn't think that a basic facility with programming confers any particularly generalizable or useful life skills on the people who learn it. Not only does such a facility have basically nothing to do with the details of personal information security or the ability to transcend the planned-obsolescence treadmill, but it also has little to do with "logical thinking" as far as I can see. Marshaling predicate logic in the occasional if statement doesn't shape one's deductive faculties nearly as well as a course in philosophy, as far as I can tell. So what does it do for you? It makes you employable in a certain sector. It makes you able to make a fancy website. It's the rare student of JavaScript that will be able to encounter a spuriously failing form on some website and inject code on the fly that will let them proceed to the next dialog, and that ability is much less predicated on knowledge of coding fundamentals than it is on the particulars of the DOM and whatever front-end framework du jour is running the show. The notion that there's some transferable knowledge gained from the practice of programming in the abstract that enables one to see under the hood of the workings of the modern world seems like provincial hubris to me.
posted by invitapriore at 5:51 PM on October 11 [2 favorites]


I do think it's important to at least de-mystify this stuff for kids. It's important to be able to think critically about the ways technology affects our lives, and it's hard to think critically about something fundamentally mysterious. A lot of tech is manipulative and even predatory.

I think learning some code as a kid, even though I never took it very far, gave me the confidence to approach tech with the attitude that even if I don't understand it, I could. It's all just code, written or at least designed by people, sometimes well and sometimes badly, sometimes with good intentions and sometimes with ill.
posted by Anticipation Of A New Lover's Arrival, The at 5:58 PM on October 11 [2 favorites]


I'm sort of coming down on the idea of 'no' purely because I know there are a lot of people in the world who resent the idea that understanding the details of how things work is necessary or valuable. These are the people who say that learning about how something works takes the mystery out of it. It's a big picture perspective that I don't think the tech world really has time for or appreciates.

But vice versa; I mean there's the regular complaint that tech is deprived of the humanities but I think a lot of these people would find the perspective necessary to work with computers completely alien. Computers do not tolerate ambiguity, and the pretence that they do is the work of countless developers and computer scientists to make it appear so.

So yeah, I'm not entirely sure this is a thing everyone needs to know.
posted by Merus at 6:57 PM on October 11 [1 favorite]


I am coming to this discussion as a STEM trainer and enthusiast, so maybe I am talking past some of you or making inferences that come from STEM and not strictly CS. So yeah, the idea of just "teach kids to code" maybe has shortcomings if that is a completely siloed, but I am thinking of the coding and the teaching around it as part of a robust interdisciplinary STEM program.

In the STEM stuff we do for young learners, we are very much focused on "Engineering Habits of Mind" and "three Cs" (Creativity, Collaboration, Connections to the real world) which quite explicitly promotes critical thinking as well as useful people skills. CS within this sort of framework, to me, is excellent.

Interdisciplinary and embedded in meaningful real world contexts, that is a generalist methodological principle but it applies here too. So, we teach them to read and write and then they read specific things. What do they read? Well, maybe they read a story about bullying, or about families and how our parents love us, or whatever - it is all with a larger purpose, and meaningful for young minds. We do not get them reciting by memory the Koran, or the Analects of Confucius.

Similarly, in the analogy, with CS I would imagine a good starting point to be programming tracker robots to follow AND / OR paths, and then to work on the basic understanding of WHY that path is broken, or how to fix it, or whatever. We are not going to get them started parsing "particulars of the DOM and whatever front-end framework du jour is running the show".

And this kind of CS stuff would then be embedded in the larger STEM stuff. You work in a group, and we reflect on that process afterwards. We look at other groups and their solutions to encourage peer learning. We explicitly flag moments where identifying problems and creative problem solving took place in the process. And then make the connections - could this kind of robot deliver mail? Would it be useful here in school? How? What would we need to change about the way it is programmed?

Anyways, I am probably mostly just talking out my ass at this point, but hope that clarifies a bit where I am coming from...
posted by Meatbomb at 7:24 PM on October 11 [2 favorites]


Just in case there are some commenters that did not end up watching the video (which is perfectly understandable; it's a time commitment), programming is really not given much emphasis at all in the talk. It's really much more about computer science. It's true that there is an existing conversation out there in which some believe that all kids need to program, but I specifically posted this talk instead of any number of other possible approaches because it gives particular emphasis to the kinds of thinking that can be done away from computing devices of any kind ("unplugged")- which I think is ultimately more valuable than teaching the specifics of a given language or technology.

Also, another point made explicit in the video is teaching all kids a little CS could help address the pipeline problem that is one factor contributing to the lack of diversity in both CS academia and software development. I get the impression that there's some resentment of the idea of starting early, like they're trying to brainwash everyone into becoming techbros, but at least for SPJ, he's hoping to do the opposite- to open CS and programming to a greater influx of diversity.
posted by Jpfed at 11:12 PM on October 11


Yeah, I think there's a difference between 'teach kids to code' and 'teach kids how to make a computer turtle draw a picture' because we did the second one at school and I think it was a great little exercise (and I'm real curious to see how we've improved on that approach in the intervening years)

and then a big difference between that and some of the other things talked about in this thread.
posted by Merus at 11:32 PM on October 11


Also, another point made explicit in the video is teaching all kids a little CS could help address the pipeline problem that is one factor contributing to the lack of diversity in both CS academia and software development. I get the impression that there's some resentment of the idea of starting early, like they're trying to brainwash everyone into becoming techbros, but at least for SPJ, he's hoping to do the opposite- to open CS and programming to a greater influx of diversity.

Then he misunderstands the pipeline problem, which is less about women and minorities not getting an early start (and again, the idea of getting kids started in CS early because they need to is toxic and exclusionary, and can't be fixed by conceding the point), but by social roadblocks being placed in the way of them, discouraging them from studying tech. Again, I recommend reading up on how CMU retooled their program, going from the sort of CS program that pushed women and minorities out, to one that supports them and gives them the tools to succeed.
posted by NoxAeternum at 1:47 AM on October 12 [2 favorites]


Teach language early.

Teach debate and rhetoric early.
posted by rum-soaked space hobo at 5:48 AM on October 12


The thing about using CMU's CS program as an example is that those students still had to get into CMU in the first place.
posted by soren_lorensen at 5:50 AM on October 12 [1 favorite]


Yeah, I think there's a difference between 'teach kids to code' and 'teach kids how to make a computer turtle draw a picture' because we did the second one at school and I think it was a great little exercise (and I'm real curious to see how we've improved on that approach in the intervening years)

You should look at MIT's Scratch project. I've seen pretty young kids use it to e.g. create simple platformers, clicker games, quizzes, etc -- nothing groundbreaking, but also concretely allowing them to make imitations of things they've used and can connect to and now begin to have an understanding of what goes into making them work.
posted by tocts at 6:57 AM on October 12


There are a bazillion new versions of "teach kids how to make a computer turtle draw a picture." If everyone here thinks those of us doing STEM mentorship are teaching six year olds C++, you are... not correct.

Also, a former professor of mine (and a mostly-lurking MeFite), who cares deeply about diversity of all types within engineering, did research that found the following: women are more likely to stay in college-level engineering programs when they have hands-on, project-based work showing them how math and science are applied to real-world scenarios, as opposed to a couple of years of standard lecture-based classes in fundamentals without direct application. Their research was limited to those who had already self-selected into college engineering and the researchers pointed out that this effect may extend into earlier parts of the pipeline - if you had a robotics class in high school, would you be more likely to pursue engineering in college than if you had to gamble on signing up for a highly focused freshman year curriculum for a career path you didn't really understand?

Anecdotally, this is something I really identified with. The mentors of my robotics team in high school asked us (a team of girls from an all-girls school) why those of us who were applying to engineering colleges wanted to do engineering, and without fail, we all said "well, because we're good at math and science." They were astounded - one of them had found some study that showed men say they enter STEM because they like to build (or break) things and women say they enter because they're good at math and science, and here we were falling right into the gender lines. And what happens when you're hit with crazy freshman year physics and calculus designed to wash you out? If you seem to not be as good as you thought at it, perhaps you think engineering isn't for you, and you leave the program? Whereas if you have your eyes on the prize - you know the math and science is a means to an end, and the end is designing and building cool shit, whether that's code or space shuttles, you're more likely to power through it and stay in the program. And yeah, my freshman math and physics classes sucked, and made me feel terrible about myself, and I was questioning whether I was meant to be there, but I knew I absolutely fucking loved robotics and powered through - without that knowledge, there is a really good chance I'd be in a different place today.

So NoxAeternum, I'm 100% with you that changing the way this stuff is taught at the college level can go a long way in no longer rewarding and perpetuating the privilege and toxic culture that currently tends to feed the STEM pipeline, but that's not the only part of the solution - just making my freshman math and physics classes easier wouldn't have given me a reason to persist the way my high school robotics team did. There is no silver bullet here. If literally the only thing we care about is increasing diversity in STEM - and that is a valuable goal but I don't think it's the only one - but if we assume that's the only thing, then yes, you're right, teaching kids to code when they're in kindergarten doesn't completely solve that problem in the way it ought to be solved. But I do believe early introduction to what engineering and technology really are, and how they work, and how they're made, is a piece of a *lot* of puzzles that is worth pursuing.

We make athletics part of early education, and there aren't many professional athletes that didn't learn to do their thing at a young age. We teach foreign languages early in education, we don't make people wait until college to learn them. We give kids the tools they need to pursue medicine, social sciences, literature, philosophy, whatever, by setting them up with lab science skills, literature studies, reading and writing, critical thinking, studies of history and society, etc - why is setting them up for what is still a fairly new field (in the grand scheme of educational planning) with fundamental skills like coding and design such a horrible thing? What is it about the magic age of 18 that makes it appropriate to wait for before kids can learn something in a structured way?
posted by olinerd at 7:27 AM on October 12 [5 favorites]


We make athletics part of early education, and there aren't many professional athletes that didn't learn to do their thing at a young age.

The athletics we teach at a young age through school tends to be focused primarily on general fitness. Elite athletes are usually training in programs and systems outside of the educational system.

We give kids the tools they need to pursue medicine, social sciences, literature, philosophy, whatever, by setting them up with lab science skills, literature studies, reading and writing, critical thinking, studies of history and society, etc - why is setting them up for what is still a fairly new field (in the grand scheme of educational planning) with fundamental skills like coding and design such a horrible thing?

Our educational system is designed to give students a broad knowledge base that will allow them to interact with society, not to begin priming them for working in a specific field. As several other people have noted, pushing CS in primary education is more of the latter than the former. That doesn't mean that we shouldn't be encouraging every student with interest in tech (far from it!), but saying "we should be treating CS as a core subject like math or general science" sends a certain message about the primacy of tech that I, for one, don't think is healthy for our society.

In addition, I have stated several times that I find the idea that to be successful in tech requires immersion from an early age to be toxic, exclusionary, and fueling further toxicity in the tech community. It is something that needs to be opposed, and you cannot do that by conceding the point.
posted by NoxAeternum at 7:54 AM on October 12


I don't really think that the type of CS skills that are being taught, or even are being considered, for primary school curricula, are specialized to a particular job.

Computers are general-purpose tools. There are very few fields where they aren't applicable and where understanding how to use them effectively isn't going to be an advantage. That's setting aside the jobs where using them in some particular way is an absolute qualification. (And I'd argue that there are an increasing number of jobs where that's an implicit qualification, if not an explicit one.)

Within actual software development, or stuff-that-uses-software development, I think there's going to be increasing demand for people who actually do understand the entire stack, and developers whose knowledge is limited to only working with high-level abstractions are going to be glass-ceilinged. This is, I admit, sort of a controversial stance, because it goes against the trend over the past several decades to hide complexity and see abstractions as powerful, but my opinion is that's gotten us a lot of baked-in insecurity, and fragmented knowledge about how systems—the actual systems that make civilization run—work, and should be Considered Harmful. I think we need to puncture abstract models wherever possible, minimize their use, drill down to the hardware, and use the least complex and simplest technology possible to do a particular task. If building up complex layers of nested abstractions was the crowning achievement of 20th century computer science, then taking them all apart where they're not absolutely required should be the first task of the 21st. Engineers who only understand a horizontal sliver of the stack are increasingly a liability, if you're building anything important that might come under attack—which is basically everything. (The road to hell is paved with "well, this isn't really a critical system so...".)

But that's for the people who are actually going to build the stuff that the rest of us get to use. For the rest of us, it's the ability to use computers as tools, to do other jobs. Which isn't different from ensuring that people in previous generations could use the best-available tools that were ubiquitous then.

Exactly where "basic literacy" ends and "job training" starts is an arguable point. But making classes horribly abstract doesn't seem like a good teaching strategy. At least for me, and I think for a fair number of other students, abstract subjects just aren't interesting. I didn't find calculus interesting until I took Physics, and saw that you could do stuff with it, and I certainly wouldn't have bothered to pay attention in a formal Logic class absent some direct and immediate application for it, like programming a computer. (And FWIW, the only reason I ever bothered to learn how to write simple computer programs was because they offered a lazy way to avoid tedious longhand methods of solving equations. You know, cheating.)

There are lots of places where we teach an abstract skill using some application as a pedagogical tool, and nothing wrong with it as an approach. Obviously different people have different learning styles, and we should use multiple approaches—there are freaks students who enjoy the abstractness of math and formal logic, and that's super weird just fine, too.

But not teaching everyone how to use computers effectively as tools, given how powerful they are, how unavoidable their use is, is going to widen the divide between people who know how to do that and who don't. And it's important to remember that a lot of things that we now view as core skills were, at one point, new technologies. Writing was once a specialized occupation; I think we can agree that there are benefits to it being universal. Long division was developed in the 16th century, and the way it's generally done today was new in the 18th, and added to school curricula in the 19th. Shop classes (wood, metal) were added in the 20th century when those tools were important skills for young people to be literate in. There is a long tradition of trying to match education to the skills that we want to be universal, and nothing particularly special or inviolate about the liberal arts curriculum.
posted by Kadin2048 at 9:57 AM on October 12 [2 favorites]


In addition, I have stated several times that I find the idea that to be successful in tech requires immersion from an early age to be toxic, exclusionary, and fueling further toxicity in the tech community. It is something that needs to be opposed, and you cannot do that by conceding the point.

I still think this is a slightly backwards way to look at it. Of course you don't have to start early to be good at CS. I know plenty of people who prove that's true. But most things are easier to get into if you start early. It wouldn't be such an exclusionary concept if it was part of public education for everyone.

(The difference between the theory and practice of "everyone learns this in public school" is of course an issue here but it's arguably a separate issue because it applies to just about everything.)
posted by atoxyl at 10:30 AM on October 12 [1 favorite]


Or I mean - it's an exclusionary (and false) assumption that you have to start early. But one is always excluded from a worthwhile opportunity by not having access when other people have it.
posted by atoxyl at 10:43 AM on October 12 [3 favorites]


The discussion in the OP video, though, is about incorporating computer science as a core element of education from the primary level onwards. Yes, writing was once a new invention, but it's been literally millenia since it was made a cornerstone of pedagogy. Long division was an extention of mathematical techniques that were being taught. Vocational education has always been considered ancillary to the core educational curriculum (which is why too often it's on the chopping block when budgets run low), and routinely is not even available until the secondary tier. Also, computer literacy is not the same as computer science. Students need to understand how computers are tools and can be used as such in a variety of fields (as well as their limitations and risks), but that more calls for incorporating computer literacy into education as a whole, not adding CS to the curriculum.

I still think this is a slightly backwards way to look at it. Of course you don't have to start early to be good at CS. I know plenty of people who prove that's true. But most things are easier to get into if you start early. It wouldn't be such an exclusionary concept if it was part of public education for everyone.

Here's the thing - name me another professional field outside of athletics (which is its own mess) where there is a cultural expectation of people needing to have started early in their lives to be good? Because from where I sit, I really don't see that mentality anywhere else except for programming and tech - in fact most other fields have moved away from this, hence the decline of the apprenticeship system. And in turn, my feeling is that the cultural expectation there is what drives the push to put CS in the core curriculum. More to the point, this cultural belief is toxic and exclusionary (and I believe that it's intended to be such) and as such, we should not be feeding it, but combatting it.

I'm all for STEM mentorship programs and giving interested students of all walks of life the opportunity to learn and grow. But that's not what the push to make CS part of the core curriculum is, in my view. In my opinion, it's an attempt to try to work around a toxic, exclusionary belief, rather than addressing the issue.
posted by NoxAeternum at 10:55 AM on October 12


Well, music is definitely one of those fields. Just sort of the arts in general, which is why most cities have a performing and creative arts special school. Foreign language as well (and again, there's special schools for that as well.)
posted by soren_lorensen at 11:03 AM on October 12


Fair enough, though I'd also point out that those fields don't have nearly the hostility to latecomers that is endemic in tech culture. Furthermore, for a number of the performing and creative arts, the need to start early is, much like athletics, due to the physical requirements of the field - musicians need to develop muscle memory, dancers need to condition their bodies, and so on.

Tech culture has a mentality that the only way to be truly successful in tech is for someone to be involved with tech from an early age, and if you come to the field late, you're so far behind that what's the point? Again, this is toxic, exclusionary, and anomalous - and needs to be pushed against.
posted by NoxAeternum at 11:19 AM on October 12


I'm not sure how many of you know the context behind Mr. Jones and his Haskell language, so I'll chime in. One of the founding papers for computer science is by Alan Turing, and a bad reading of his paper will tell you that the only way to tell if a computer program will run as intended is to run it. That's the original excuse for decades of bad software, and it dates to 1937, so the excuse has been invoked the entire time the industry existed.

That bad reading is a bad one, and now things are changing. The state of the art in programming is advancing towards helping programmers verify through computer generated mathematical proofs that their code is free of an every growing set of classes of software bug, not at run time but at compile time. The buzzwords are formal verification, model checking, and proof assistants. The software products that do this are incredibly hard to learn to use. And most of them rely on a particular branch of math called category theory, which itself is pretty damned abstruse. Haskel is based on category theory, and is also not an easy language to master.

There's a quote attributed to Jones: "a monad is a monoid in the category of endofunctors, so what's the problem?" If you've seen the video, you can readily guess that the quote is satirical, and he's not really like that. He knows full well that there's a problem: his work is based on an extremely inaccessible body of mathematics, and it's hampering his efforts to grow a community and user base around the Haskel language. Well, I do have a data point to offer about the issue because of my own background.

I did not have much access to computers as a kid. Israel in the 1980s did introduce computers into schools, with after school programs primarily, and I did avail myself. I also sucked up to kids who had their own. I pretty quickly soured on my wealthier peers who got computers from their parents and used them for games and to have the means to manipulate kids like, well, me. I did not take long to notice that one of my friends was, well, not much of a friend when he didn't need me to help him with BASIC, and that while he had the Apple IIe and the Amiga, I was the one going to the library and digging out the books that would help him use them. (And reading them to him because his English sucked.)

I did, however, have one advantage that helped me much more than access to computing. WHen I was in 7th grade, Israel finally decided to be hip and with it with the New Math. In 1986, years late, of course. And Israel being Israel, the ministry of education garbled the New Math into a dictat telling schools that the 7th grade math classes should devote time to make sure kids learn the terminology and basic ideas behind set theory, and learn how to perform math on numbers written in non-decimal number bases. Our teacher dutifully ran us through that curiculum. She honsetly said she did not know why the ministry of education wanted this brief diversion from the rest of the syllabus. Nothing in the material mentioned computers. And our exercises, while they required use of all the first four powers of two as number bases, also required base-6, 7, 12 and 60. Yet that prepared me better for computing, which I do for a living now, than anything else in those years.

So all in all I think Mr. Jones is on to something here.

[0] Important difference between Israeli culture and the time and American culture at the time. A teacher could say "I don't know why I'm required to teach this." But a student dared not ask "why should I have to learn this?" Learning the material was better than not learning it, and that was reason enough. Failure to internalize that notion was evidence prima facie that you had not attained the maturity and dignity expected of a 7th grader, and a teacher could reduce you to tears in front of your peers for asking that question.
posted by ocschwar at 10:19 PM on October 15 [1 favorite]


« Older Larger Spleens Help Bajau “Sea Nomads” Dive   |   Please Adjust Your Set for Live Disasters Newer »


You are not currently logged in. Log in or create a new account to post comments.