The Standup with ThePrimeagen - Bullsh*t Engineers Say Tier List (Lost Episode)

Episode Date: May 15, 2026

This Episode never made it to Spotify for whatever reason, Original Air Date: 2025-11-20. Enjoy! We break down the most infamous "thought-terminating clichés" in software engineering. From the classi...c "It depends" to the controversial "Premature optimization is the root of all evil," the team ranks these common dev phrases on a tier list based on how much they actually hinder or help real problem-solving.

Transcript
Discussion (0)
Starting point is 00:00:00 I already started it. What? We also know that you're late and you're streaming from a bathroom. I'm not in a bathroom, guys. It's a living room. Yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, sorry. Hey, everybody, welcome to the stand of today. We are talking about thought terminating of phrases in software engineering.
Starting point is 00:00:20 As you can see, use the right tool for the job. It depends. Premature optimization is the root of all evil and plenty more. We are going to rank them, which one is the least. least to most thought terminating of them all. F tier, obviously being most thought terminating, S tier being the least thought terminating possible. The best phrase you can say now,
Starting point is 00:00:39 not all those phrases are terrible. This is from a long discussion that's been going on on Twitter where people were all piling in what they think are thought terminating phrases. And so with us today, of course, we have Began Bot who was late and unprepared. We have with a trash dev who is also super duper awesome type tiero, right? He wasn't late a minute. Like not one. you were late for like 15 minutes it doesn't matter wasn't trash late too i wasn't here but i'm pretty sure he was
Starting point is 00:01:05 and of course casey muratory the actual programmer in this group uh real giga chad and computer enhance dot com check it out all right so there we go we got everybody out of the way so now we are going to be going to be going to be talking about all these different ones and if you've experienced them now casey you don't work in a professional environment like trash does when i say professional i just mean large stock traded company yeah has a bunch of people who have you said these phrases. Now, my time at Netflix, I've heard every one of these phrases. No way. That can't be true. Wait, trash, you're not hearing these phrases? I actually added this last one. Memory is free due to one of the directors at Netflix saying this about TV and driving people nuts.
Starting point is 00:01:47 Because memory was in fact not free and it was very difficult. Okay, so let's just start with... I'm surprised you heard any of these. You have not heard any of these? What are you talking about? I've heard half. I've heard half. Okay. Well, let's start with the worst one. And now you're on half. Sorry, sorry, I'm misspoke. Now I'm saying half. Well, one of the other phrases, one of the other phrases should have been like, you know,
Starting point is 00:02:07 integers. Everything can be represented in an integer. Let the record show that I said half and then I said none. And then I said half again. So I flip-flop. Round down to zero. Here we see the elusive programmer, a simple creature that spends most of its time working alone, often in darkness.
Starting point is 00:02:25 But what's this? Someone being wrong in the internet. Our coder springs into action, reaching top speed. of 120 words per minute before flash. A light mode website, the natural enemy of these code lovers, stuns our friend. The chase is called off.
Starting point is 00:02:37 We'll have to get them next time. When not on their computers, they can spend hours drawing crude symbols on something they call whiteboards. Researchers have discovered thousands of dialects, often with more than a dozen used in a single office. However, no linguists has yet deciphered what their purpose is.
Starting point is 00:02:58 Vane creatures, their bodies have evolved over a millennia to be able to sit in unusual postures while looking at themselves online. This will often last for many hours. Using the excuse, they're waiting for code review if pressed to why they're so inactive. And finally, after a long day of accomplishing very little, are keyboard warriors ready for bed.
Starting point is 00:03:17 Quick read and it's lights out. Good night, little coder. So how do I sleep so well at night? Well, I have century to help me crush those bugs. And I'm not talking about little teeny tiny South Dakota bugs that die in the winter. I'm talking about big, mean, jungle bugs. And I'm not scared of any of them, by the way.
Starting point is 00:03:40 But I can squash those bugs with Sear by century. Classic round down to zero. All right, so I don't really know which one to start on. Well, I know what to start with, Prime. You have to start with the worst one. I know what you can start on. I know the worst one. The one that is...
Starting point is 00:03:54 We should start with the most poignant one, the most obvious one. Never do a full rewrite. Okay, so that's a false statement, right? You agree. No, I'm... I mean, that's not... Like, the problem is, I guess, again, with your tier list, we're trying to say how harmful it is. It's not, it's not, because none of these things, you never really want to stop thinking.
Starting point is 00:04:17 So you never want any of them to terminate your thinking process for sure. What are you talking about, Casey? These are goals here. But, so we're just ranking by like, how harmful will it be if you terminate your thinking with this thing, right? That's what we're going for. And this one is actually, this one's actually pretty close to the bottom, I would say, because most of the time you don't want to do a full rewrite. So the chance of that being the right decision is kind of lower than probably what a lot of these other ones would be my guess. Am I wrong about that?
Starting point is 00:04:53 I am fully on your team. Never do a full rewrite is like by far one of the best phrases ever to say, excluding a few key circumstances. What are you guys talking about? Well, first of all, I know what's happening. You guys are C++-plus devs. So you guys aren't changing languages every week, okay? A new language comes out. We have to do a full rewrite.
Starting point is 00:05:09 I can't have half-rust, half-go. Like, you guys do... Full rewrites is how we sneak elixir in the stack. It's how we switch... Good point. Okay. That's why you don't have a job, B. Uh-oh.
Starting point is 00:05:24 I have a job. We have a point there. We have to rewrite everything in Rust, right up until Rust isn't the language we're rewriting things in anymore, and then we have to rewrite it in other things. Uh-oh. Why is Prime saying, oh, no.
Starting point is 00:05:34 I heard Aftram Prime, you know. Oh, yeah, I personally got F. If I cover up the screen by accident, if I cut it again, this is because Riverside won't give me our TMP feeds. But if I cover up Chrome screen, Chrome goes, oh, I can save memory and will then quit processing and all the videos drunk up and then it just gets terrible. Yep. That's a fantastic Chrome feature. It is a Chrome feature. I'm assuming there's a Chrome colon slash slash give me the real settings that you can turn that off.
Starting point is 00:06:02 You have to be some knobs. You're probably right. You know how they're like, like, if there's, if the thing with Chrome is if there's ever a setting that's actually useful, they will not put it in settings. It's in Chrome colon, go to slash, like sets. Hate it. Yeah, we're going to get Prime a second monitor. Everyone's sub. So Prime can afford a second monitor, okay?
Starting point is 00:06:25 All right. Hey, but seriously, never do a full rewrite. Began, do you actually think that this is a good idea? Okay, so real quick, I have told. people before I have snuck multiple languages in at companies. And the way to sneak stuff in companies is you pick a service, a small service in the microservice architecture and you do a rewrite of it. You say, I'm going to take the logging service. I'm going to do a rewrite of it. Hey, this thing like, I don't know, checks birthdays, you know, whatever. I'm going to go do a rewrite.
Starting point is 00:06:48 I don't have been Zig or in a quick little full rewrite. And that's how you sneak languages. How are you guys sneaking languages in at companies? Don't because I'm a professional. Wait, wait, wait, in trash. How are you going to make sure you don't get fired. By writing it terribly. Oh, okay. The old school technique. Okay, okay.
Starting point is 00:07:03 You use the old technique. That one still checks out. There's two schools of thought for not getting fired. You just did the first school of thought. You're the type script company and having one service and all go and you're the only go developer. Good job security. And then make sure don't ever help anyone learn how to use it. It's good stuff.
Starting point is 00:07:20 All right. So never do a full rewrite. So, but as far as like, alternating in some sense, there are times where you should do a full rewrite. So by saying this, are you not like effectively stopping the thought process and saying, hey, no, we can't. You can't suggest something else. Yeah, I mean, the problem that I see with saying never do a full rewrite. I mean, because the correct phrase would just be rarely do a full rewrite, right? The problem with never do a full rewrite is really the rewrite problem is about losing the sort of inherent, like, structure.
Starting point is 00:07:57 complexity of the thing that you already have. Because normally what happens is for a system that's of any sufficient, like doing anything sufficiently complicated, checking birthdays maybe is a good example of something that isn't sufficiently complicated. So maybe I'm with you that we could rewrite that. What do you mean? But for anything that has any sufficient amount of development time in it and that has been deployed and has some of that subtlety of like we've actually had to fix the things that are broken and improve the things that weren't working and whatever for a little while. There tends to be actually baked in knowledge there that no one programmer has completely in their head. And so when you go, if you do a complete rewrite of it, you will be starting
Starting point is 00:08:43 without that sort of baked in knowledge and you end up making the same mistakes again. Or you make mistakes that would have been prevented had you been working in that code base because they would have been obvious right away as you tried to do the thing you were about to do that was a mistake. And so that's really the problem with full rewrites is that. And so sometimes you're in situations where like, let's say that the code was written by people who really didn't know what they were doing and it's not working very well. And you've got some programmers who have done that thing before. So they actually have a bunch of experience and kind of know how to do this thing really well. In those situations, a full rewrite may be actually way better, right? So you do have to
Starting point is 00:09:25 have some kind of an understanding of exactly what situation you're working in. But if you were the programmers and you've been working, and this thing's been around for a year or two or whatever, rarely does completely rewriting it is rarely is that the right decision in my experience. What do you mean you programmers? Are you trying to say that? You. I'm trying to say that me and Began wouldn't be equipped for a rewrite service? Casey is an engineer. No, I'm not like you programmers.
Starting point is 00:09:51 Yeah, I meant you meaning you, whoever is making the decision, whoever's going to be doing the rewrite is the same people that did the service in the first place. So you were the ones who worked on this and you built it in the first place. Usually you just want to iterate on that and go, okay, we can, you know, we can rewrite a chunk of it. Like we can take a little piece and rebuild that. And then we'll take another little piece and rebuild that, right? That's a great way to go about moving it forward. wiping the whole thing
Starting point is 00:10:16 way too risky and so you have like it's rarely the right decision in my opinion I love the rarely it'd be great if we made every cliche more subtle and rare
Starting point is 00:10:26 but you gotta keep it just never I will say there is a case and I've been at companies where there's a piece of code by an engineer that's gone and they were on they were on something
Starting point is 00:10:34 when they were writing it they were going through a functional phase and experimenting with languages and they wrote something in a whole new pattern and then everyone tries and interacts with it and it's the most painful thing ever to add stuff to
Starting point is 00:10:44 and everyone's learning the ancient magic that Steve added two years ago. And then you keep trying to add to it and add to it. And finally someone says, can I just start over it now that we know what the product is? And they start over in a week later. Everyone's like, it's so easy to add features over here because we're not dealing with Steve's insanity. But the never rewrite can cause people to be stuck in Steve's code forever.
Starting point is 00:11:05 Yeah, I think the problem there's in addition to like the context problem and potentially the size of the app that you're rewriting is like you also, depending on how. popular your app is or is being used, you have to be able to deliver value while you're rewriting. If you go full rewrite, you can't build features because you're kind of just screwed unless you want to maintain two versions of it. So I've had those situations where we basically have like a forked version that was like feature flagged while we were like, while like some people were still working on the legacy version. We were working on the new one. I love that. Oh, wait,
Starting point is 00:11:35 you had a new feature? Oh, wait. I can't even like merge it because it's a completely different patterns. You have to like manually rewrite those again. So it's just like a huge like undertaking of like trying to make sure features are being shipped at the same time as a rewrite literally the worst thing ever. All right, so never do a full rewrite. What are we thinking? What tier? I'm saying that me personally I'm thinking it just falls near C.
Starting point is 00:11:56 I'd put it even lower. I'd put it even lower. Yeah. D? Yeah. I don't think it's harmful at all. I think that's a good, a pretty good thing. Like if that was your only thought terminating cliche that you did, I don't consider you particularly harmful. Yeah. Right. Put it all the way down on F tier.
Starting point is 00:12:12 Put it all way down because I actually agree with that. this is if this was the only one you did then i think you're pretty much yeah like that like i'm guessing we probably we won't hit another one that has less actual practical downsides than that one but we'll see we can move it if we turn if it turns out no then we'll move it but all right programmer time is worth more than CPU time oh god i have never heard this statement in my life yes you you've heard a variation of this statement where it's just like this is the this fundamentally this is the developer ergonomics argument or it's just like you will include
Starting point is 00:12:44 the kitchen sink because you wanted to write like three you wanted to write your code declarative in this one part you loaded your app a huge amount you know it's a Ramda right I think it's in TVI RANDA right I want it to be functional and I want my erity functions
Starting point is 00:13:00 and he's just like okay well you've just included a whole ass library because somebody didn't want to like write a function that returns a function trash we bring you over to the Ruby community for one day you'll be hearing this phrase all the When everyone's like, why is it so slow? You go, whoa, chill, chill. Our time's more important than the computers.
Starting point is 00:13:15 Relax. Let's write some code. DHH who's been on the show with us will say that, like, if he was on right now, he'd be like, yeah, that's totally fine F tier. Right? There's many people who that's just their philosophy of how they build things, for sure. Yes, yes. Yeah, the problem is with this, I think, this idea of like, oh, it's whatever, programmer time is more valuable.
Starting point is 00:13:35 People make super slow programs. And then they're just like, dude, I made that really quickly. five seconds ago and who cares if you guys are all struggling using it. Get bigger computers. I don't like that attitude. We don't care about performance by default. It's the new problem because he's youth. And so, yeah, I mean, and part of this is this going to be a matter of, of like, what your goal is, right? Because this statement probably makes some sense in a business area where there's low competition, right, which is a lot of internet business areas. There's a lot of places where there just isn't very much competition and there are like near monopolies on things.
Starting point is 00:14:10 And you absolutely can just kind of shovel stuff out, and like that's just how it is, right? So I would say, like, this is one where it really depends on whether you're talking about our goal is to ship quality software, in which case this is very harmful, or our goal is just we're a business and we don't care. And like, we just need the like bullet points to be there so that the sales team can say that they're there. And so as long as the thing technically does it, doesn't matter if it takes six years and no one can use it, right? So this is a tough one to place because I think it comes down to what are your goals with what you're doing and what does your business look like, right? So I would say this one and premature optimization is the root of all evil, which I think you said we also have on there. These are both going to come down to that, right, in a lot of ways. But anyway, so I would say this one, this one's probably, I'd put this one mid to high, like.
Starting point is 00:15:09 like B or C tier, personally. But again, it's, it's a, when I, all of the things that are, are bad for performance, it's actually at least not as bad as some of the other ones because it's honest, right? Like the person is not saying that they did a good job or that it's like fine or whatever. They're just saying like, look, I know I'm burning up CPU time
Starting point is 00:15:33 and we're just going to pay for more of it or something, right? There's a good difference. And I think people are mentioned, like premature optimization, the root of all evil is like the sister cliche to this one. The difference is, is it has this amazing word there, premature, which implies we're going to get to the optimization eventually. Don't do it now.
Starting point is 00:15:48 Right, exactly. Don't discuss that one yet. There's too much hilarity in that one. You've got a pair. I'm saying the problem with this one, though, is that it extends forever. We're like, act, our time is more important than CPU time. You're like, well, are we ever going to make it better? You're like, nah, our time's more important than it's, if there's, I'm all for, you know,
Starting point is 00:16:07 the first pass not being that good, but. You got to have a time where we make the software good, right? I usually just give it to each and say, fix this. And then he rewrite the new language. The excuse I hear is like, it's only only if we're going to be 100 items. It's not going to be that bad. Right, right, right. And then it just gets bigger and bigger and bigger.
Starting point is 00:16:20 Right. All right. There's a lot of items in there now. But it is true. It is true that 100 items is like a really, like that's one of those great ones where you're like, I'm only iterating over 50 items. It does not really matter. And often the most simple thing being an array is often your best choice in these like smaller
Starting point is 00:16:35 item count structures. And so that's why I like put in little hard limits on stuff. You put like a little fail case, panic case where it goes up and you know, hit it in dev mode and you go, okay, there we go. We whoopsie daisied. We can move on. But okay, so I would put this definitely probably in the B tier just because. Yeah, that's interesting with that.
Starting point is 00:16:52 You see this frequently, but at least it's honest, right? It's just saying, hey, we don't, we intentionally don't care. And so it does terminate a lot of thoughts. Now, obviously, GitHub, you still can't type long comments on there. and it's just horribly horrible and slow. But that falls under what Casey said. It's a near monopoly. So it does not really map.
Starting point is 00:17:09 They have no desire or need to make GitHub better. They're just going to make more co-pilot. It's like when you make software, step one, start a monopoly. Duh, start from the monopoly, then make the software. You're going to like be competing with people. Seen to a waste of time. True. All right.
Starting point is 00:17:26 Here we go. Let's let's pick one. I think this one. Okay, so this one's interesting. Don't repeat yourself. I'm not really sure how this falls. under this category of self of thought terminating things because this kind of feels like thought filled things yeah dude i hate that phrase so bad well it was a there's eras of don't repeat itself
Starting point is 00:17:46 i will say and like i would say maybe 10 years ago it was everyone i was not allowed to repeat myself i was not allowed to everyone above me was like what are you doing stop stop stop you just wrote the same thing twice oh my god we have to refactor it has to have and then i think everyone got over that as time went on and we said well what what abstractions we make a thousand million stupid abstractions. So I feel like this was when I was a kid, this was hot. This was all anyone said. And I would never let the same thing happen. This is actually a really big thought terminating because I can't tell you how many arguments I've had where people are like, oh, we got to refactor this to make it into something where we don't repeat ourselves. And I'm like, well, but right now it's simple. And if I combine these two thoughts that are very similar,
Starting point is 00:18:23 it's going to just make kind of a hellish config that I'm going to have to pass in to kind of swap between these almost near identical behaviors. Yeah, you know what happens? Like you'll make, you'll make, you'll make some kind of function or whatever your teammate will be like hey that looks like it would be helpful to me or somebody one day let's uh let's make it uh reusable and then you make it reusable and then no one ever you reuses it and it just sits in a fucking utile folder for like 20 years i hate i hate this you know what's made worse is that after it gets moved to the util folder no one can find it and so there's like seven versions of that same damn fucking literally my life dude every time i hate it oh my gosh okay yeah don't repeat your
Starting point is 00:19:02 I feel like that's like an S-tier level, like stop thinking. Yes. I've been at companies where it's like we make a U-Till folder. You make a U-Till library for the company. And then you make some stupid implementation for the simplest little function you've ever done. And then someone makes a variation of that function. And they go, oh, we have to combine them. And then they spend all day talking about how do we combine these two functions that are in two different services using a utility library.
Starting point is 00:19:24 We go, make another function? That's three lines long. He goes, no, no, no. We will debate. How can we get these things? It's just it's a waste. So I guess I'm the odd man out on this one. I actually...
Starting point is 00:19:37 Case is disappointed in our conversation. Well, it's more... I mean, I guess I can kind of see... So I do think that maybe we can make like a happy medium here and just say, when you're talking about a team of people, I can see why don't repeat yourself is annoying, because it's like, well, had I wanted to merge these two code pass, I would have, right? And so if someone else is telling me...
Starting point is 00:20:02 me to merge them and I didn't think they should be merged and they're using TRY to be the reason to do that. Yeah, I'd be pissed about that, I guess. So I totally am with you on all of that. But I just wanted to add the caveat that like when I'm actually just programming and we're just talking about when I'm writing code, I'm not talking to someone else about it, I often will just try to make sure that things are done usually only once. Like that's how I'm normally looking at things. Like anytime I see myself do something twice. I put that into a function that I can call to do that thing. And like, so I don't want people to get the impression that somehow you're just supposed to be...
Starting point is 00:20:42 Like, one of the things that I hated most about when you guys were showing me AI code is it doesn't ever do that. It just spams everything everywhere. And I'm just like, this is horrible. And like, the number one thing I would have said to one of those bots was DRY, man. Like, why are you computing the distance the same way in 50 different places? Just make a freaking distance function and it won't do it, right? So I just want to make sure that it is an important thing. It just might not be a great thing for when you're arguing with people about code.
Starting point is 00:21:12 Okay, so first of all, Casey does the thing that you, Casey and T always do this. I got to represent the dumb people out there. He's always like, I don't understand. You guys repeat yourselves? Oh, I didn't know that was the thing that you're doing. I just don't do that. Don't write code. Like, I think the difference is if it's your code and you're in charge, it's all good.
Starting point is 00:21:29 There's a lot of us idiots out there writing code. We're told they refactor that. Combine that. I got a function over here. No, that's why I'm saying. We totally get that. I totally get that. Like, that if someone's telling you that and you didn't think so, like, you looked at the code and you're like, I don't think they should be merged.
Starting point is 00:21:43 And someone was like, no, you got to because DRY. I could totally, like, as I said at the start, I totally get why that sucks. Well, I think there is another, there is like another part of this too, like, because for the AI side. I think it's good that AI duplicates a bunch of functions and doesn't try and refactor stuff until you tell it to. I would rather it's spam functions until we've gotten to something I like. then I can start saying, okay, let's start creating the right abstractions. Because we know if we refactor, if you say, like, I don't know, I need a distance function right now. And it goes, we actually don't know all what we're doing yet.
Starting point is 00:22:11 You actually might be pigeonholing AI into a corner where you say, do this dumbest, long, annoying thing that we know is right. And then we will talk about combining after. I think that's a good way to talk to the AI. Who's my friend? So AI out there. I mean, only if the AI is like an absolutely remedial programmer that I have to babysit, which is the whole reason that. I don't like these things, right? It's because it's like, I have to spend more time telling it to do obvious stuff.
Starting point is 00:22:38 So, yeah, I mean, if it programs like a beginner and beginners repeat themselves a lot, which is why I wanted to say, like, D-R-Y is not really that bad of a guiding principle if you're using it for yourself. But they're, you know, so as an argument, it's maybe not as good. But as a, like, thing you should think about, it's not bad. That's the only caveat I'd add. So that's it. Where are we putting it? All right.
Starting point is 00:23:00 We can drop it at one level. A. Okay. Okay. I like that. It's high. A lot of people, a lot of people work in teams.
Starting point is 00:23:10 I'm not sure how much. I don't know what the solo to work in teams number is. Like, I don't know what that ratio is, but I feel like a lot of people working teams. Therefore, we'll use it in that kind of way. Okay, we'll just move on. Okay.
Starting point is 00:23:23 The right, this one is by personal gripe, which is use the right tool for the job. Now, me personally, I put this all the way up here at S tier. Let me give you a quick reason why. What does it even mean? Can you tell me what it even? I don't even know what that means.
Starting point is 00:23:37 I'll give you an example. So let's just say that you're about to build a brand new web application. Okay. And it does not matter. Like I noticed that I didn't give any requirements or anything. There is already people that saying the right tool for the job is going to be you're going to want to be using X database. You're going to want to be using this, you know, what is it, clerk for authentication? You're going to want to be using typescriptful.
Starting point is 00:24:01 Like they already know all the things in like a vertical right away without with zero thought actually put into it. There's no like, hey, what are you building? Oh, you're building an internal tool. What are you building it in? Oh, okay. It's, you know, like people just pick the default thing that they really like. Really what the phrase should be is I use the tool I like the most for any job. No, no, no, prime.
Starting point is 00:24:22 You're all, you're completely wrong. Okay. So what I use I use I use code. I use Rust because it's no memory safe. So unless you like memory safety, it's a big problem. So that's the right tool for the right job, unless you are making memory on safe code,
Starting point is 00:24:36 then you should use C. Those are the only two tools, right? Okay, so basically what you're saying is this phrase, it doesn't really mean use the right tool for the right job. It secretly means something more like premature tooling is the root of all good, is what they're saying. Like pick the tooling right out of the gate and you're good. Don't bother waiting until you know what you need.
Starting point is 00:25:01 It's just whatever is hot that week, that's what we're going with. It's because all those folks are just making crud apps. So it's like cookie cutter. Okay, trash, there's nothing wrong with crud apps. Okay. And the world needs them, all right? You know that millions of people rely on crud apps a year to feed their families. So don't talk down on it.
Starting point is 00:25:18 I'm not eating crud. All right. Yes, anyways, I hate this phrase. I see it most often. It is just a way in which people, they don't actually mean the right tool for the job. because there are plenty of great distractions out there. And sometimes Rust is a really great choice for a language. I am going to throw it out there.
Starting point is 00:25:36 There's a certain set of problems that I actually really like it for. And guess what? It won't be used because people will be like, oh, we're going to use the right tool for the job, which typically, at least in my experience, means web dev chooses TypeScript to solve all problems on Earth, including how AI is now becoming solved by a TypeScript right now. There's a big push to try to make AI happen in TypeScript as opposed to Python.
Starting point is 00:25:56 And so it's just like, okay, this is not to use the right tool for the job argument. this is just simply I love TypeScript I will make it work in all aspects yeah ST is the worst I'm all for it well so this one is useful if you have an agenda right now once again I have an agenda when I work I'm trying to sneak code different languages into the code base this is how you sneak a language into the code base this is literally how you do it you're doing something in TypeScript you're looking for any problem like I'm looking for any problem I can that I can say only Russ can fix this
Starting point is 00:26:24 only we have to get Russ it's right to the right job come on manager you got let me rewrite yeah let me rewrite So this is a actual tech. I've used this to get Go into a stack that was all Python. I'm dying in Python. And I'm like, we need the right tool for the right job. It's too slow. It's concurrency. Go's whole language was built around a concurrency model.
Starting point is 00:26:40 It's the right tool for the right job. And they go, fine. So it is useful for accomplishing your own goals of sneaking languages and stacks. Well, the Python to Go train is actually a pretty good. That's exactly how we did it. It actually is the right tool, usually for the job whenever you do high computation. Gotcha. All right.
Starting point is 00:27:00 No one has any opinions on that one? Yeah, I got nothing. I'm begging, you're saying you don't want. Oops, he's wrong. No,
Starting point is 00:27:07 I get that it's an S-tier bad thing to be using. I would just use it for its bad thing. That's what I'm saying. He's saying it's bad and he loves that. Yes, and I use it for its evil. Yeah.
Starting point is 00:27:17 It's evil and I am evil. No, no. All right. Well, sorry, I know from my candle wall. I'm in like bombs house.
Starting point is 00:27:25 It depends. I hate to be meta, but I mean, it depends. on the context here. Doesn't it depend? It always depends, Brian. It always depends, you know?
Starting point is 00:27:36 I mean, that's got to be F-tier, because that's the right thing for most, that's true of most things. Like, what do you want to eat for dinner? I don't know, it depends. What you got? You know? Daybird.
Starting point is 00:27:50 The answer is always Daybird if I'm in L.A. That's what I want for dinner. I want Daybird. I don't even know what Daybird is, but I will have it next time I'm in L.A. Dude, it's so good. Oh, my God. Like, hashtag ad, Daybird is the most amazing...
Starting point is 00:28:04 It's the most amazing chicken sandwich you've ever had or the most amazing fish sandwich you ever had. Your choice. Both of them are amazing. Casey, you could have hit him right there with the best chicken sandwich or fish sandwich. What do you want? It depends. It depends.
Starting point is 00:28:18 Like, you could have hit them. It depends on which one you want. Anyway. All right, so we're saying it because, I mean, I hear this phrase. Whoa. And this doesn't really feel like a thought-terminating phrase. People are so wrong, Prime. You have net, you guys, this is the problem.
Starting point is 00:28:30 Prime worked at Netflix where there was no juniors. So you've never had this junior senior hierarchy. I've had seniors I've worked with who don't want to talk to you anymore because I'm annoying. So they just use It Depends until I go away. Like, hey, should I do this? Well, it depends. Okay, well, how do I decide here? Well, are using this or that?
Starting point is 00:28:48 Well, this. Well, so which I use now? Well, it depends. Are you doing, and they just won't ever give me an answer until they just kick me off. It is literally like you can cut people off. It depends. figured out for yourself. Yeah, I mean, good.
Starting point is 00:29:00 Like, it's a J. Junior Programmer. Go figure it out. That seems like a good. They're supposed to tell me what to do. That's a learning experience. It actually sounds like a thought inducing phrase, not a thought inhibiting phrase.
Starting point is 00:29:10 I'm the one as to think, though. That's the problem. It's me. I want them to tell me. Just tell me what to do. You're like, I thought the point of a senior programmer was just to tell me exactly what to type in so that I don't have to think about it.
Starting point is 00:29:24 I always have, it depends as a mode to never get anything done. As like you can, you can discuss add infinitum a problem. Like, you get problem masturbation going on where you just can discuss forever about a problem without anything because everything is just like a continuous,
Starting point is 00:29:39 like no one makes a decision because there's always an it depends. Well, maybe that could be a reason to put it up one from where it is. Like maybe, maybe there is like a case where it depends becomes like a, a, uh, what's the difference? What's the opposite of a virtuous cycle,
Starting point is 00:29:54 a death spiral? Like a, like it keeps, A sex spiral? A bald eagle sex spiral. So maybe, yeah, maybe. All right, that's good. All right, all right.
Starting point is 00:30:04 Are you ready? Let's see. Make it work. Make it right. Make it fast. Yeah, that's, that one's ridiculous. The, the problem with that one is like most of those kind of sayings. It completely removes the act.
Starting point is 00:30:23 It, it pretends that software. development works in a way that it absolutely doesn't work, right? So making something like work correctly, there is no difference between that and making it fast in terms of the actual structural requirements of the thing. So this bakes in, this is very similar to premature optimization of the root of all evil. It misses the fact that optimization is something that has to be planned for throughout the entire process if you ever want to make something fast. So making something work, the idea that there is a step of making something work with no regard to how it will have to run at the end, the only time that's actually a step in the process is if you
Starting point is 00:31:10 literally have no idea what you're doing. Like, I don't have any idea how this problem gets solved, so I just have to kind of go over here and just like play around with it for a little while until I can actually make something that solves it. If you're in that situation, sure, then this three-step process is correct. But most of the time, it's like, okay, I know how to sort a list of names or whatever it is. We all know ways you could do that. So me just sitting down and typing in one of those that works is not actually useful. What I'm supposed to be doing is going, what do I actually need to be delivering?
Starting point is 00:31:47 What are the requirements for that structurally? then I'll make it work, but it has to be in that structure that can be optimized properly later, right? And so the make it work part, if what you meant by that was make it work in a structure that can be optimized properly, then sure. But if it's just make it work, like, do anything at all, that's just a waste of time. All you were doing was just screwing around at that point, and that's not actually useful. So this one's tough for that reason. And the way that I see it used is usually in the wrong way, meaning I usually see it used in the way that I don't approve of, even though, like I just said, there is a way I could imagine that it being, like there's ways you can modify it so that I do approve of it. Does that all make sense? Yeah. Trash, Trash probably knows really well right now being at Netflix. Hey, Trash, how often do you get to make it right versus make it fast? I'm pretty sure your job, right, is the culmination of make it work for many, many years. And now they're like, okay, make it fast.
Starting point is 00:32:48 Yeah, we pretty much, at least, I mean, my whole career is, uh, let's just make it work. And then let's just hopefully it goes. So I feel like especially like in the UI space, it's really hard to be like, there's not, there's never been a concrete recipe to do something. So it's always been stumbling through. And then when it actually kind of works, you're like, uh, all right, then let's kind of like pick up the pieces as we, uh, try to tackle some tech debt. Um, but like if I'm doing more like scripting, like bash and like notes.
Starting point is 00:33:18 stuff, then yeah, I can definitely just have, I can make it right immediately. But if it's like UI, UX stuff, like, that's like, you're just like effing around and finding out that whole time, like for sure. So I don't, I feel like in my space or like in the UI space, it's kind of hard to, to be like, I haven't met anyone that was like, yeah, I know exactly how to do that. If it's like, especially if it's like a brand new like user flow or something, it's, it's never, it's never straightforward like that, if that makes sense. I don't know if you can relate to that, Brian. The only time that is, aren't you trying to fix the whole like type script compilation
Starting point is 00:33:48 like the all the LSP's never ever work when I was I mean the last time I opened up TBI which is granted it's been two years I even tried VS code and it would work for like one completion stop for like 20 minutes and then start again and then start again and it's just like it never worked ever and I was just like okay it's gotten so big and so unwieldy and so that's the whole make it work without any consideration to the whole make it fast side of things right well I think it's the big you never need the return types you know you know don't return types that would be terrible but it turns out that's like a huge performance went, don't do that, don't do that, don't do that. And all those things add together into
Starting point is 00:34:22 this just giant mess where it's like impossible or untenable to actually fix. And I would actually add one thing to that if I could, which is that the problem with make it work, make it right, make it fast, also it puts things in an order that almost, it almost encourages your organization to shoot themselves in the foot. Because as soon as you have something that works, someone will start using it, which then precludes your ability to change the API to make it right and to make it fast. So, like, a lot of times, like, the last thing you want to do is have a version that works properly, but that is wrong and slow. Never let management get that. Because as soon as someone gets a hold of it, now they base
Starting point is 00:35:07 the whole thing on it. And I think all of us have probably been in that position where we're like, wait, no, don't keep using that. And they're like, sorry, man, it's like the entire infrastructure now and you're like, okay, that's really bad, right? So I think, again, like, this one's pretty bad. It's a lot worse than it sounds, I think, in practice, because it sounds perfectly reasonable. You're just like, well, yeah, of course I've got to get something working before I can, like, debug it and make it work well,
Starting point is 00:35:32 and then before I can make it fast, like, that all makes sense. But I think it hides the real danger of this one. So I think this one's pretty bad. I put it at least at a B. Okay, so Casey, I do disagree with you, and I think this is once again, this is always the thing of, like, Casey being smart and working with smart people and lays like when everyone's smart and awesome in software these are you shouldn't have to worry about these things.
Starting point is 00:35:51 I've had this problem specifically where you have a senior engineer who works from home, who comes into the office once a month, who only has to submit a PR every two months that he merges in thousands of lines of codes for rewrites. And he'll go off in a direction and be like, oh, we need this great. I got an idea for it. I'm going to build the crate. And you're like, oh my God, dude, we just need this fix right now. Just make it work.
Starting point is 00:36:11 Make it good. I'm building the greatest thing ever. It'll go so fast and we're going to waste two months while this person tries to solve, boil the ocean. And we're just like, dude, just make it work right now. Please, please, please. We can make it better later. This does happen. And this phrase has helped me in my own life.
Starting point is 00:36:28 I think the difference is here is that some people only work in one of these slices. Like trash is saying, for me for years, you're only making it work, making it work. And then you've got a performance engineer coming. And they're only doing to make it fast. And someone comes in and they're here to refactor make it good. But if this is, like, if you're going to do all the steps, you are going to have time for like, you know, I'm going to spike something. I think make it work is like spiking like you were saying.
Starting point is 00:36:49 That's a good use case. And then from here we can write the code good. I just know, I know senior engineers who disappear for a month and come back with, here's a new library I invented and a whole new parent. I'm like, this is terrible, dude. We just needed the birthdays. Well, yeah, but that's going to be true of any process, right? Like, no matter what you say your process is, someone can just suck at it.
Starting point is 00:37:09 Right? And then that, but that doesn't really invalidate the fact that when you're doing, when people are doing something properly, that that would be the right way to do it, right? Like, no matter what we pick, you're going to have something like you could tell someone, look, just give me a version of this that works at all. And they'll come back with something that's like so bad that it's completely unusable, but they're just like, no, sometimes it kind of works when you start to call it, right? You can always imagine like a failure case.
Starting point is 00:37:34 But I'm just saying, like, in this particular case, when you're saying this phrase, what you're usually talking about is deferring any of the actual work that needed to be done. until some later date and like that's usually not a great idea if you know replace it with just something like if you are desperate and need something working right now just be like make a prototype or whatever like that's what we're doing we're just making that we're making a stand-in thing because that's all we can afford and just admit that you're doing that don't claim that somehow you're going to turn that into a right fast version later because that's that's a lie so just be like no we're just all right we're making the crappy version we'll make the crappy version that should be the
Starting point is 00:38:11 say make a crappy version there i don't have a problem with that if that's that's a That's what they can do, do it, sure. But don't lie about it. We can do make it crappy, make it fast, make it good. Or I think a good one we could do is we could say, make it work parentheses, but please don't ship it. Or let management know that we finish the feature, comma, make it fast, make it good. We just can't let management ship it. If you wanted an accurate one, it be make it crappy, throw it away, make a working one that's the fast structure but slow.
Starting point is 00:38:38 Make that right and then optimize it so it is fast. That's like the actual thing that happens, right? Anyway, we've got it tier listed. So I think are we happy with a B? Where are we at? All right. It's in a B. Okay.
Starting point is 00:38:52 All right. Okay. Okay. All right. Gagney, you ain't going to need it. You aren't going to need it. It's literally the ultimate self-terminating cliche. Like, it is literally too.
Starting point is 00:39:01 I don't know that one. Oh, really? Which one did you read? Yeah, I've actually never had it. I've never used in any sort of professional setting. We're in different worlds. This is where you're saying, hey, guys, like, we keep doing this thing. I'm going to build a library over here that can,
Starting point is 00:39:13 can handle these birthday conversions and then they go yagney you're not going to need it you're wasting your time writing that just just get back to see that on the list oh it might be have you ever worked somewhere that doesn't revolve around birthdays uh i just every example so far has been birthday he works at birthday dot coms we've already said this he brings he brings balls he does he's the best boy he handles birthdays got all the bee jobs yeah at ticket master and spotify my job entirely was birthday experiences. I got poached from Ticketmaster to Spotify to handle birthdays. They were like to
Starting point is 00:39:48 kill it over there. No, I'm joking. That would be so cool. It was like, yeah, we need a birthday guy. HR, you got to get us a birthday guy. We're dying over here. Galactus isn't working. Put that to my resume. All right. That's pretty good. I don't know this one, so I got nothing.
Starting point is 00:40:05 Yeah, I got nothing. None of you have ever heard this chat. You guys have heard this phrase right. You guys look in the different world. You've never heard Yagney. What was the phrase? You said you aren't going to need it. You ain't going to need it is the classic thing. You ain't going to need it. He put you aren't going to need it. You aren't going to need it. Can I just put it? Yes, absolutely. I have. Just throw it on there anywhere. Yeah,
Starting point is 00:40:26 I don't know this one. Sorry, no one knows. No one knows. Also, by the way, I had to go pick up my daughter here in 10 minutes and thanks for taking the first 15 minutes. Just have her on the podcast. We're never getting through it. I know. Keep going faster. All right. Pre mature optimizations is the root of all evil. Casey, I already know you have a strong feeling on this one. I mean, that's S.
Starting point is 00:40:45 That's like, it's never correct. Like, you never say that. It's a meaningless statement because it is baked into it, the fact that somehow you already know when you should optimize, because premature could be any point in the process. So it's a non-statement. It tells you nothing. And yet people say it as if it's telling you something. Worst, worst one probably by far.
Starting point is 00:41:05 Agreed. You both, I think it's, oh, my God. This is the one I was like, well, that's the only really good one. I was like, that's F tier. literally that was my mind anything nobody what's when is premature it could be like right at the beginning of the project might be the right time to do something so it doesn't tell you anything it's like a non-statement how can you optimize something that isn't working yet how can you optimize something that we don't have data on how it's being used by the customers who knows because it doesn't say
Starting point is 00:41:29 the statement does it just says premature so all it's all it's saying is like that that if you magically knew when the right time was that's when to do it yeah no shit like like obviously that's the it tells you nothing it is a non-statement and yet people use it as if it means never optimized your code, which is a weird thing. So, yeah, the statement doesn't even get used with its own meaning.
Starting point is 00:41:52 So it's horrible. Like, it should just be retired. So your whole problem is we just don't know when the word premature occurs. If we can... No, I mean, for you, what's premature versus not? Premature often occurs when your service is falling over in production due to traffic and it's costing way too much. And management is super upset at you. Yeah.
Starting point is 00:42:08 Like, that's as far as second. is until the uppers go, why is this costing this many zero to fix it now? And it's just like, okay, premature has now officially left. We are now... Yep. So we have now... We have proof that premature is not happening anymore.
Starting point is 00:42:24 Yeah, there's like a series of people that can be mad at you. Anytime they're not mad at you, that's premature. So once building's mad at you, once the customers are mad at you, once management's mad at you, we've hit mature. And so now it's time to optimize. But do not optimize something unless someone's yelling at you. That makes no...
Starting point is 00:42:40 God. All right. You're really ruin Casey's morning. All right. You just need to be disciplined. I don't know that one. Dude, if someone said to me, they can't hit in the face. I thought you were jujitsu guy.
Starting point is 00:42:57 I thought you'd get on the ground. Get over here. Throw him. Put him in a rear naked choke. It's like, excuse me? I need to be... Why do you have to be naked to put them in a chokehold? It's a rip. Shut up. Because you can get closer to the skin. Okay?
Starting point is 00:43:09 The arm is naked. Skin is getting contact, just like a baby in their mother. That's how I like it. Yeah, that's not a programming statement. This one was on that list that went viral. And I was like, are people saying this? It's that I've never, I don't hear people. No one said this to me.
Starting point is 00:43:22 I think this is like a shot at sea. To me, to me that would be S because that would stop all my thoughts. Because I'd be so pissed. He would have instantly fight. So that's ass. Okay, great. Yeah, I'd be like, that's like fighting words.
Starting point is 00:43:34 Like, what do you mean? And he'd be disciplined. And then trash immediately gets naked and puts you in a turpull. Don't make me Hold on, let me get my shirt off The hoodie's coming off It's coming off I would encourage everyone in chat
Starting point is 00:43:48 To look up General Butt Naked right now A real historical figure For whom this was true Alright I'm on my Wikipedia Can I actually Google that? Yeah Oh it's real historical figure
Starting point is 00:44:00 Like there'll be a Wikipedia entry General But Naked Yes We got all right We got a way too scared Next one next one while he does Get it, trash. Use my phone.
Starting point is 00:44:11 Best practices. Now, I got one for you guys. I was in the process of making a thing. This was with a certain aspect of where trash currently works. And I named my private variables without an underscore. And we had like multiple days long thing, even though it was marked private in TypeScript. And if you used it in TVY, it would say,
Starting point is 00:44:33 hey, you can't use this because it's private. All that good stuff. They're like, well, you have to put underscores. because it's best practices. And I'm like, but why? It doesn't make any sense. Like, why do you need underscores because it's best practices?
Starting point is 00:44:44 It's not even a thing. And so then it became this whole argument where the reason why I had to go back through and un-underscore things was because of best practices. But there's no actual thought there for me. So for me, best practices go way high. Just because I'm fine with negative experience.
Starting point is 00:44:59 It's just it feels like something people say to propel on something that used to happen without any reasoning or measurement why. Like I had another one where someone told me that I had to do it. Like, it was like a literally a year-long project that ended with me going, actually, if we would just write the thing normally, it would be way better. And all of these best practices you stated actually were completely false and under misunderstandings.
Starting point is 00:45:21 And that's that. Yeah, I mean, I think the problem we have in computing is like it's not, none of the best practices are like from a science. Like, they're not things that people have proven. They're just something that somebody said and like got popular because there was a book or whatever. So, like, best practices usually just means, like, uh, witchcraft or voodoo. It's like a thing, like, we waved this type chicken around and we think that makes the code better. So I hate best practices as a phrase is it's not so much that I don't think it would be great if we had best practices that were actually best. But the problem is that's never how it's used.
Starting point is 00:45:54 It's used for like stupid stuff. Yeah. What we do is we avoid that whole argument. And if we feel strongly enough about it, we'll write our own custom lit rule and just enforce it with tooling and then call it a day. Like, don't even ask me. Like, if we care strongly about it, our tooling will do it for you. So, well, some people will tell me, like, I'm like, I'm doing some front and I'm trying some React. I've got Tan Stack, Han, Hano, 1,000 things.
Starting point is 00:46:15 And I'm they're like, well, here's the best practices. I always ask the same thing. What were the best practices last month? And they go, oh, it's totally different last month. And I go, the month before what was it? And he goes, they're different every month. And it goes, you get a new set of best practices every month and you get an upgrade. It's really fun.
Starting point is 00:46:31 That sounds like just a fun way to build a business. All right. Real programmers don't make that. mistake. Oh. That's a tough. That's a tough one because they definitely don't. Um, but like, it does, that's not helpful.
Starting point is 00:46:48 Like, it's like, okay, so they definitely don't make that mistake, but you obviously did. So this is not helpful. That is S tier for sure, right? Cause that's just like a showstopper. It's more, it just is more antagonistic. It doesn't actually deliver any real. any real value? No, yeah.
Starting point is 00:47:07 Maybe a list because it's so bizarre. Yeah. Casey, sometimes you gotta bully the juniors a little bit. The first time they drop a database, that's a good time to haze them. And that's when you hit them with this phrase and you get them down. You say that to me, I'm getting naked. I'm jumping right on you. I think the worst, the one that's worse than that that's related would be,
Starting point is 00:47:28 I don't make that mistake. Because then if, like, if I'm arguing for that, like, I'm like, okay, yeah, maybe I don't, but like what difference does that make to the other people in this discussion, right? No, it's it. That is very, very true. All right. Fast, cheap, good. Pick any two. Is this even a discussion you get, Casey? Is this something you're even familiar with where you're at? That is the one that I like probably have heard more than you guys, I'm guessing, because that comes from hardware, the hardware world. and it's totally true.
Starting point is 00:48:05 That's just, I'd put that in F immediately because that's just accurate. We found one real one. This is great. Yeah. I largely, I actually largely agree with this one. I've never, you can't really do something fast and good. Well, I mean, the only problem is that you can't really pick fast and good, can you? Like, can you actually say, hey, we're going to write this software fast and we're going to write it good?
Starting point is 00:48:26 Well, okay, to be fair, it's, again, more from hardware. It's like, look, you can have a fast good. thing but will be very expensive, right? It's your Nvidia 5090. We used the reticle size dye and we made this gigantic honkin thing that cost a billion dollars, right? So it's usually more that way. In software, because we're so bad
Starting point is 00:48:44 at it, like, yeah, I agree. It's less relevant in software perhaps because we still won't be able to make the fast good one, no matter how much money you give us, but you know, aspirational fantasy, I guess. I feel like with software, it's going to be under-delivered, over-promised,
Starting point is 00:48:59 expensive, and not that good. Okay, so maybe move it up to D. Let's move it up to D just because it's software. In hardware, it would be down at the bottom. Yeah, that's because there's actual, there's real numbers you can play with there. Well, this phrase is actually very, very incredibly useful when you're talking to management sometimes. Because the cheap is one of the most important things that I've come up where it's like, guys, we, cool, I know you want this. See the cheap one right there?
Starting point is 00:49:22 It's going to take a minute and it's going to cut. We're not have these four devs on it. Or we're going to have to beef up this part of the cloud or whatever. This has been a helpful phrase. used fighting with management to do code correctly or get more time. It's been helpful, not thought terminating. Yeah. Well, it is, it's thought terminating in the sense that you want management to stop being like, just do it. It's easy. Let's go. You're like, no, actually, it's really, really hard. And you're giving me a four-person job and you want it done quick. Like, this is
Starting point is 00:49:49 going to be bad. I mean, part of the problem is that in software, when we think of cheap, what we're thinking about usually is how many, how much developer hours it took or whatever. And unfortunately, in software, you know, we have mythical man month problems where it's like the more people you add to a team, like the slower the development goes and stuff like that. So it's hard for us to go like, unlike hardware where there's a physical cost. So we're normally talking about the physical cost of the thing. There isn't that like sort of direct relationship of spending more money and getting more. In software, we don't really have that, unfortunately, right? But but yeah. So that's why this phrase is maybe not as good in software, but still less harmful than a lot of the other ones. Well, unfortunately, I do have. to go. So hey, everybody, that was a fantastic stand-up. I'm sorry that we had to end it so abruptly thanks Began. But I'm kidding, Began is awesome. No, it's my fault. This was actually
Starting point is 00:50:38 really, really good. I actually pretty much agree with everything here, and I've heard most of these phrases, so it's fantastic to see them here. So thank you very much are all of them ranked? Yeah, we're all ranked. Okay, cool, so take a screenshot of that, put it up, put it on Twitter. Everyone argue with it in Twitter. Great work, everyone. We did it. We did it. We did it.
Starting point is 00:50:55 All right. Thank you very much, everybody. I hope everybody enjoys today. Bye-bye. Bye, chat.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.