
Bullsh*t Engineers Say Tier List (Lost Episode)
Freitag, 15. Mai 2026 · 51 min
Kapitelklicken springt direkt hin
Shownotes
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 classic "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.
Transkriptvom Podcast bereitgestellt · Zeitmarken springen hin
I already started it watch it's we also know that you're late and you're streaming from a bathroom I'm not in a bathroom guys. Okay, it's a living room Anyway, sorry everybody welcome to the stand-up today We are talking about thought terminating of phrases in software engineering as you can see use the right tool for the job It depends pre-mature optimizations the root of all evil and plenty more We are gonna rank them which one is the least to most thought terminating of them all after you're obviously being most thought Terminating S tier being the least thought terminating possible the best phrase you can say now not all those phrases are terrible This is from a long discussion that's been going on on Twitter where people are all piling in what they think are thought
Terminating phrases and so with us today Of course we have big and bot who was late and unprepared We have with a trash dev who is also super duper awesome a type t-ro right you 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 Yes, and of course Casey Meertori the actual programmer in this group Real giga chat and a computer and hence calm check it out all right, so there we go We got everybody out of the way so now we are gonna be going through this list And we are gonna be talking about all these different ones and if you've experienced the now case You don't work in a professional environment like trash does when I say professional
I just mean large stock traded company. Yeah as 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 I can't be true. They trash you have these phrases I have added this last one memory is free Due to one of the directors at Netflix saying this about TV and driving people nuts Because memory was in fact not free and it was very difficult Okay, so let's just start with this you heard any of these you have not heard any of these What are you talking? I've heard heard half I've heard half Okay, well, let's start with the worst one now you're on half Sorry, sorry, I'm in the spoke now saying One of the other phrases one of the other phrases should have been like you know
Everything can be represented in an integer Let the So I said So I flip flop to round down to zero here We see the elusive programmer a simple creature that spends most of its time working alone often in darkness Well, what's this someone being wrong in the internet our coder springs into action reaching top speeds of 120 words per minute before Flash a light moat website the natural enemy of these code lovers stuns our friend the chase is called off 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 is yet deciphered what their purpose is
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 our keyboard warriors ready for bet quick read in its lights out Good night, little coder So how do I sleep so well at night? Well, I have sentry to help me crush those bugs And I'm not I'm not talking about like milking 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 just 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 so I know to start with rhyme You have to start with the worst one. I know the worst one. The one that we should start with the most poignant one the the most obvious one never do a full rewrite Okay, so that's the fall statements right you agree. No, I'm I mean that 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 so you never want any of them to terminate your thinking process But 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 the chance of that being the right decision is kind of lower than probably what a lot a lot of these other ones would be my guess Am I wrong about that? I'm 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. You guys talking it. Oh, first of all I know it's happening you guys are C++ devs So you guys aren't changing languages every week. Okay. A new language comes out. We have to do a full rewrite Half a rust half go Like you guys do Full rewrite is how we sneak elixir in the stack. It's how we switch
Okay, okay, you don't have a job Yeah, 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 at anymore and then we have to rewrite it in other things. Oh, I see an ass Why is prime saying oh no, I heard after prime. Oh, yeah, I personally got if I if I cover up the screen by accident If I Again, this is because we're versatile and give me our TMP feeds But if I cover up chrome screen chrome goes all I can save memory and will then quit processing and all the videos 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
Yes, to be some knobs you're probably right You know how they're like like hey 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 slash slash like set Hate it. Yeah, we're gonna get prime a second monitor everyone sub so prime can afford a second monitor. Okay All right, hey, but seriously Never do a full rewrite Begin do you actually think that this is a good idea? Okay, so I real quick I have told people before I've snuck multiple languages in that companies And the way to sneak stuff in a companies is you pick a service a small service in the microservice architecture and you do a rewrite of it You say I'm gonna take the logging service. I'm gonna do a rewrite of it. Hey, this thing like I don't know checks birthdays
You know, whatever I'm gonna go do a rewrite it of in zig or in the quick little full rewrite and that's how you sneak languages in How are you guys sneaking languages in a companies? Don't do them a professional wait How are you gonna make sure you don't get fired By writing it terribly The old school tech. Okay, okay, use the old technique. That was a check There's two schools of thought we're not gonna He just did the first school of thought it's in a TypeScript company and having one service and all go and you're the only go developer Good job security and and make sure don't don't ever help anyone learn how to use it. It's good. It's good stuff 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 Oh, you can't suggest something else Yeah, I mean the 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 um The problem with never do a full rewrite is really the rewrite problem Is about losing the sort of inherent Uh, come like structural complexity of the thing that you already have because Normally what happens is up for a system that's of any sufficient like doing anything sufficiently complicated checking birthdays maybe is a good example saying that isn't sufficiently complicated
So maybe I'm with you that we could rewrite that but what do you mean? but For anything that has any Like sufficient amount of development time in it and it 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 like 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 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 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 have some kind of an understanding of exactly what situation you're working in but If you were the programmers and you've been work 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 try to say that me and bigin wouldn't be a rewriting service Hasey is a engineer No, I'm not like you programmers Yeah, I made you You whoever is making the decision whoever is going to be doing the rewrite is the same people that did the service in the first place So you 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 Way too risky and so you have like it's rarely the right decision in my opinion So I'm we I love the rarely it'd be great if we made every cliche more subtle and rare 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 when they were writing it They were going through a functional phase and experimenting with languages and they wrote something in the a whole new pattern And then you everyone tries and interacts with it And it's the most painful thing ever to add stuff to 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 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 the Steve's code forever Yeah, I think the problem there is 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 for rewriting 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 had like a forked version that was like feature flag while we were like While like some people were still working on the legacy version we were working on the new one Oh, wait, you had a new feature. Oh wait, I can't even like merge it because it's a completely different pattern So you have to like manually rewrite those again. So it's just like a huge like undertaken of like Trying to make sure features are being shipped at the same time as every right literally the worst thing ever All right, so never do a full rewrite. What are we thinking what what to hear?
I'm saying that me personally. I'm thinking it just falls near C I put it even lower. I put it even lower. Yeah, D Yeah, I don't think it's harmful at all. I think that's like a good pretty good thing Like like if if that was your only thought terminating cliche that you did I don't consider you particularly harmful. Yeah, what did all the idea left here?
What did all I do 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 I'm guessing We probably won't get another one that has less actual practical downside than that one But we'll see we can move it if we turn if it turns out no then we'll move it All right programmer time is worth more than CPU time Oh God, I have never heard this statement in my 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 the kitchen sink Because you want to the right like three you want to the right your code of declarative in this one part
You loaded your app a huge amount because you know, it's a Rambda right? I think it's in TV. Yeah Right Yeah, I want my erity functions And he's just like okay, well, you just included a whole last library because somebody didn't want to like write a function that returns a function Trash, we bring you over the Ruby community for one day. You'll be here in this phrase all the time when it wasn't so slow You go whoa chill tell our times more important like computers 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 after Right There's like 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 is idea of like Oh, it's part of a programmer time is is more valuable is people make super slow programs And then they're just like did 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 is going to be a matter 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
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 you to what are your goals?
What with what you're doing and what is 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 B or C tier personally um, but again, it's It's a when I 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 and we're just gonna pay for more of it or something
Right there's a good difference and I think that people are mentioned like premature optimization the root of all evil is like the sister Appreciate it. This one. The difference is is it has this amazing word there premature which implies We're gonna get to the optimization eventually don't do it now. Right exactly. Oh, don't discuss that one yet There's too much hilarious now and we'll get a pair of you got a pair I'm saying the problem with this one though is is that you if it extends forever. We're like act Our time's more important than CPU time. You're like well. Are we ever gonna make it better? You're like Times more important than it's if there's you I'm I'm all for You know the first pass not being that good, but you got to have a time where we make this off or good, right?
I usually just give it to you should say fix this and then he'd be right to say here is like It's only a way for gonna be a hundred items. It's not gonna be that bad right right right right and then it just gets bigger and bigger and bigger Yeah, there's a lot of items in there now Yeah, it is true It is true that a hundred items is like a really like that's one of those great ones where you like I'm only iterating over 50 items It does not really matter and often the most simple thing being in array is often your best choice in these like smaller item count Structures and so that's why I like put a little hard limits on stuff you put like a little fail case panic case where it goes But and you'll hit it in dev mode. You go. Okay. There we go. We whoopsie daisied we can move on
Uh, but okay, so I would put this definitely probably in the beat here Just because yeah, that's okay. It's 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 get hub you still can't type long comments on there And it's just horribly horrible and slow, but that falls into what Casey said. It's a near monopoly So it does not really map they have no Desire or need to make get hub better. They're just gonna make more co-pilot Yeah, it's like when you make software step one start a monopoly does start from the monopoly then make the software You're gonna like be competing with people see the waste of time
true All right, uh here we go. Um, 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 thoughts filled things. Yeah Dude, I hate that phrase so bad Well, it was a there's errors of don't repeat itself I will say and like I would say maybe 10 years ago. It was Every I was not gonna repeat myself. I was not allowed to everyone above me was like what are you doing? Stop 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 do we make? What thousand million stupid abstractions?
So I feel like this was when I was a kid This was hot as it was all anyone said and I would never let the same thing happen This is actually a really big thought terminating one 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 It's gonna just make kind of a hellish config that I'm gonna 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 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 usable And then you make your usable then no one ever you re-repeat uses it and it just sits in the fucking you till folder for like 20 years I hate I hate this you don't Hate it worse is that after it gets moved to the you till folder no one can find it And so there's like seven versions of that My life Hey, oh my gosh, okay, don't repeat yourself that 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 you till folder You make a you 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 you till library Make another function. That's that's three lines long goes no no no we will debate how can we get these and it's just It's a waste So I guess I'm I'm the odd man out on this one. I actually 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 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 Um, and so if someone else is telling 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 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 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 bams 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 So I just want to make sure that's like That it is an important thing It just might not be a great thing for when you're arguing with people about code Okay, so first of all Casey does the thing that you it's 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 Just don't do that don't write code
Like I think the difference is if you if it's your code you're in charge. It's all good There's a lot of 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 it is 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 You're like I don't think they should be merged and someone was like no you got to because DRY I could totally like as I said at the start. I totally get what 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 spam functions until we've gotten to something I like and 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 I need a distance function right now And it goes we actually don't know all what we're doing yet You you actually might be pigeon-holing AI into a corner where if 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 Out there I mean only if 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
So yeah, I mean if it's it programs like a beginner and beginners repeat themselves a lot Which is why I wanted to say like DRY is 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. I probably where we put in it. All right. We can drop it one level. Hey Okay, okay, I like that. It's all right A lot of people a lot of people work in teams 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 work in teams. So therefore we'll we'll use it in that kind of way
Okay, we'll just we'll just we'll move on. Okay, the right this one is my personal gripe which is use the right tool for the job Now me personally 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 I'll give you an example So it what there's 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 to say the right tool for the job is gonna be you're gonna want to be using x database You're gonna want to be using uh this you know What is a clerk for authentication? You're gonna want to be using typescript full of
Like they already know all the things in like a vertical Okay, 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 what are you building it in? Oh, okay It's in you know like it 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 primary now. You're you're completely wrong Okay, so I use I use the right tool for the job. So if I'm programming code I use rust because it's no memory safe So unless you're like memory safety Well, it's a big problem. So that's the right tool for the right job unless you are making memory on safe code
Then you should use C those are the only two tools right Okay, so basically what you're saying is this phrase. Oh, it doesn't really mean use the right tool for a job It secretly means Something more like premature tooling is the root of all good is what they're saying like pick pick the tooling right out of the gate And you're good don't don't bother waiting until you know what you need like it's just whatever is hot that week That's what we're going with It's because I was folks are just making crud apps. So it's like Cookie cutter. Okay trash. There's nothing wrong with crud apps. Okay, in the world All right, you know that millions of people rely on crud apps a year to feed their families. Don't talk down on it
All right Yes, anyways, I hate this phrase. I see 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 abstractions out there And sometimes rust isn't really great choice for a language. I am going to throw it out there Like there's there's certain set of problems that 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 our thing 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
And so it's just like okay, this is not the use the right tool for the job argument This is just simply I love typescript. I will make it work in all I Yeah, as here is the worst part Well, so this one is useful if you have an agenda right now Oh, 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 then I can say we're only rescuing fixes Only we have to get russets right to the right job. Come on manager. You gotta let me be right there. Let me be right
So this is a actual tech that 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 guy It's concurrency goes whole language was built around a concurrency model It's the right tool for the right job and they go fine So it's it is useful for Accomplishing your own goals of sneaking languages and stacks Well the Python to go train is actually pretty good. That was exactly how we did it It actually is the right tool usually for the job whenever you do high computations No one has any opinions on that one I yeah, I got nothing I begin you're saying you don't want you oops. He's wrong over wrong 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. I'm using an s-tier bad and he loves that. Yes, and I use it for its evil. Yeah It's evil and I am evil. No, no All right Well, sorry It depends I hate to be met up, but I mean it depends on the context Doesn't it depend it always depends right it always depends you know I mean that's got to be F tier because that's the right thing for mo that's true of most things Like what do you want to eat for dinner? Oh, no, it depends what you got You know The answer is always daybird if I'm in LA. That's what I want for dinner. I want daybird Don't even know what daybird is, but I will I will have it next time in I'm in LA. Dude, it's so good. Oh my god Like hashtag ad daybird is the most amazing
It's the most amazing chicken sandwich you've ever had or the most amazing fish sandwich you've ever had your choice They do both of them are amazing Casey you could have hit him right there with the most chicken sandwich or fish sandwich. What do you want? It depends Like you can't 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 No, you're so wrong, Brian you have net you guys are this the problem prime work that netflix where there was nose 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? We'll are using this or that This we'll switch our use now will 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 at the pens go figure it out for yourself Yeah, I mean good like it changed in your programmer co-figure it out. That seems like They're supposed to tell me what to do If I actually sounds like a thought uh inducing phrase not a thought inhibiting phrase. I noticed the think though That's the problem I want to tell me just tell me what to do You 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
I always have it depends as a as a mode to never get anything done As like you can oh you can discuss add infinitum a pro 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 like no one makes a decision because it 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 What's the difference? What's what's the opposite of a virtuous cycle a death spiral like I'm at like it keeps Sexy spiral So maybe yeah, maybe all right. That's good All right. All right. Are you ready? Let's see um make it work make it right make it fast
Yeah, that's the that one's ridiculous the the the ridiculous yeah the problem with that one is like most of those kind of saying things It completely removes the act it it It pretends that software development works in a way that it absolutely doesn't work right so Making something work 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 this is very similar to premature Oppositions 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 literally have no idea what you're doing Like 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 like 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 What are the requirements for that structurally
Then I'll make it work but that has to be in that structure that can be optimized properly later right and so the make it work part If 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 couldn't 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 an 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 is the culmination of make it work for many many years And now they're like okay, make it fast Yeah, we pretty much at least I mean my whole career is uh, but 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 like All right, then let's kind of like pick up the pieces as we try to tackle some tech that um
But like if I'm doing more like scripting like Bash and like note 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 They're the only time you know aren't you trying to fix the whole like type script compilation
Like that. Yeah, I hate that p's never ever work when I was I mean the last time I opened up to TV Why which is a 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 stop again and then start again 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 to return types You know, you know don't return types that would be terrible, but it turns out that's like a huge performance win Don't do that don't do that And all those things add together into this just giant mess words 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 put 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 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 Uh, that's really bad, right? So um, 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 got to get something working before that I before I can like Debug it and make it work well and and then before I can make it fast like that all makes sense But I think it hides the real 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
It's software these are you shouldn't have to worry about these things 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 gonna build the crate and you're like oh my god, dude We just need this fix right now. Just make it work. Make it good. I'm building the greatest thing ever We'll do so fast and you're gonna we're gonna waste two months while this person tries to solve Boyle the ocean and we're just like dude. Just make it work right now. Please, please, please
We can make it better later. This this does happen and this phrase has helped me in my own life I think the difference is here is that some people only work in one of these slices like trash I'm saying for maybe for years you're only making your work making your work and then you got a performance engineer coming And they're only doing the make it fast and someone comes in and they're here to refactor make it good But if this is if like if you're gonna do all the steps You are gonna have times like you know, I'm gonna spike something I think make it work. It's like spiking like you were saying 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 from month and come back with
Here's a new library invented in a whole new paradigm. We're like this is terrible, dude. We just need it the birthdays Well, yeah, but that's gonna be true of any process right like no matter what you say your process is Someone can just suck at it 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 gonna have something it's like like you could tell someone hit 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 it sometimes it kind of works when you could sort of call it right
You can always imagine like a failure case 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 gonna 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 a crappy version. We'll make the crappy version
That should be to say make a crappy version there I don't have a problem with that if that's what you that's what they can do do it. Sure Right don't lie about it. You 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 be if you wanted an accurate want to be make it crappy throw it away Make make a make a working make a working one that's the fast structure, but slow 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 with are we happy with B? Where are we?
It's in a B All right, okay All right, Gagney Yankee to need it You aren't gonna need it It's literally the ultimate self-terminating cliche like I don't know that one. Oh really Casey Yeah, I've actually never had it. I've never used it 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 gonna build a you know a library over here that can handle these birthday conversions And then they go Yeah, Gagney you're not gonna need it. You're wasting your time writing that just just get back Have you ever worked somewhere that doesn't revolve around birthdays?
Uh, I just every sample so far has been breathed. He worked that birthday dot Listen, listen, he bring he brings balls. He's the best boy. He handles birthdays Yeah, I take a master and Spotify my job entirely was birthday experiences They I got spouched from take a master to Spotify to handle birthdays. They were like dude. You're killing over there Yeah, no, I'm joking It was like yeah, we need a birthday guy I'm a recruit HR you gotta get us a birthday guy. We're dying over here. Galactus isn't working my resume. Yeah All right, that's pretty good. All right. I don't know this one. So I got nothing. Yeah, I got nothing You wait, none of you have ever heard this chat. You guys have heard this phrase right
You guys never heard of the world. You've never heard yagney. What was the phrase? You said you aren't gonna need it is is the classic thing Yeah, I'm gonna need he put you aren't gonna need it. Which sound you aren't gonna need it. You ain't gonna I can I just put it. Yes, absolutely. I have throw it on there anywhere. Yeah, I don't know this one Also, by the way, I had to I had to go pick up my daughter here in 10 minutes big and thanks for taking That's just never in the past We're never gonna do it All right, premature optimizations is the root of all evil KC. I already know you have a strong feeling on this one I mean, that's down there. That's that's like there 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 A grade 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 after you're literally that was mine. It doesn't mean anything nobody what's pre 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 I can 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 the statement does it says premature So 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 case it tells you nothing It is a non-statement and yet people use it as if it means never optimized or code which is a weird thing So yeah, the statement doesn't even get used with its own meaning. So it's 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 Know what 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 man events super upset at you. Yeah, that's as far as I can tell you is until the uppers go
Why is this costing this many zeros? And it's just like okay premature has now officially left. We are now So we have now, but we have proof mature is not happening anymore 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 billiards mad at you once securities 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 and that makes no You're really ruining 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 hit in the face. I thought you were jujitsu guy. I thought you'd get on the ground
Excuse me. I need to be what? Why do you have to be naked to put up in a chokehold? 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 I think this is like a shot at sea Being like to me wouldn't you mean that would be as because I 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 Like what do you mean? I need to be disciplined and then trash immediately gets naked and puts you in a chokehold Don't don't make me Let me get my shirt off the hoodies coming on. It's coming on
I Would encourage everyone in chat to look up general butt naked right now a real historical figure For whom this was true All right Can actually Google that. Yeah. Oh, it's it's real historical figure Like it'll be there'll be a Wikipedia entry General butt naked. Yes We got I got one for you guys I was in the process of Making a thing this was with a certain aspect of 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 and typescript And if you used it in TV. Why it was say hey, you can't use this because it's private All that good stuff if 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 Not even a thing and so then it became this whole argument where the reason why I had to go back through and 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 I'm fine with that It just feels like some 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 these best practices you stated actually were completely false and under misunderstandings 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 Witchcraft or voodoo it's like a thing like we waved this dyed 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
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 web 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 I think some people 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 honor with thousand things and I'm like well here's the best practices I always ask the same thing what were the best practices last month They go yeah, I was totally different last month and I go the month before what was it and it goes Yeah, they're different every month and it goes you get a new set of best practices every month and you get up great
It's really fun That sounds like I've just a fun way to build a business. All right real programmers don't make that mistake Oh my gosh, that's a tough one because they definitely don't But Like it does that's not helpful 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 because that's just like a showstopper It's more it just is more antagonistic. It doesn't actually develop any real value. No, yeah Maybe a maybe a list because it's so bizarre Yeah, Casey sometimes you got to 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 him with this phrase and you get him down and then you say that to me
I'm getting naked. Well, I'm jumping right on you I think the worst the one that's worse than that that's related would be I don't make that mistake Because then it's like if I'm argued for that like I'm like, okay, yeah Maybe I don't but like what difference does that make to the other people in the No, I said did that is very very true. All right, so 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 I and uh and it's totally true That's 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 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 is that you can't really pick fast and good. Can you Like can you actually say hey, we're gonna write this software fast and we're gonna write it good Well, okay, uh to be fair. It's again more from hardware. It's like Look, you can have a fast good thing, but we'll be very expensive, right?
It's your Nvidia 5090 we use the radical size die I mean you made this gigantic honken thing that cost a billion dollars, right So that's usually more that way in software because we're so bad at it Yeah, I agree. It's less 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 gonna be uh under-delivered over-promised expensive and not that good So maybe maybe move it up maybe put it up to D let's move it up to D just because it's software It hard where it would be it would be down at the bottom Yeah, that's because there's actual there's there's real numbers you can play with there
Well, this phrase is actually very very incredibly useful to when you're talking to management sometimes because uh the 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. It's gonna take a minute and it's gonna cut We don't have these four devs on and it's you know, or we're gonna have to Beep up this part of the cloud or whatever it this has been a helpful phrase. I've used Fighting with management to do correctly or get more time. It's been helpful not thought terminating Yeah, but 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 gonna 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 Took or whatever right 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 in software We don't really have that unfortunately, right? But but yeah, so 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 vegan, but I'm kidding vegan is awesome. It's not as my fault This was actually 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 ranking. Okay, cool. So hey take a screenshot of that put it up put it up Put it on Twitter everyone argue with it in Twitter. So we did it All right Thank you very much everybody. I hope everybody enjoys the day. Bye. Bye Bye