The New Code Curriculum

September 10, 2024  ·  21 min 4 sec

If AI is about to fundamentally change software development, what should current students be learning about code? On this week’s Reqless, Paul anoints Rich as head of a fictional programming department and asks him to lay out his syllabus—before hijacking the exercise and laying out his own syllabus. You need just enough knowledge to really use these tools to program, so what exactly should students learn?

Show Notes

Transcript

Paul Ford: Hi, I’m Paul Ford.

Rich Ziade: And I’m Rich Ziade.

Paul: And this is Reqless, the podcast about how AI is changing the world of software.

[intro music]

Paul: Rich, we should tell the people why we make this podcast. It’s not simply because we find this subject fascinating, although we do. We were enterprise-software builder agency people for years. Then we went and built a product. What’s the name of the product?

Rich: Aboard.

Paul: What’s it do?

Rich: It builds custom software really, really fast by leveraging AI.

Paul: Wow. It builds it, not people building it?

Rich: We still need people, which is actually what this podcast is about.

Paul: All right, that’s good. That’s good.

Rich: But check us out. Aboard.com. Hit us up with questions. Hello@abord.com.

Paul: Oh, and we’re having an event on September 25th about how Aboard can enable adaptation to climate change. We’ve built some amazing new software inside of it. We’re with some other great organizations. If you want to come to that, watch our newsletter. We’ve got invites. I saw some of you come across, and send us an email. Helloboard.com. I’ll get you the invite.

Rich: September 25th. New York City.

Paul: That’s right. Union Square area. All right, Richard, I’m going to throw a question out to you, okay? And I’m going to do it, we’re going to frame this—we’re not just going to talk like a bunch of Brooklyn goofballs.

Rich: Nothing wrong with Brooklyn, but go on.

Paul: Okay. It is 2024, and I’ll tell you, you and I have been talking to a bunch of people, people in colleges, people from industry, people from a lot of different backgrounds. And basically a consensus is emerging. And the consensus is AI’s not going anywhere.

Rich: It’s definitely not going anywhere.

Paul: B) maybe the funny cat pictures is not really what we need to be thinking about. Sure, there’s going to be more of that, but like right now, Pixar doesn’t feel very threatened by somebody typing, “make a cool movie about a kid who plays with toys that come alive.”

Rich: Not yet at least!

Paul: Not for a while, Frank. Not forever. Because humans like to connect with other humans. And that’s one of the things that makes art art.

Rich: Yes.

Paul: But now a new class of tools and techniques are showing up that are generative around very structured digital things, things like code—or charts, diagrams, that sort of stuff. We’re getting—

Rich: Architectural widgets.

Paul: Yeah, like we’re just getting to a place, but software in particular, software is getting built by, you tell it what to do and it builds it. You and I sat in a room yesterday, and I showed you some of the things I’ve been learning, and I’ll tell you what I showed you. I showed you how we could build a simple kind of content management system that was specifically around videos, tagged with an admin tool to upload and download the videos. I wrote, like, a paragraph of text, and it did all the work for me.

Rich: It generated the code that made up the app.

Paul: What was your reaction? Because you’ve been playing with this stuff, too, but you hadn’t seen it go all the way yet. I showed it to you going all the way. What did you think?

Rich: I had a few reactions, actually. One was, oh my God, we got to leapfrog the really boring stuff.

Paul: That’s what’s—yeah.

Rich: Like, I don’t, like I’ve written enough login, sign-up, sign-in functionality in my life that I never want to write it again.

Paul: I hate Auth, to the point that I stopped building software, because Auth is so bad.

Rich: It’s so bad.

Paul: Yeah.

Rich: Right? It’s all annoying. And I know there are solutions out there, but it’s nice to, like—

Paul: Analytics—no, 80% of software is, like, analytics instrumentation.

Rich: That was just personal. I got, okay, I’m glad I didn’t have to do that.

Paul: We gotta tell people, Auth means authentication.

Rich: Yeah.

Paul: Like, it sounds like I’m just saying [gagging noise]. It’s not like some weird Middle English word that we just dropped in.

Rich: And then it kept going, and I think the thing that struck me was, wow, I just skipped, like, four days in, like, 20 minutes. And that is a big, big deal.

