The End of Programming

In this episode I unpack Welsh’s (2023) publication titled “The end of programming,” which asks when generative AI will replace the need for knowing how to program.

  • the end of classical computer science is

    coming and most of us are dinosaurs

    waiting for the meteor to hit that right

    there is a subtitle for a paper I'm

    unpacking titled the end of programming

    by Matt Welsh in today's episode of the

    csk8 podcast you can find a direct link

    to this paper at jaredelleary.com or by

    clicking the link in the app that you're

    listening to the song this paper is only

    two pages long so this is going to be a

    relatively Short episode if you don't

    know my name is Jared Leary I've worked

    with Evergreen kindergarten through

    doctoral student in a variety of

    contexts like music education and

    computer science education in these

    still episodes I'd like to talk about

    how scholarship relates to K-12 Computer

    Science Education in a recent interview

    that I did with Josh Sheldon which is

    titled empathetic listening in computer

    science with Josh Sheldon that's from

    episode 173 Josh and I talked about how

    AIS could potentially change the field

    of education and especially Computer

    Science Education today's very short

    article is going to talk about this

    here's a quote from page 34 quote one

    thing that has not really changed is

    that CS is taught as a discipline with

    data structures algorithms and

    programming at its core I'm going to be

    amazed if in 30 years or even 10 years

    we are still approaching CS in this way

    indeed I think CS as a field is in for a

    pretty major upheaval few of us are

    really prepared for programming will be

    obsolete end quote so the author goes on

    to discuss how they think that rather

    than having to write programs you're

    going to train AI to write programs for

    you and in the show notes I'll link to a

    couple of videos one of them is like a

    three minute video and the other is like

    an hour-long lecture that kind of

    unpacks some of these ideas more so make

    sure you check out the show notes at

    jaredeliry.com in those videos it author

    talks about how it is very expensive to

    have a lot of programmers on your staff

    what they're theorizing is that sometime

    down the road who knows when maybe a

    year from now maybe 20 years from now we

    might have one person who is going to

    collaborate with an AI and do the

    combined work of what might have taken

    several programmers so if that is the

    case then what does that mean for

    Computer Science Education seriously

    quote from page 35 quote I am talking

    about replacing the entire concept of

    writing programs with training models in

    the future CS students are not going to

    need to learn such mundane skills as how

    to add a node to a binary tree or code

    in C plus that kind of education will be

    Antiquated like teaching engineering

    students how to use a slide rule the

    engineers of the future will in a few

    keystrokes fire up an instance of a four

    quintillion parameter model that already

    encodes the full extent of human

    knowledge and then some ready to be

    given any task required of the machine

    end quote a little bit further down on

    the same page quote in this new computer

    science if we even call it computer

    science at all the machines will be so

    powerful and already know how to do so

    many things that the field will look

    like less of an engineering Endeavor or

    more of an educational one that is how

    to best educate the machine not unlike

    the science of how to best educate

    children in school end quote and so in

    this paper and again in the two videos

    that I link in the show notes at

    jaredelary.com the author just basically

    talks about how the tech field continues

    to evolve in computer science in

    particular at a very rapid pace and in

    ways that we can't necessarily predict

    and the author mentions in one of the

    videos is not so much a question of

    whether it will happen but really when

    and to what extent so if we are actually

    headed in this direction where maybe we

    don't need to know how to program then

    what does that mean for computer science

    Educators first thing I'll say is I

    highly recommend actually taking a look

    at the comment section in the article

    and in the two videos that I link in the

    show notes some people agree some people

    disagree and some people say that we are

    already doing this so for example here's

    a quote from Tobias in one of the

    sections so this is actually from a

    comment on the article itself quote I

    agree that AI models could very well

    displace humans as authors of simple and

    complex software components however I

    would argue that already today writing

    the actual code is only small part of my

    daily work as a software engineer much

    of it is indeed spent discussing and

    also finding the correct requirements or

    Stories devising the architecture

    writing documentation and generally

    thinking about how to keep the code base

    maintainable thus I think that the bulk

    of the intellectual work of getting the

    machine to do what one wants will be

    about coming up with the right examples

    the right training data and the right

    ways to evaluate the training process is

    probably very true but I would say that

    it is already a large part of what I do

    as a software engineer although maybe in

    a different form end quote so again

    that's just one of many different

    comments that are already on the videos

    and on the article itself but this

    really kind of poses some questions that

    I think we as a field should discuss so

    the first question that I have is how

    will this impact CS education at large

    so for example would we need CS

    standards graduation requirements degree

    programs Etc or would they just simply

    change to be modified to new

    understandings of computer science to

    new ways of engaging with computer

    science well things like standards and

    degrees and whatnot need to evolve at a

    faster rate than originally anticipated

    or than they currently do for example

    some states will revise their standards

    every 10 or so years but will it need to

    be faster for Computer Science Education

    or if you listen to the episodes from

    the past two weeks do we really even

    need standards if you haven't listened

    to those yet that's episode 175 which is

    titled the centrality of curriculum and

    the function of Standards the curriculum

    is a mine altering device and episode

    and other aspirations but if we look

    even broader what about CS discourse and

    how many open jobs there are that has

    been one of the primary arguments that

    people have talked about well why do we

    even need Computer Science Education in

    our schools or why do we need to make it

    a mandate in the biggest selling feature

    that people constantly cite is look how

    many jobs are open in your state right

    now and politicians look at that and go

    wow we could help out businesses this

    would be wonderful let's teach computer

    science to kindergartners because

    that'll solve our problems and while

    that has been a very good advocacy tool

    in terms of getting the message out

    there and selling it to people who might

    not understand education very well I.E

    politicians if this actually comes true

    let's say in the next five or ten years

    and we have one person maybe doing the

    job of five are we really going to need

    so many computer scientists out there

    maybe I don't know we might not but odds

    are it's going to look very different

    than it does today in terms of what

    computer scientists do and what they

    need to study in order to prepare to

    become a computer scientist but if you

    haven't listened to it yet I highly

    recommend listening to episode 21 which

    is is the Cs Vision framework and Equity

    centered Computing education with Rafi

    Santo and Sarah Vogel as well as episode

    of Computer Science Education and

    practice both of these episodes unpack

    well what kind of Visions might we have

    for Computer Science Education and how

    might that inform what we think and do

    with computer science in the schools

    that we work with maybe instead of

    focusing on corporate needs maybe we

    could instead focus on self-expression

    or Civic engagement or digital

    literacies or many other things that are

    discussed in those episodes I highly

    recommend listening to those I know that

    was well over 150 episodes ago but

    there's still good episodes that are

    relevant today now if you're listening

    to this and you're like yeah okay so we

    might change our discourse and we might

    need to change our standards more

    frequently but there's still a place for

    Computer Science Education in schools

    right I've heard some people argue like

    Josh Sheldon in a previous interview

    which was a great interview by the way

    thank you Josh some people would argue

    hey we should focus on computational

    thinking this will help us be able to

    think as a computer scientist to be able

    to communicate with AI who will then

    generate programs or code for us now

    that idea is something that like really

    struck me in my interview with Josh I

    really was kind of like grappling with

    that and have been ever since that

    conversation so I wanted to share some

    of my in-process thoughts on this I've

    been very critical of computational

    thinking I think we should instead focus

    on computational literacies which is

    discussed in episode 111 titled A

    revaluation of computational thinking in

    K-12 education colon moving toward

    computational literacies a problem that

    I see with the argument for

    computational thinking is that it is a

    vague collection of ideas and tools that

    are not unique to Computing or problem

    solving so if instead of writing lines

    of code we are going to run some models

    and give it to some Ai and then ask the

    AI to write code based off those models

    and then test their output aren't there

    other forms of thinking that would also

    assist with this that are less vague so

    for example might we use the scientific

    method so we would come up with a

    hypothesis and run some kind of an

    experiment to determine whether or not

    the generated code works as intended

    when we then need to understand how to

    reverse engineer where the problem is in

    order to fix it if it doesn't work as

    intended or we just keep saying hey

    computer try it again if we could

    identify a very specific problem with it

    would we ask the AI to fix it or would

    we have to fix it what about a different

    approach like what about the Socratic

    method so a lot of these generative AI

    platforms are more conversational so

    might we engage in dialogue with AI to

    better understand an idea or to test a

    hypothesis depending on how the AI is

    designed perhaps one of these methods or

    approaches or Frameworks Etc might be

    more beneficial to think of than just

    saying hey I'm going to engage in deep

    composition or abstraction and problem

    solving and then that's going to help me

    communicate with AI those are just two

    very quick examples that came to mind in

    terms of how we might be able to think

    about this I'm sure there are even more

    that are much better at thinking through

    this or perhaps we need to create one

    rather than trying to Crowbar some

    different tools into a new way of

    thinking but to argue with myself I

    wouldn't even necessarily call those

    tools as much as they are just kind of

    like broader Concepts or labels so to

    draw on like teaching as a metaphor

    because it was being used to like talk

    about how we're going to train AI by

    teaching it okay so saying that

    computational thinking involves pattern

    recognition or decomposition abstraction

    Etc it's like saying teaching involves

    delivery of content and classroom

    management and assessment Etc I agree it

    does involve those three things and more

    but the level of variance that one can

    take when we actually get granular with

    each of those topics is so immense that

    you could spend literally years and

    multiple degrees just studying one of

    those things and still not run out of

    different aspects that you could explore

    in each of those areas so for me I just

    think it's a little absurd that we kind

    of focus on those broader labels like

    saying well as a teacher you engage in

    classroom management rather than

    actually talking about okay well how do

    you manage classrooms and in what

    contexts in what ways and when would you

    do it one way and not another way I

    think I think the same thing can apply

    for okay well how are you going to

    recognize patterns or how are you going

    to decompose when are you going to

    choose one decomposition approach versus

    another one so I'm still not convinced

    that computational thinking is actually

    a thing as much as it is just a

    collection of like broader terms that

    are kind of like being thrown together

    and saying this right here this is what

    computer scientists do to be able to

    think without actually labeling or

    defining okay well what do each of those

    look like what are the variances within

    decomposition so maybe computational

    thinking is the thing that we will need

    to be able to work with generative AI to

    create a program in the future maybe I

    doubt it though first I think we need to

    figure out what the definition of

    computational thinking is and then I

    think we need to figure out okay well

    what are the like each of the

    subsections or components of

    computational thinking if we all

    universally agree that decomposition is

    a aspect of computational thinking great

    now let's talk about the different

    approaches for decomposition within them

    then we can actually get to something

    useful and as always when I go on these

    little computational thinking grants if

    you disagree with me I'm happy to have

    you on the podcast I'd love to talk to

    you about it they're like genuinely try

    and understand where you're coming from

    and why you think computational thing is

    the answer maybe I'm just reading the

    wrong materials but I have not really

    seen yet a convincing argument for why

    we should do computational thinking as I

    asked in a Summit many years ago this

    was like in 2017 or something like this

    it was a summit on computational

    thinking I had a question of when is it

    not computational thinking because

    everything that I was seeing is like oh

    when you tie your shoes when you're like

    walking to the store all of that is

    computational thinking and it just seems

    like we're kind of crowbarring into

    anything and everything we can to the

    point where it's gotten so broad that

    it's like meaningless and as a field we

    have still yet to Define well exactly

    what does it mean what does it look like

    so I'll end that rant there but there

    are more episodes that talk about

    computational thinking and I include

    links to those in the show notes at

    charity leary.com but now I want to kind

    of go back to the paper itself and I

    want to problematize one of the key

    ideas so if the shift is from doing the

    programming to teaching a machine what

    to program I would argue that we still

    need to understand how to a program to

    do that why well I mean maybe we need to

    verify if it will work as intended with

    an existing program or we need to be

    able to modify it if we are going to

    create apps that do very specific things

    for specific people or even for a broad

    range of people we need to be able to

    customize it for those different

    audiences or users Etc so yeah you might

    not be doing the majority of the

    programming which sounds great but

    you're still going to adjust some things

    I doubt people are just going to go with

    the default answer that is given to you

    maybe again that will be done through

    some kind of a dialogue with the AI to

    be able to customize things or you might

    go into the code and change the

    parameters around a bit but perhaps a

    better argument is that teachers aren't

    just spoon feeding examples to students

    that they don't understand if they were

    how would they be able to assess whether

    or not a student actually understands

    the content so if you're engaging in

    some kind of a large project where you

    are I don't know like coding a video

    game or something and you're working on

    the physics engine for it you might say

    hey AI I'd like you to be able to code

    making it so that I can throw something

    in the game we've already got code for

    movement we've already got code for

    jumping but I want to make it so that

    when I throw something it's not just

    gravity that affects it but it also can

    hit an object and bounce off of it so if

    we have a wall and you throw a rock at

    the wall it's going to hit the wall and

    then continue to fall but bounce

    backward if I told the AI that hey I'd

    like to be able to add in a physics

    component for something being thrown it

    might spit out code that says hey this

    object is going to move at 9.8 meters

    per second and then some kind of a code

    that will make it so it'll detect and

    bounce off of a wall or some kind of an

    object well it continues to move Etc but

    you're going to need to be able to

    figure out whether or not it's actually

    going to work within your platform for

    example how is it going to interact with

    other Sprites like instead of a wall

    what if you throw it and it hits an

    enemy in the game how is the enemy going

    to respond to it is it going to bounce

    off of them will it do damage to them

    what about if you throw it at a friendly

    Character Are they going to get upset at

    you is it going to change your

    relationship option with them are they

    going to pick it up and throw it back at

    you all of these little conditions need

    to be programmed into what it is that

    you are creating so if you're just

    asking AI for the General Physics engine

    or the algorithm that's going to be used

    to code the object that's being thrown

    great but now you have to make it work

    it's kind of like when you go into stack

    Overflow and you're trying to find like

    a solution to something you might find a

    general idea but you're going to have to

    adjust the parameters you're going to

    have to make it fit like within what you

    are actually writing if you just copy

    and paste the answer and put it into

    your code odds are it's not going to

    work and my guess is for quite some time

    it's going to be the same thing with

    generative AI until it gets to the point

    where AI can develop the entire platform

    the entire project start to finish and

    analyze all of the code and make the

    adjustments all at once you're still

    going to need to know how to program or

    at least evaluate a program in order to

    make it work in my opinion eventually

    I'm sure we'll get to a point where it's

    just as good as the author describes and

    all we have to do is come up with ideas

    until then we're gonna need to know

    something but even at that point that's

    still just one of the components of like

    the standards for Computer Science

    Education like cstas so algorithms and

    programming great I think we should

    focus on them but there's also competing

    systems there's networks on the internet

    there's data and Analysis there's

    impacts of computing Etc there's more to

    computer science than just coding which

    a lot of people have been saying for a

    long time but just because I can use a

    graphing calculator to figure out a math

    problem instead of using a pencil and

    paper I'm still engaging with math so in

    the end you might not be doing the rote

    mundane aspects of programming writing

    out lines of code Etc I would still

    argue that you need to understand

    programming it just might be in ways

    that are different than we are currently

    doing or currently teaching and that's

    okay that's to be expected I would hope

    that anything related to technology any

    of the concepts practices understanding

    Etc if you were to take a snapshot of

    Education in K-12 right now or even in

    higher education what is going to be

    taught and how it is taught I imagine is

    going to look very different 10 20 years

    from now and if not then we got a

    problem but these are just my opinions

    in response to the author's article I

    highly recommend taking a look at the

    article and listening to the videos that

    I link to in the show notes to

    jaredaleary.com and I highly encourage

    engaging in a conversation with the

    field you can share this episode with

    article as well as the videos with other

    colleagues and start a conversation do

    you agree do you disagree how do you

    think this impacts what you do or what

    you might be doing five or ten years

    from now as an educator I think it's a

    really interesting thing to explore and

    I look forward to seeing how this all

    turns out thank you so much for

    listening to this podcast if you enjoyed

    it consider sharing with someone else

    stay tuned next week for another episode

    until then I hope you're all staying

    safe and are having a wonderful week

Article

Welsh, M. (2023). The End of Programming. Communications of the ACM, 66(1), 34-35


My One Sentence Summary

This article asks when generative AI will replace the need for knowing how to program.


Some Of My Lingering Questions/Thoughts

  • I highly recommend taking a look at the comments section

  • How would this impact CS education at large?

  • I still don’t think computational thinking is the answer

  • If the shift is from doing the programming to teaching a machine what to program, we still need to understand how to program


Resources/Links Relevant to This Episode



More Content