My wife has been teaching coding to kids for a few years now. Her prediction, or worry, is that it will end up looking a lot like math education: A few students excel while the majority of the class see it as an endless source of frustration and quickly learn to hate it.
And then discussions like these are almost exclusively held by the minority who excelled.
I've mentored a great deal at the HS/college level and I can share the same sentiments.
I hate to sound so crass but you're either cut out for it or you're not... People get shoved into STEM/tech/whatever because it has good career prospects without ever considering the nuance of what makes children/people successful in this.
Frankly, most people won't even wrap their head around simple conditional logic/algebra. I say "won't" because in my experience they're fully capable, they just put in minimal effort to get past the exercises. I end up having to pace my entire instruction to those kids when I find them in my groups. It's worth noting that I'm in the US where this is sorta an unspoken social contract for getting through school: keep your head down and show minimal effort + don't make waves and you'll be passed right along without a problem (usually with good grades). Thankfully, I'm doing after-school program stuff and the kids want to be there; but, you'd be surprised at how many kids are there because their parents are forcibly bolstering college apps with extra-curriculars (gross).
Sorry to wander a bit there... My main point is that regardless of whatever ideals we would like to hold not everyone is cut out for highly technical work, especially coding. Hopefully I don't come off as too much of a curmudgeon!
I think a lot of it comes down to whether or not it interests you. Basically every programmer I've ever known naturally got into programming because they screwed around on the computer in their free time and eventually stumbled onto some task they wanted to do that took them down that road. Who knows how many people are in the field now because they wanted to play around with Minecraft mods 10 years ago.
I think if the power of a computer is put at your fingertips and you don't want to dig deeper, or see what else you're capable of creating, that's just how it is. I don't think it's any different from how some people never get into sports. It's fine to introduce kids to it and I'm sure it'll take with some of them, but there's no need to force it any more than you would with any other field.
The other thing that I've observed tutoring in business school is that some people were probably not good at math in high school (and I'm guessing didn't care), were basically able to skip it in college, and now they have some required courses that have pretty easy math by the standards of people with technical degrees, especially engineering.
But there were people I was tutoring who didn't what a graph was, didn't know how to solve an equation, etc. I'll try but I really can't get you through statistics and economics with some level of elementary school arithmetic.
This was a particularly bad case but one can read any of a number of first year MBA books in a similar vein: The math is killing me.
For sure. I'll just dig on the specific (and very anecdotal) experience:
So many of those kids didn't want to be there, and couldn't be bothered to just wrap their heads around if-then logic, or storing a value to a variable... simple, simple stuff. They were capable, and we'd do true/false tables on paper etc. to talk about how their LEGO "vending machine" or whatever should work but it was pulling teeth and over 50% of the groups never finished outside of physical assembly.
I got a real respect for teachers at that point and realized that so much of your work is sinking time into keeping kids who could give two-s#&ts less "on the rails" vs. actually mentoring a kid who has real interest/potential in the subject matter. I believe what I experienced is a common experience for educators =(
But my whole original "won't" bit spells it out pretty clear... to rephrase: I'll venture to say almost all of those kids were capable, they just "won't" while trying to manipulate you to do all the thinking for them. "Welllll can't you just give me the next line Mr. folkhack.....? I just don't knowwww......" with puppy eyes sorta crap.
Ninja edit: It's worth noting that general school population sorta stuff is where you get the above anecdote, vs. extra-curricular 90% of the kids want to be there which makes it night-and-day. I will never do a "general school population" thing ever again after learning I'm legit not cut out for it.
I guess you're one of the few hners who'd be able to understand what I wrote here through actual experience[1].
> I've given the same tests to my students 3 times - word for word and many students still failed. The good students who cared raised their scores with each repeat. The non-nonchalant students sometimes, managed to score less.
I think so... and in their defense: I've been there.
I was sorta shoe-horned into super-mediocre Midwestern colleges here in America due to my mother working at a private institution in the same city that I grew up in. I went for art and computer science... outside of a couple of exceptions the professors were horrible, and the student body even worse being a dumping grounds for rich Illinois suburbs that thought their kids couldn't/wouldn't get in trouble in small town Iowa.
My point is - I can relate. So many of these kids are disenfranchised for some reason or another and I'm more empathetic to it because I couldn't haven given two s$@ts in college myself - there was zero value vs busting my butt on professional/personal programming projects. Like - teaching us Pascal in 2005 claiming "it's coming back" lacking of value. "Software isn't going to the internet" sorta lacking...
I even had to "snap back" for some courses like my elective electronics course. The prof really cared, and wanted to give you a solid understanding of the basics. He even threw out a poor test class-wide and redid a week of instruction once because, "mathematically that was on me, I'm sorry." Somehow it was way easier for me to put forth 100% effort in his class where I couldn't be bothered elsewhere. He gave me an actual reason to be there/care.
Overall I got burnt out on education, dropped out for a dev career that led to people calling me all sorts of "engineer" titles and learned in the school of the hard-knocks. Frankly, I sincerely feel apologetic to my past professors because I was dead-weight in their classroom just going through the minimal motions to GTFO to my real job which actually paid bills vs. putting me into debt. Just like the students failing the same test three times over: I could sincerely not have cared less... When a prof said I should chose between school and work expecting me to obviously choose school, I laughed in her face and dropped out the next day on general principal. I had a mom home going through chemo, my dad was long dead, my brother was an alcoholic, and I had bills.
Definitely playing devil's advocate here, but... I imagine so many of these kids, for some reason or another, are burnt-out on education just like I was/am. I was just lucky by the time I was burnt out that I "had an out".
Aren't all subjects at school like that? Isn't this expected with general education before allowing students to specialize? I wouldn't think it's possible to teach every subject in a way that every student enjoys it.
They might not enjoy it, but if you miss (or fake understanding) a year of high school social studies or language arts, you can still function in the class the next year (maybe with a little bit less practice). The issue I see people run into in math classes specifically is that the curriculum builds on the past heavily enough that if you miss a key insight, you might never catch up (unless someone can take the time to help you restore that ability).
At some point, you learn bad habits, reading comprehension, and writing quality are subpar. But even the different sciences are mostly independent. With math--which is a foundation for physics too of course, while there are a few areas like geometric proofs that I didn't get along with and mostly didn't come back to, math does tend to build on itself to a large degree. And if you get too far behind, it gets increasingly hard to keep progressing.
The main attraction coding had to me as a kid was the fact that it was untainted by the association of incredible boredom a lot of related subjects like maths had, due to them being terribly presented in school.
I'd rather it stay as far away from any official syllabus as possible, there's enough to focus on as regards reforming the existing broken system.
That reminds me of my college CS education. Thank god I had done my own projects before where I could remember the excitement..
What grade does your wife teach? My oldest sons are 7 and 5. They love Roblox. I found Codakids which has tutorials created for kids, where they can create their own Roblox game or Minecraft mod. We created a simple Obby.
Very easy to follow instructions, step-by-step. They were very excited.
I don't know if this should be a major deterrent. My gut reaction is: If you're going to find out whether you can learn coding, better to find out sooner rather than later, for free.
Right now computer science is the "hot" college major, but we don't teach it at the K-12 level in any consistent fashion, resulting in a sort of digital divide. We expect kids to find out if they're really going to thrive as computer science majors by loaning them a bunch of money and putting them through CS 101.
And it doesn't mean they have to become CS majors. There's been lots of discussion of the difference between programming and computer science. Learning to code early, for those with the aptitude, would benefit students in virtually any discipline. It changed my life, though I became a math and physics major.
If anything it's remarkable how many college CS majors clearly do not like programming. At some schools they flunk out, but other schools that can't afford to fail students just end up passing them through.
It doesn't really particularly surprise me. I think you'll find a fair number of engineers generally who love the theory and really aren't especially into tinkering, labs, machine shops, etc.
Let me clarify, it's not like these students love the theory either. They don't like CS in general. It's just that they've been forced into it, whether from their parents or just societal pressure.
That's exactly how I'm seeing it shaping out on it.
As a career path only a few would care at a young age.
To try to sell it as a skillset to young people as a way of simply not being a casualty of automation is a tough sell especially before they've had the chance to enter the workforce and bounce around from gig to gig.
It's not hard to sell older people. Especially if they've lost a lot of jobs and opportunities recently. Many of them are desperate and hungry for new opportunities.
But for young people, to a lot of them this is just no different than another type of Math class.
Especially considering how much math is required for a computer science education. It scared me off, and I became exposed to programming through another field which was far more pleasant due to avoiding all that horribly difficult math.
That seems like most of school when I went through it. History was just memorizing dates and I hated it, but now history is fascinating. English was BS even though I’ve always been a bookworm. Rote learning is a massive issue, but it’s an orthogonal one.
"Coding" as a subject is emerging with all the requisite teacher training materials, state board approved curricula, etc. It bears about as much resemblance to actual software engineering or even hobbyist programming as the AP CS exam does ;)
The best experience I've had so far is just creating simple games and simulations in Processing (P5JS) with kids. The online IDE is very forgiving. But as of yet, I don't think there is really a set of instructions that allow them to think like a Computer Scientist. In many aspects, 1980s style Turtle Graphics and DOS BASIC were more advanced "mind-openers"
The goal is not and should not be too make kid think like engineer. Not in the first step. They first need to start thinking in steps, loops, commands, ifs. Understand it does what you wrote.
>> They first need to start thinking in steps, loops, commands, ifs
This is exactly what turtle logo does, with the modest, easily definable, straight-forward goal of drawing cool pictures. I think one of the big mistakes we're making with kids is telling them "you can build awesome video games with almost no work". Well, a video game to my kids is Zelda or Halo. Nobody is building those games over an afternoon in scratch. Coding may be easier, but it's still hard work.
Ya, I think that is definitely important. You need to get started with something that can give you quick feedback.
I remember one of my first little qbasic programs could output colors on the screen with different tones as it changed. It was probably 10 or 15 lines of code and hitting that key to run the program on a loop was like a little drug high. I was hooked and I could see the endless possibilities of what I could create by just modifying what I already had on screen.
Had my first foray into programming been a terminal and a book about C, I most definitely wouldn't have stuck with it.
Yeah, but above all it should be fun at that age. It shouldn't be a chore that 90% of the students abhor like math. Students should learn basic concepts, but the primary focus should be to inspire a genuine interest in learning about computers and programming.
Some educators take this too far and make kids feel like they're getting a watered-down version. It's a fine line between math-style instruction and gamified block coding.
I've noticed that a lot of beginners get tripped up on the syntax. Unfortunately a lot of the fun problem solving parts of coding only come after you get over that hurdle. I don't think the visual editors where you drag and drop code blocks work as well but I can't think of a better way to solve the problem.
In highschool, I once competed in a statewide computer science competition. I had been coding for a few years by then, but mostly in qbasic and then php and JavaScript.
It turned out to be a written test and with the exception of some basics, it was mostly snippets of C code and then multiple choice responses that describe what the code did. Or the reverse where you would select a snippet of code.
I remember that I felt like I had guessed on every one of them. In some cases, I was able to make an educated guess by ruling out the obvious. But many times a total guess.
I spoke to an older kid after the test and expressed how difficult I thought the test was. He and a few others said they thought it was easy.
I ended up winning first place.
A university had put on that competition. That experience factored in a bit on my decision to not study computer science in college and go the economics/finance/business route instead. Even though I knew my path was likely tech.
I wonder if part of the problem of integrating coding classes into schools is that anyone who has the ability to teach coding could probably get a much higher paying job outside of the school. So the quality of instruction in middle/high school isn't very good.
In middle school one of my friends installed the shareware version of Doom onto several computers and the teacher had no idea how to uninstall it. So we were able to play it when she wasn't looking. In high school, my QBasic teacher left half way through the semester to check herself into a mental institution, and the school's follow up course, introduction to C++, was cancelled since only 4 people signed up. There just wasn't good instruction, and I think that led to there being lower interest. However, I only have my own data points to go by.
My programming teacher at age 16 directly answered this as a rhetorical question to the class. He just said, I love teaching, I love living here (no tech sector), and I love programming. He found teaching 16-18 year olds programming really rewarding. I found him a realy great teacher.
He didn't want the stress of moving to a city and programming for others. That was 20 years ago though. It might be different now.
That was before a good developer who can pass interviews and get a promotion or two could make 3x (easily) to 10x (if a few things went their way) as a teacher.
There are some people who love teaching enough to make that trade off, and it’s wonderful that they exist, but they’re going to be exceptionally rare.
I'm not sure about that. As a programmer, you have a lot of freedom to program but as a teacher you have very little freedom to just teach. You have to fit to a curriculum and make sure to give a bunch of assignments and tests even if that's not the best way for your students to learn. I love teaching but I don't know if I could ever be a middle/high school teacher.
But that's not the question, obviously most good teachers are going to enjoy teaching. It's doubtful that the intersection of good programmers and born lovers of teaching is large, just because most people that want to teach do teach, and people that like to program do program.
This is a problem with many subjects, including math and science. Sure, somebody with a math major and teaching certificate might have a hard time getting a job outside of teaching, but had they not pursued the teaching credential, they'd be adequately employable without it. A friend of mine just quit his high school physics teaching gig and now has a nice industry job.
And it doesn't take a computer science degree to teach coding, just as it doesn't take one to learn it. My mom taught programming at the high school and college level for several years during the 1980s, and her degree is in chemistry.
Two things we don't know how to teach are: Coding and teaching. What I mean is there's no sure fire way to turn more than about 10% of any group into coders or teachers. Even mathematical ability isn't necessarily a good predictor of coding ability. So the good coders and teachers actually come out of the same pool.
>I wonder if part of the problem of integrating coding classes into schools is that anyone who has the ability to teach coding could probably get a much higher paying job outside of the school. So the quality of instruction in middle/high school isn't very good.
I'm sure some of this is real, but the "programming teacher" in the local town is a former industry developer who moved to teaching after having children so that the work schedule worked for raising children.
Coding was an embedded aspect of the primary and secondary school mathematics curriculum through my (United States)public school education in the 80s and early 90s. In primary school, once every week or two we'd spend a class in the computer lab full of TRS-80s to work on Snake (a Logo variant).
Computers gained "multimedia" and the programming complexity to replicate all of the professional level programs increased dramatically. The BASIC prompt on a TRS-80 isn't as far removed from the everyday programs you would run on such machines. Why bother with programming when you have all these fancy distractions?
As a rural Canadian student the closest I came to programming was the Turtle Drawer on a Apple IIe in elementary in the early 90's and then HTML in high school at the turn of the millenium. There were no resources to do more and the teachers had no education in it.
Very similar experience to me. I grew up in the 90s in a suburb of Dallas, TX. The most interesting things we did in elementary school was play Oregon Trail on Apple IIe and make obnoxious sounds in Kid Pix once we upgraded to iMacs. In High School, a CS curriculum existed but hardly any interest or marketing the AP CS classes were made. HTML and web development classes started to make its way in late 90s.
There was no programming at all over the course of my education (started school in 1997). It wasn't even offered. Everyone who went on to major in computer science in college was self taught and self motivated.
Instead our computer education was focused on typing skills and microsoft office. I'm not sure what people are learning today. I was working with an undergrad recently, and had to teach him how to copy text from a log file and paste it into a notepad file and save it. The kid had no clue what to do, because he was raised on mobile devices which doesn't really have a concept of text files. Computer literacy has fallen by the wayside in education, and the writing has been on the wall for at least two decades now.
I wonder if it was more regional or which school system you were in? I started stuff in 5th grade in the early 80s on a TI99.
The thing is it seems everyone even then wanted in on it. But not everyone could do it. Even fewer liked it. I do not see how that has changed much either. I ran a class for programmers a few years ago. By the 10th class they had all dropped out due to a lack of time and interest. I took and taught the class because I found the topic interesting. They seemed to only want in if it gave them some sort of advancement in their job. It would have if they had stuck it out. But it became 'too hard'.
Expectations in schools (for both what teachers could or should teach, and what students should be exposed to) changed. I think by the 90s priorities had shifted enough (and general exposure to computers was on the rise due to their increasing ubiquity) that teachers were refocused on other things. That was also the start of (in the US) the much stronger emphasis on "teaching to the test" (it existed before, but was getting worse). You had cutbacks in many parts of the school (like music, some athletics, arts, even shop) in order to maintain focus on the core subjects of math, English, history, and science.
I have never heard coding referred to as a fad. Maybe it appears that way from the outside in the way that we support it in the US. The bigger issue is that we keep cutting education and lack literacy and computer literacy. Computer courses should’ve always included coding for all students. Instead we teach them how to use ever evolving office suites in an attempt to prepare people, which doesn’t give them the skills to use any new or changed software. Kids should be learning debugging and coding at a young age.
Yeah this is a big problem, courses shouldn't turn into how to use Excel/Word/Photoshop. I think there is room for those types of courses, but our education system just hasn't caught up with how to integrate technical software how-to's with a course that teaches a core topic.
My teacher managed to get our entire school of over 3,200 kids to take an intro CS class that used Racket and NetLogo. I still think that's the most insane, brilliant accomplishment. He managed to get everybody in this school to learn Lisp. Of course a lot of people found it awful and boring and confusing, but it's still a mad genius accomplishment.
I'm skeptical of teaching CS to kids because I'm not sure we know how to teach it to college students. As far as I can tell, we have a strict divide between people who can write code and people who can breathe code. And the people who breathe code rarely, if ever, learn from their courses as much as from themselves.
I suppose exposing more kids earlier will get them to start teaching themselves, but perhaps we can do it outside of a classroom format. I'm imagining a more free system where kids can explore a variety of activities, some of which are programming influenced. Like a set chunk of computer time with some programming options, some writing options, some film options, etc. Digital Montessori, so to speak.
That's not a detail I've heard from my math teacher friends, but other things have convinced me that I'll be teaching my own children math separately from what their school covers (general delays in certain topics, such as long division, basic algebra, and other things getting pushed back 1-3 grade levels versus even 10 years ago).
There is one huge weak point in coding teaching: almost none of places where kids could publish their works. I'm not talking about simple code snippets but something bigger like real desktop, web or mobile application. There are some nice places in game industry, mostly addons for popular games. And besides that - literally nothing.
You can easily publish music, video, writing, but not working and ready to use software project.
I’d be careful about teaching foundational coding or significant literature too early. Not everyone has superior intelligence (I certainly don’t, but that should go without saying for most, perhaps not here since the bell curve is outta whack on HN) and if you take on abstract or tough material too early, you could associate a discomfort from the struggles of being bad at it initially. It’s kind of one of the reasons people basically look at reading like it’s the worst thing on Earth because they get hit with Shakespeare too early, and this develops life long habits of non-reading.
Making these habits sustainable is more important initially. You’ll lose a generation of kids if you start them on raw CS.
Something to think about, because ultimately we want more people that get into it because they really wanna make games or apps, vs the current reality of ‘hey this field pays and others don’t’. But this is the ideal we want for all disciplines.
One way to mitigate the challenge is to make it ungraded. It's an opportunity to explore a subject, not a chance to get an A or yet another F. The way that we want to attach a score (and the consequent impact of that) for every activity is what creates a lot of strife for learners. It's bad enough that the material is challenging, but worse when a poor grade means yet another parent teacher conference or letter home or remedial course.
Sure, so the one magic bullet we have as a field is that we can pretty much woah them with the possibilities of learning this stuff. So you play Fortnite or sit on Reddit all day? This is how you build that.
A good simple game engine would do wonders for programming education.
Take something like React, not exactly a learners platform either.
We never really build apis like that anymore (or ever have it seems), where we literally ask ‘could a kid do this?’.
Issue with games is that it is much less fun to make them. It also have strong artistic component that discourages non artistic kids. It is often tedious to test.
Just because someone likes programming does not imply he will enjoy actual making game.
It is good to attract kids to at first, but not so great after.
Also, just because someone enjoys playing games does not imply he has any motivation to quite code for game. People mostly fall love with visuals or story or online competition. Which leads to drawing, modeling and writing or level design more.
> you could associate a discomfort from the struggles of being bad at it initially
That's not my experience at all. My Mom taught me algebra at home when I was in elementary school, years before algebra is generally taught. I struggled a lot and did have the discomfort you mentioned. That instantly went away when schools started teaching algebra and I discovered that I already learned everything and can do the exercises so much faster and better than my classmates. I was already pretty confident but it was another confidence boost.
> I’d be careful about teaching foundational coding or significant literature too early. Not everyone has superior intelligence
Disagree. The problem is that everyone learns differently and has different home lives that create learning hurdles. There is no intelligence barrier for individuals, it’s more an interest barrier.
And then discussions like these are almost exclusively held by the minority who excelled.