Paul: It is.

Rich: That was another, like, the productivity leap for frankly, let’s, let’s say it out loud, pretty basic software building blocks? It was huge. Right? The third observation was, okay, I need to take the wheel now. You know the analogy that comes to mind is? There are, like, assisted driving capabilities in a lot of cars.

Paul: Yeah.

Rich: That will kind of drive, but it’s the minute you take the wheel, or the minute you hit the tap, the brakes.

Paul: When you’re in a Tesla, it’s like this, they got that screen, and it’s showing you everything that’s all around you.

Rich: Yeah, but, no, but also the foot, the pedals, the gas, and the brakes, the minute you touch them, the car gives up control.

Paul: Right, right.

Rich: And then you’re back in control. And I think with what’s happening with AI is it’s gotten extremely good at the first basic 65%.

Paul: Yeah. I mean, it’s cognitive cruise control, right?

Rich: Cognitive cruise control. Now, what that means, though, and this is, I think, what everyone has to be careful with is that the last third is not easy. It’s actually harder. And how do we know it’s harder? It’s because AI couldn’t do it.

Paul: Yeah.

Rich: And now I need a human. And so there is this counter, this is a very strong counter-narrative that hasn’t taken yet, which is like what we thought was going to get easier actually is requiring us to think a little higher order.

Paul: Well, and actually, so what happens is as you do this stuff, it narrates the decisions it’s making.

Rich: Yeah, that’s right.

Paul: That’s sort of how they’ve built the product, Claude in particular. Like, hey, I wrote the code this way, using this technique and so on. If you skip and just cut and paste?

Rich: Yeah.

Paul: Bugs show up and you have to figure out where the bugs came from.

Rich: That’s right.

Paul: If you read each word, it’s almost like you’re a senior programmer working with a junior, and you go, “Ah, I see where you’re going wrong here.”

Rich: Let me translate that to advice.

Paul: Okay.

Rich: I do think that AI has presented innovations that don’t require us to understand all the nudgey syntax and specific gotchas for specific languages.

Paul: Mmm hmm.

Rich: But what I think it’s done, though, is it’s requiring us to understand the fundamentals of how things work. And that takes work. That doesn’t mean you should educate yourself to be a coder, but it means—I believe, by the way, generally speaking, outside of AI, any product manager should understand the high-level concepts around programming.

Paul: Well, let me give you a promotion. You’re the CEO of Aboard, but I’m going to give you a promotion.

Rich: Woo!

Paul: You are now the dean of the digital whatever department at a—and let’s not make this, this is not Harvard. You are at a mid-sized—

Rich: University of Ohio.

Paul: Not even, no, that’s too big. Like state system, like, a SUNY school, or—

Rich: Stony Brook.

Paul: Yeah, yeah. Or like Pennsylvania Kutztown, like not big, maybe 15, 20,000 students, right?

Rich: Okay.

Paul: And there are maybe 500 students in this program. Now, they were learning, let me tell you what they were learning. They were learning JavaScript, C, languages—they were learning programming languages. They took one or two computer science classes. They might have learned, you know, they might have done, like, five or six things to build little apps, or they might have written Tetris.

Rich: Yeah, yeah.

Paul: So they know how to make a computer go, they know how to like compile code or run code and so on. So it’s been very code-centric.

Rich: Mmm hmm.

Paul: And they are ready to go out in industry and get their first junior coding jobs. What we’ve been seeing is like, that is really very possibly under threat from these new technologies.

Rich: It should be.

Paul: So reboot this program. They are coming to you at the age of 17, 18.

Rich: Yep.

Paul: And they’ve got four years. What do you teach them?

Rich: There’s two courses.

Paul: Okay.

Rich: Understanding Programming 1.

Paul: Okay.

Rich: And Understanding Programming 2.

Paul: That is the laziest damn answer I’ve ever heard in my life.

