I was a high school computer science teacher for 17 years.
I taught at Bishop O’Dowd High School in Oakland, California.
I taught during the dotcom boom, I taught during the dotcom bust, and I taught during
sort of the recovery of the tech industry afterwards, and I did see the interest in
what I was teaching fluctuate.
It would go up and down every year largely tied to the economy, which was a little bit
weird to me.
And even as a school, you know, when I began to teach in the late 90s the school itself
actually had a computer requirement.
You were required to take a certain number of computer classes before you were allowed
to graduate.
They got rid of that requirement.
They got rid of that requirement because at some point they felt like computer literacy
was so important that it ought to be integrated in all the other subjects.
So it shouldn’t be a thing in and of itself.
So in the beginning I agreed with that.
But after seeing how it played out I don’t think it was as effective as we wanted it
to be, you know.
I think that computers are still a fairly specialized type of knowledge, computer science.
And teachers today still—I don’t think we’ve been trained on how to integrate computer
science well into the other subjects.
So ultimately what ended up happening at that school site was we would graduate students
who would know how to use computers but would not necessarily understand how they worked
or even understand how to maximize what they could get out of the computer.
As a computer science teacher, something I used to talk to parents about—especially
during the dotcom bust when interest in my class started to evaporate— Coding is not
about training students how to type into a computer.
That’s the least of it.
Coding is actually really about training students to think in a certain way.
It’s about training students to take large and complex problems and break them up into
small pieces.
It’s about training students to take things that are vague, that are difficult to wrap
your mind around, and putting them into concrete sequential steps.
And that sort of thinking, that sort of skill, that sort of mental skill is applicable no
matter what you do in life, you know.
What you’re talking about right now, about how the future economy is going to require
more knowledge work—we don’t know what computers are going to look like, right?
We don’t know, we don’t even know what coding is going to look like.
But I can guarantee you that the coding mentality, the type of thinking that’s required in
order to code well that will become increasingly valuable as we go on.
I think logic is really important.
I think when you teach kids computer science you are touching on a lot of principles of
logic.
And in terms of students knowing how to use computers but not necessarily understanding
why they work, I think that’s largely a product of the success of the computer field,
you know.
Within computer science there’s this idea of abstraction, where you separate the interface
of something from the internals of it.
And that’s something that I talked about in my computer science classes when I was
teaching.
You do that because it makes the computer itself, it makes whatever you’re making
easier to use, right?
The user just has to have like a working mental model of what the interface looks like.
They don’t have to know anything about the guts underneath.
But unfortunately what you miss out on in that is the mental development in your thinking
that comes with understanding the guts, right?
When you understand the guts it’s not just for using that tool, it’s actually to change
what’s inside of your skull.
It’s actually to change your brain.
It makes you a better thinker.
It makes you a better problem solver to understand those things.
So I think there’s a place—I think there’s a place for abstraction, but my hope is that
every student, before they graduate from high school they’ll have a chance to wrestle
with those guts, to be able to really understand how a computer works from the inside.
How both software and hardware work from the inside.