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
Other podcast episodes that were mentioned or are relevant to this episode
CS for What? Diverse Visions of Computer Science Education in Practice
In this episode I unpack Santo, Vogel, and Ching’s (2019) publication titled “CS for What? Diverse Visions of Computer Science Education in Practice,” which is a white paper that provides a useful framework for considering the underlying values and impact of CS programs or resources.
Educational Aims, Objectives, and Other Aspirations
In this episode I unpack Eisner’s (2002) publication titled “Educational aims, objectives, and other aspirations,” which problematizes behavioral education objectives and discuss two alternative approaches.
Empathetic Listening in Computer Science with Josh Sheldon
In this interview with Josh Sheldon, we discuss computational action, designing exploratory professional development experiences, learning how to listen to and empathize with students, applying SEL with teachers, the future of teaching and learning, the problems with external influences on CS education, and so much more.
The Centrality of Curriculum and the Function of Standards: The Curriculum is a Mind-altering Device
In this episode I unpack Eisner’s (2002) publication titled “The centrality of curriculum and the function of standards: The curriculum is a mind-altering device,” which problematizes curricula and standards by discussing how both can deprofessionalize the field of education.
The CS Visions Framework and Equity-centered Computing Education with Rafi Santo and Sara Vogel
In this interview with Rafi Santo and Sara Vogel, we discuss informal learning in CS, the CS Visions Framework, equity through social justice pedagogy, considerations for Integration, and much more.
Find other CS educators and resources by using the #CSK8 hashtag on Twitter