Rich: Or Programming Concepts 1, and Programming Concepts 2. And what you want to do is untether from the sort of explicit requirements of particular types of languages and syntax and whatnot and instead understand the high-level concepts really well. Understand why functions are more useful than batch coding. Understand the basic building blocks, like conditionals and try…catch and all the normal stuff that makes programming work. But uncouple that from like, well, let me explain to you why your Java program is not running. This is, by the way, just to add, I think Python is sitting in a lounge chair with, like a cigarette that sits on the end of, like they used to smoke cigarettes at the end of sticks for some reason at some point.

Paul: Yeah. Meaning that it is able to relax, because—

Rich: It’s sipping scotch and saying, “Come. Come to me. I will show you the way.”

Paul: Because I’m the most readable language, and if you get it right with me, I’ll turn it into any of the ugly-ass language languages that are out there.

Rich: It’s very forgiving. It’s a great way to learn the concepts.

Paul: Now here’s, I’m going to tell you a story and then I’m going to tell you what I would love to teach and what I don’t think anyone could tolerate, but still how I think it would go. So maybe ten, maybe more years ago, there was a legendary class at MIT, the best technology university, possibly in the world, and I think it was 6.001. It taught you Lisp, or it taught you, actually, a variation of Lisp called Scheme.

Rich: Well, for the world, what is Lisp?

Paul: Lisp is a parentheses-based programming language, it’s a very sort of like function-driven—it’s the language for smarties. It has a very, very light differentiation between what is data and what is code. So you often end up writing Lisp that will write Lisp and do things. It’s very, very abstract.

Rich: Okay.

Paul: It’s the language for the abstract thinkers. And twelve other language aficionados just got upset when I said that, but still, I’m within my rights to say that. So very associated with MIT, very serious in this, this class was taught with a book called The Structure and Interpretation of Computer Programs, known as SICP, and it defined what serious undergraduate computer science was.

And then one year they changed it, and they said, it’s gonna be Python, and you’re gonna learn with robots. You’re gonna move little robots around, and you’re gonna do a Python. People lost their, their skulls exploded. Because they’re like, you’re taking away, like, all of history and actually learning the really hard stuff. And the professors are like, no, this is like, students need to learn how to deal with real-world systems, libraries, objects—

Rich: Sure.

Paul: And make the robot move around in a world of incomplete information where they have to then resolve what’s going on with all of the code they’re running, rather than build up a world of computing from first principles.

Rich: Okay.

Paul: Okay? And I feel that we’re actually seeing, in a funny way, a continuation of that in the industry, which is the number-one skill secretly of every truly good senior engineer is a complete indifference to language and library and all the culture and being unbelievably good at debugging, just like, oh, uh, that’s why. Because it’s always broken. Even if it’s working, it’s broken. Okay? So you could get in there—optimization is just like figuring out how to make something go faster. Like, things you don’t even think of as bugs are bugs.

Rich: Yeah.

Paul: And so a truly gifted programmer is somebody who sees opportunities for improvement everywhere, whether it’s broken or not.

Rich: Let me ask you a question.

Paul: Okay.

Rich: If I was a kid seeing all this AI stuff going on?

Paul: Yup.

Rich: I’d be like, oh, this is great. I’ll just learn how to use AI. I don’t have to learn this other stuff. But yet what we’re saying here is we actually think you have to learn the hardest parts.

Paul: Here’s what I think is real. You don’t know what’s broken. Okay? If you sit me down, I am an okay programmer, and I’ve known some brilliant programmers, deep research-lab types, right? And if I sit and look at a system and it’s like, a little slow or whatever, I’m like, all right, we’ll make it work. But these are the people who, like, end up deep inside of Google. You show them the same thing, and they go, “I can save you $25 million a year.”

Rich: Right.

Paul: Okay? And so that’s like that people talk about, like, you know, the ten time—

Rich: What is the point? You’re making the point.

Paul: Thank you for asking that question, Rich. The point I’m making is that that is the actual skill to start developing. The class I would teach is—

Rich: Articulate the skill.

Paul: Debugging 1 and Debugging 2.

Rich: Hmm.

Paul: And actually—

Rich: Don’t you have to understand the concepts first?

