The Pragmatic Engineer
01:31:00 · Gergely Orosz, Titus Winters
[01:31:00] S0: Turn in the whole package. Right? Curriculums are designed by committees, which is for a good reason. But if if you had Titus' self ranging school where you could yourself put together the curriculum and study course for an undergrad course of, let's say, three to four years, how would it look like right now? And and we're talking about getting engineers, having engineers who can hit the ground running at software and engineering companies, obviously, using AI tools, building software, that kind of stuff. [01:31:29] S1: Yeah. So I think the first course, like the first semester, starts unaided by AI. We need to get you through at least the level that you can read code and have a vague idea of what's going on, can like understand control flow and those sorts of things. I think there's some really interesting things on well scaffolded and harnessed AI for educational purposes of we're intentionally not just going to give you the answer, and in conjunction with, if you're assessing the whole package and process of creation, then you don't need to worry about them going to chat GPT and just getting the whole answer. Right? Some of that's covered. I mean, I'll be honest. I don't know. Nobody knows. There is no playbook. But one of the ideas know. [01:32:14] S0: I I I I wanna get opinionated. Yeah.
01:32:16 · Titus Winters
[01:32:16] S1: So one of the ideas that I've had is let's make CS zero, like, non majors and majors alike intro to programs. Like, specifically, how do you describe the inputs and outputs and structure and design of the interfaces? Right? So we could talk about what's the difference between a checkbox and a radio button? When do you use a button versus some other UI widget? For non UI things, like what command line flags, positional parameters, how do you interface these components? Specifically so that if that's the only class that you ever took, at least the the AI vibe coded slop that you produce for your own use cases is going to have a, like, slightly more coherent, sensible design language and, like, be more fit for purpose. Like, I live in New York. The condo building I'm in has a... You know, there's an app for the laundry room. And drives me insane because they use menu UI for purpose. And the design language is completely wrong. Start with that. And then graduate kinda along the lines of what you're saying. If, like, we wanna move up into projects and teamwork and things like that, try to motivate them into, in themselves, wanting to solve a bigger problem and then needing some background on, oh, this is how the web works. This is how a remote API RPC call works. You can't give people a solution to a problem they don't realize they have. Right? And until they are trying to solve these problems, those solutions that we present in theory are all just trivia. They're just isolated academic, not connected to anything. Motivate that by getting them into a situation where they need that as the answer first, and then you can provide that background. I also desperately want more projects for two reasons. I don't want the assignments to be there is a correct answer, because that's not how the industry works. Mostly not how research works. And I want them to grade... Part of your grade is critique of others. Look at their outcomes or their code or both. Right? And be able to say, that was great. Did you think about doing a different thing here? And then also grade them on, can you give feedback without being a jerk? Because psychological safety and teamwork. Right? And all of this sounds like a lot of work, except you can use AI to, like, do some of that analysis. Let's
01:35:01 · Gergely Orosz, Titus Winters
[01:35:01] S0: do [01:35:01] S1: the sentiment analysis. Was that rude? Right? Things like that. And I think we could have a much more practical, hands on, and much more effective educational structure. And And I worry that that's going to be software engineering departments and not CS departments. [01:35:21] S0: And as closing, for for grads right now, college students sitting inside of CS program, software engineering programs, who are seeing, okay, it's it's more competitive to get into the industry, tools are changing. What advice would you get in terms of tactics, strategies to activities to do to maximize your chances of getting into the industry and then doing well there?
01:35:45 · Titus Winters, Gergely Orosz
[01:35:45] S1: This might be risky, but most of my success in life has come from not doing the thing that everyone else is doing. It is really incredibly hard to stand out if you are just listening to what is a hot topic and chasing the same shiny thing that literally everyone else is doing. Right? And so I think it is to thine own self be true. Right? Like, find something that you are actually interested in, and put in the time doing something that you care about, especially if it's weirder than what everyone else around you is doing. Because then you will have a novel story to tell your interviewer. You will be worth talking to at a cocktail party so that the, you know, startup founder is like, yeah. I wanna take a risk on this kid. Right? Like... And the more time that you put into these things, the more expertise that you can bring to it, like, the better off you're gonna be. I have a worry that with AI assisted engineering, our emphasis on raw engineering skill is dropping. Like, you can get by with a lot less of that depth. But the only way to replace that is you need to understand the problem domain that you're operating in to a much deeper level. And I think that that might actually lead to less mobility in the industry. Like, it's not I'm a c plus plus engineer or I'm a back end engineer. It's a I'm an engineer in embedded audio. Mhmm. Right? Like, you understand those problem domains to a much deeper level, and that's your actual advantage. [01:37:23] S0: As closing, what's a book that you would recommend and why outside of your excellent book, of course?
01:37:23 · Gergely Orosz, Titus Winters
[01:37:23] S0: As closing, what's a book that you would recommend and why outside of your excellent book, of course? [01:37:28] S1: I mentioned it earlier, but I'll stick with it. Psychology of Software Teams by Kat Hicks, especially... Like, there are a couple chapters in that that if I could have that downloaded into the brains of every leader around, I would be so happy. Like, the brains in jars analogy is haunting. So that one's a really good one. [01:37:47] S0: Well, Titus, thank you so much for this conversation. [01:37:50] S1: Thank you so much for having me. This has been a lot
01:37:53 · Gergely Orosz
[01:37:53] S0: of fun. I'm glad I got to finally sit down with Titus, and this conversation did not disappoint. To start with, I knew that Google's codebase was large, but I had no idea we're talking about two fifty million lines of just C plus plus code. And this was all pre AI, so we're not talking about overly verbose codebases generated by AI. As comparison, Uber's mobile apps had codebases of about one to 2,000,000 lines of iOS and Android code back in 2016 and Uber crammed a lot of business logic into those apps. How Titus and the team cleaned up these foundations without using AI was also pretty educational. They built deterministic code generation tools to parse the code, match patterns, then generate edits. This is an approach that still could work more reliably even today than just asking non deterministic AI to refactor a codebase, even though it is arguably more difficult to write advanced parsing logic on a codebase like Titus and team did. I also appreciated Titus' view on where AI is helpful today. He mentioned this quote he heard from a senior engineer that said: We are up 70% on the amount of code, but we are also up 30% on outages. The number of features is the same. Well, that doesn't sound all that good. Where is the value from AI then? Titus says that we won't get all that much value from doing the same stuff we did before AI, but faster. The value is to be more ambitious and do harder things that we would have never attempted before AI. Finally, I hear a lot of worry for new grads in tech about how they'll get a job or not, especially when AI agents are so commonly used, but CS programs have not incorporated them into their program. Titus is one of the few engineers who has been part of a steering committee for the CS curriculum and says that this program needs to either change substantially and be more practice oriented, or CS enrollment will plummet. Titus also says that it might make sense to finally have a software engineering curriculum that is focused on students getting far more experience building software with these modern tools. I don't think any of us has an answer to what will work, but having more people from the industry get more involved in refreshing the CS Software Engineering curriculum sounds like a step in the right direction to me.