Paul: Well, but I think similar to what happened with MIT is that you’re going to be dropped, realistically, into a world of legacy garbage. Legacy garbage could be I’m using Windows 11. Legacy garbage could be I’m at the bank and I have to change the way the compound-interest calculator works inside of the mainframe. But you are going to be dropped, if you are a professional programmer, into a mess. People think of the web as being modern. The web is now a multi-gigabyte pile of blah. Any single code, like I installed something in the JavaScript ecosystem over the weekend and it’s like, you know, 1,600 libraries install.

Rich: I think that’s a product of a lack of fundamental understanding of programming.

Paul: Regardless, that’s the world. Welcome to the world that you’re actually going to be in.

Rich: That is the world.

Paul: Okay? So if I want to empower someone, and this is kind of why I said local state school, I’m not sending you to MIT.

Rich: Yeah.

Paul: Your next job, your first job is going to be like in the IT department of a bank where you’re supposed to like make something better about a form, okay? You’re going to be dropped into that world and if you don’t know the fundamentals at all, you’re in big trouble because you can say to the AI, you can say, make the, make the box red, and I think we’re going to have that 100%. And if that’s all you need to do, great. But when it doesn’t make it red or when it makes it the wrong shade of red and somebody’s upset, you’re going to have to figure out why.

Rich: Yeah.

Paul: And the only way you’re going to be able to figure out why, I had an issue over the weekend where it kept making, I wanted to make a circular thing in my app, but the AI kept making it more and more oval, and the oval kept getting smaller and smaller and squeezing more and more. [laughter] It was because there were two places with CSS code. This is very technical, but one variable was overriding another. A minute for me to figure this out.

Rich: Yeah.

Paul: But 20 years ago, I think that would have been like three days for me… [laughter] I just, right, so what you need to do is use these tools. Frankly, the thing you want to do is not use the tool in a constructive capacity, but use it to explain every part so that you can figure out where things are going wrong and where you can improve them. And if you make that your ethos, you can build all day long. But the actual, the sign of an immature engineer is they build all day long.

Rich: I still think you’re skipping fundamentals. If we’re looking to give advice here, like the first course someone learns should not be debugging.

Paul: Well, this is why I’m saying, this won’t be popular, right? But I’m, like, the way that I think is best. It’s language immersion, is what I’m saying. Send them. You know how you go to. You take that French class for two weeks and you go somewhere—you and I never did this, in Bay Ridge, they didn’t have this, I didn’t have this.

Rich: They did not.

Paul: But I heard about this. You go and they only speak French for two weeks.

Rich: The whole time.

Paul: It’s your summer camp and it’s all French. And after you have been speaking only, you’ve been surrounded by French for two weeks.

Rich: You start to pick it up.

Paul: You start to speak a little French.

Rich: Interesting.

Paul: Right?

Rich: As a learning method, you’re saying you will pick up the abstract concepts because you’re in it.

Paul: Give a kid a broken TV and say you can watch, or a broken laptop and say you can watch as much YouTube as you want. If you can fix this?

Rich: They’ll work hard on it.

Paul: I mean, for real, right?

Rich: They will.

Paul: Like, I mean, if it’s like, if the screen smashed, they’re out of luck, but if it’s like, you know, they need to read, they need to install Linux because the windows—

Rich: Interesting.

Paul: They will do it. My 12-year-old boy will absolutely, if I would give him a laptop and say, you can do whatever you want to this and then watch unlimited YouTube?

Rich: You will work hard.

Paul: He will get a soldering iron out and go at the microchip level to get access. [laughter] So what I’m saying is that what I think the actual ethos of these tools is, what I think they’re really good at, they translate. They translate words to patterns and language and artifacts. They’re not creative. Translation can be creative, but putting that aside. They convert from one form to another.

Rich: Yup.

Paul: And so what I think you want to be aware of is that process and the faults and the difficulties in that process, and the only way that you can do that is to understand what each form is. So if I’m describing a program I want, that’s prompt engineering, okay? I need to get really good and understand prompt engineering, but I also have to understand what it’s producing.

Rich: Yeah.

Paul:  I’m back to where you are, but what I’m saying is, like, the way to do that is just drop them in.

Rich: Okay. You’re gonna pick up the fundamentals. Drop them in.

Paul: Fix it.

Rich: Fix it. Let me ask you this.

Paul: You can’t—

Rich: Close it with a question.

Paul: You cannot escape this room until you fix this bug.

Rich: Do you think—I think the expectation out in the world is, gosh, I thought things were gonna get easier. I thought things were gonna get more automated. This sounds hard.

Paul: What this does that is very powerful and very good for capitalists is increase velocity.

Rich: Okay.

Paul: And I can get the system to explain things in a level of detail that I could never have access to. I would have to go read, research, and so on. I can zero in on my problem—

Rich: Yeah.

Paul: —and get it diagnosed.

Rich: You’re hitting knowledge bases prior to this, trying to understand why something is doing what it’s doing.

Paul: I have unbelievable power that way and that, but it’s, what we have been handed is a set of accelerators, but it’s jet fuel. But you still have to know how to steer the jet.

Rich: Yeah.

Paul: Right?

Rich: In fact, you could, in many ways probably do more damage if you’re not using the tool correctly.

Paul: Well, I think what you’re going to see with this stuff is tremendous early excitement. And this has happened. This is the AI cycle over and over and over again. Tremendous early excitement. Here we go. World’s ending. Get on board. And we saw blockchain. We saw there’s a hype cycle with all this stuff.

Rich: Yeah.

Paul: And then you hit a wall and you’re like, wow, it’s kind of put a lot of bugs in the. And then 95% of people who thought they were going to build a really cool app that was going to beat Facebook?

Rich: Move on.

Paul: They go home because it’s boring.

Rich: Yeah.

Paul: But then there will be, there will be people who will sit there and they will noodle with their prompts, and then they will come back to us and they will say, I have found a way to make this weird new database-y technology do things you never thought were possible.

Rich: Yeah.

Paul: And, ah, we will go, “Oh my God.”

Rich: Yeah, yeah.

Paul: Right? So it’s, that, but it’s, that is a tiny—most people just want to say, hey, most, the fantasy of AI is you’re going to sit there, you’re going to type the words make me rich and chat. GPT will go, “I got it!”

Rich: It might still say that.

Paul: [laughter] It probably will. The reality is that, yes, this is going to come for a lot of programming, but I think it is actually, at some level, the way I want to think of it, I think of it in two ways. One is the translation engine that takes one form and turns it into another. And if you truly want to understand what’s going on, it’ll do all that boring work you don’t have to do anymore. But unless you really understand debugging at a very deep level, you’re going to get caught. You’re going to hit walls.

Rich: You know, I think this is legit. Unlike other sort of hot topics around technology. I also think it’s fascinating that a whole new category of jobs will arise and a whole category of jobs will be under threat. I think it’s both. A lot of people tend to focus on the doomsday, like, “It’s coming for your job.” But I think there’s going to be new skills. I would predict that product manager that understands these concepts is going to become just one of the most valuable assets in the technology workforce. I’m pretty convinced of it.

Paul: I mean, one good PM, one good designer, one good senior engineer, and maybe a junior, and you can build 12, 16 months of engineering-platform work in like six weeks. That’s what—

Rich: I think that’s really exciting and interesting. Right?

Paul: You’re not gonna get—

Rich: You do need experts—

Paul: That’s gonna get slick. We’re not, very early days.

Rich:  Related to all of it: Check out aboard.com. We’re building a platform that lets you build custom software with AI, and gets you there really fast. So what used to cost a lot more money and used to take a lot more time, costs a lot less, requires a lot less time. It’s very exciting stuff.

Paul: This is real. If your organization has, like, a big thing it needs to build, and it is like, oh my God—

Rich: Keep putting it off because it’s too pricey?

Paul: Yeah, we gotta, it’s gonna take forever. And like, engineering is under, is exhausted, you just reach out to hello@aboard.com, and first of all, we’re going to be glad to hear from you. Second of all, we’d love to hear you tell us your problems. And third of all, you can probably accelerate the hell out of it and get it a lot more cheaply. So we would love to help you.

Rich: Lots of big announcements coming from Aboard in the near future.

Paul: It’s real. I want to show people the climate stuff, and then we got the new AI stuff, and then we got some client stuff.

Rich: So much stuff!

Paul: It’s good stuff.

Rich: Have a wonderful week, everyone.

Paul: Bye.

[outro music]