Clean Code : Horrible Performance | Full Interview
Ғылым және технология
Recorded live on twitch, GET IN
/ theprimeagen
Casey
Twitter: / cmuratori
Clean Code, Horrible Performance: • "Clean" Code, Horrible...
Author: / @mollyrocket
MY MAIN YT CHANNEL: Has well edited engineering videos
/ theprimeagen
Discord
/ discord
Пікірлер: 409
Prime you should 100% release some longer form interviews with engineers as a podcast. This was amazing!
@LuisFKA
Жыл бұрын
Completely agree
@MrAustin4399
Жыл бұрын
Would 100% subscribe to a prime podcast
@user-fn3yl8yd9n
Жыл бұрын
primecast ftw
@chupacabraj4539
8 ай бұрын
PrimeRogen! Lets go!!!
@rummusLoL
8 ай бұрын
I would watch the shit out of that!
For some reason I expected this to be a prime reacts video, so when Casey actually replied about the camera crispness I was genuinely freaked out for a second lol.
@adam7802
3 ай бұрын
lol me too
Please make "The Prime and Casey Show" podcast a reality. It would be 100% pure awesome.
@empresagabriel
Жыл бұрын
We need more interviews of Prime with Casey!
@bestformspielt
Жыл бұрын
This would be pure gold! Please make it happen!
@surferriness
Жыл бұрын
Always Listen to what Jesus says 🙏🫡
@jesse2667
10 ай бұрын
💯
@ScrotoTBaggins
7 ай бұрын
This would blow all other "coding" podcasts out of the water. They're generally terrible
This is gold. The worse personal project I ever wrote, one that almost made me give up on learning to code, started as a UML diagram.
@jan0195
Жыл бұрын
No waaay hahaha. I literally just finished some diagrams for my next project thinking that I'm being organized and smart. I don't even know yet all the functionalities it will have I just come up with things that came to my head.
@eazypeazy8559
Жыл бұрын
@@jan0195 I think, that point here is not to reject the planning before implementation. Actually, it’s good to plan something, to draw something, to visualize. I myself is a visual kind of person, so when I want to plan (or I’m stuck) I like to draw. The point here is to reject fcking “clean code” (TM) (c) dogma. and do things in really optimal way from the performance and developer points of view.
@antdok9573
Жыл бұрын
@@eazypeazy8559 The point here is to reject overplanning before implementation... Actually, the point is not even that. It's too vague. The point is to iterate in small steps, clean code or not.
@eazypeazy8559
Жыл бұрын
@@antdok9573 yeah and and reject fcking "clean code"
@aakoss
Жыл бұрын
LMAO :D
Such a likeable and engaging guy, his content goes down very easily! glad you invited him and I got to know his channel. And of course your questions and opinions were spot-on as usual :)
@ThePrimeTimeagen
11 ай бұрын
tyty
Casey is a wise dude. His handmade hero series is amazing. I cannot believe it was over 8 years ago!
@someever
Жыл бұрын
the amount of stuff you can learn from handmade hero is insane
@sliver170
Жыл бұрын
Only thing you can't learn from it is how to finish a game.
@alvarohigino
Жыл бұрын
@@sliver170 Hahaha, yeah. So you're forced to make these infinite games like WOW.
@jupiterapollo4985
7 ай бұрын
Series is cool, game is kind of trash though. It's still in it's infancy and I don't see an end to the project in sight.
@fpsoftdev
7 ай бұрын
@@jupiterapollo4985 That completely misses the point of the series. Who cares?
The performance also correlate with power consumption. If you complete the task faster you get more cpu sleep time between tasks and thus longer functioning of devices on battery like smartphones
the best interview I've seen in a very long time. long fan of Casey and Prime. peace.
@ThePrimeTimeagen
Жыл бұрын
Hio!
@FlashGamer521
4 ай бұрын
@@ThePrimeTimeagen This is your best interview. Just incase you thought otherwise.
Wait, dude was on Dungeon Siege? Dungeon Siege was _awesome!_ I wonder if he worked on the level streaming tech, cause that was a literal game changer back in the day.
@MichaelPohoreski
Жыл бұрын
Yes, it helped usher in 3D streaming worlds! (Technically Ultima series did 2D open world streaming in the early 80s) but Dungeon Siege definitely influenced a LOT of people - gamers, designers, and programmers alike.
Your enum vid was my fav. The bit about enum variants actually being structs was super helpful. Thank you
seen a bunch of the clips, stoked to see the whole interview!
Great interview. Casey's perspectives are refreshing like an ice-cold glass of orange juice on a blistering summer's day. I love his takes on OOP and "semantic compression".
This is the best interview I’ve seen on the internet in at least a year. Incredible.
so glad you posted this!
Thanks for sharing this, you guys are both great!
@ThePrimeTimeagen
11 ай бұрын
i really appreciate it
Awesome to watch/listen. You guys give me some extra energy pump for the day and beyond.
How did I miss this? I love this guy and followed his Handmade Hero for a long time. Great chemistry between you guys :)
An additional thought about planning (comment on the discussion around the 45 min mark); usually planning is done in the beginning of a project, when you know the least about it so over planning might hurt you in the long run.
Dude you are amazing, rarely i saw an ex FAANG actually really enthusiastic about programming
@tictactoc9311
Жыл бұрын
@@Sledgeattack I thought he had retired
@Kriszzzful
Жыл бұрын
@@tictactoc9311 nope
@caltissue141
Жыл бұрын
@@tictactoc9311 He made a video about "why he quit" but despite that, he still works there lol
@StephenMoreira
Жыл бұрын
Personally I think there's very few passionate and vocal Software Engineers. I don't agree with everything Primo says, but props to him and others for really putting out their content and their opinions out there.
Fantastic interview to watch, tons of fun! I'm curious which video Casey was talking about where you reacted to his video. I looked for it but couldn't find it.
love you both. Thanks for this amazing interview
One of the best talks I've seen on the channel
What always astounds me is the massive amount of justifications I see in the comment sections for videos like this, yet the radio silence when people like that twitch guy made a better app than the twitch Mobile app than the official in a hackathon. There are a lot of ramblings about premature optimization but I really believe most people don't actually know what optimization is when that quote was invented. The win prime got with that Netflix code wasn't "optimization", it was actually doing the task correctly, and he still had to fight for the right to do even that. Sure, when he hops into the bosses room and says they need vectorized uis for each major Android processor as well as Apples you can tell him he's going overboard, but do you really think a modern interface should have over 1000ms delay for any action? Again, I hear a lot of hiding behind the veil of the internet for the latency not mattering, or something, but rtt to anywhere in the world is generally going to be less than human reaction time, so even that argument to me makes no sense. Ived piped plenty of data over the net that was still in time critical software, I just had to care about both ends being fast
@WizardofWestmarch
Жыл бұрын
The problem is most people think premature optimization is ANY optimization when it should be line level bit twiddling tier madness that can take a day to get 1% when you need that level of improvement. Those are the last resort optimizations not picking the right data structure or algorithm to properly use cache and quickly solve your problem.
@seanpe8474
Жыл бұрын
@@WizardofWestmarch also to add the MVP principle that agile promotes tends to lead to a lacking mentality. agile culture screams for a feature/product to be finished, no matter how bad as long as it works, but when you prioritize completion over practicality you sometimes build something that works but is difficult to fix/optimize. I feel like that's a large part of why people love rust so much; you can build an MVP, but with a good standard.
@swagatochatterjee7104
Жыл бұрын
What's the point in trying to optimize for sub milliseconds when you are bottlenecked by network latencies of couple milliseconds
@sethrenshaw8792
Жыл бұрын
@@swagatochatterjee7104 Because that code still needs to run on a server somewhere, and when that code runs for billions to trillions of user requests per day, suddenly that "wasted effort" on preventing that extra 1-2ms per request add to thousands or millions of dollars in extra energy costs for the business that wrote the software.
@phazechange3345
Жыл бұрын
@@sethrenshaw8792 It's not just that though. When every part of your decision making becomes "but but but but... IO is slow!", those decisions compound. You write thousands of lines of technical debt that cause request latency to jump from 10ms to literally 1000+ms *per request*, and then you also pop off *hundreds* of requests per click. All of a sudden, you have a 25 second per click load time for someone on a wired fiber business class connection that lives 15 minutes away and has a $10,000 PC. And what will that developer say the entire time you call them on this absurdity? "There's nothing we can do. IO is slow bro. That's PREMATURE OPTIMIZATION!"
Hell yeah I've been waiting for this
47 is just the beginning.
@caltissue141
Жыл бұрын
At first I thought you meant the video runtime
@olafbaeyens8955
Жыл бұрын
@@caltissue141 No his age :-)
@ubuntubad
Жыл бұрын
@@caltissue141 same
@KK-wv7vz
Жыл бұрын
Of the end?
@olafbaeyens8955
Жыл бұрын
@@ubuntubad The best times of your live
What a good interview. Yall are great. Love you guys.
I love this! I'm realy into optimizing code, even miniscule micro optimizations. However, at work it's: "You've got one hour to make this work, Go!"
Thank you for releasing, sir.
I noticed this abhorrent inefficiency of other apps very clearly when I bought an Android game called Slice & Dice. The app seems insanely optimized and doesn't use any battery at all, which is not very usual for mobile apps. Most mobile apps usually just turn your phone into a pocket heater.
@Snorehog
11 ай бұрын
Funny because on M1 Mac macOS it ran terribly last time I played 😂
@Snorehog
7 ай бұрын
Sure! I have a pc too for games. Still this game isn't a 3D game etc so it should run perfectly fine on newer Mac. But the developer probably used a framework that didn't prioritize working well for Mac. Multiple operating systems is complicated, and yes Apple haven't prioritised making it easy to make games for Mac. Still, would love to play this game on iOS and Mac hehe@@ninsix
absolutely, just got into this channel/streamer and the stuff where he actually goes into the detail is surprisingly insightful for a junior
Casey knows what he’s talking about. I want more of this! You guys should consider doing a weekly podcast together or something…
This was amazing!
Thank you for posting this
Around minute 40:00 just casually paraphrasing Continuous Delivery: deliver workable code fast let you get feedback fast so you can refactor and improve it as needed. Speed gives you quality, and coding with quality in mind makes you fast.
loved this interview
41:00 "the first version has to be perfect" or "my first version works, so why should i change it" is one of the biggest traps in anything you can do, but mostly known in Author circles. in reality the first version you make is NEVER good, let alone perfect. you can always edit/refine it and get way better results by doing so. there is a reason why big successful author take at least 2/3rd of the needed time to rewrite and edit their story. if not more. it is sadly one of the most unrealistic habits we get teached in school and one that gives young people the most trouble. everything you do/write has to be as perfect as possible in the first try/version because you don't get the chance or time to change what you did.
This is my 3rd Casey & Prime video of the day. So. Good. Everything they are saying makes so much sense.
Invite him more often!
I likes the rust vs typescript enums video! I appreciate you having made that anyway
This was an awesome interview
Casey in high school really reminds me of myself to the point when I had literal flashbacks of those times :)
This vid explained a lot of Prime’s ideology for me lol, now I have a better understanding of why when I like or don’t like something. Really good one vid!! Also, love the guess too. I feel smarter just listening in lol
great video love how hard you guys are vibing
@friend0
Жыл бұрын
you shouldve asked him why he was using notepad in his video tho just cause i bet hed have an interesting answer
@Rakkoonn
Жыл бұрын
@@friend0 Probably just for the video, he doesn't actually use it. He used Emacs for a long time, but switched to another editor someone from his community made at some point.
@someever
Жыл бұрын
@@Rakkoonn yup he uses 4coder
Great interview!
Awesome!
That was awesome. Casey is the man.
Great Interview! I hope more comments help on getting more content
I watched Casey's video on quaternion double-cover yesterday where he explained how it could be useful in animations. There was a little bit of a hook to it, which is "here is what the industry doesn't do, which would be much better!", but apart from that I thought it was a pretty calm and informative video. My point is that, some people do watch the more technical stuff, and it is up to the content creator to know their target audience, and it just happens that the highly technical audience, who has enough spare time to watch videos, is not that big, but they do watch it.
@chainingsolid
Жыл бұрын
got a video title? I'm not seeing it..
@chralexNET
Жыл бұрын
@@chainingsolid "Quaternion Double-cover and the Rest Pose Neighborhood - 2006" channel: "Casey Muratori"
Oh hell yeah! I will always be grateful to Casey for teaching me how to program games
Such a great discussion.
More conversations with Casey pleaseeee!
I also think when I implement something how to do it the best way possible. The thing is that after implementing it drawing on my entire experience so far as a programmer, I usually cannot see a way to do it any better and leave it at that.
i love this
Great interview. And the point of performant applications is so soothing to hear. I hate using online services just cause of the loading times. That's why I use Client mail apps not google, Obsidian not Notion, even VSCode live share not some web collaborative ides.
@aoeu256
Жыл бұрын
The problem with slow websites isn’t just JavaScript code, it’s the slowness the network.
Holy shit my friends and I spent around 18 straight hours playing Dungeon Siege in a basement in high school. Love that game.
Dungeon Siege is still one of my favourite games to go back to every once in a while, and hearing RAD game tools brings up memories 😂
Bruh really I never thought this collab would be possible!!
love the title
I literally avoid Google drive (the web page) because it is so slow. In fact, it's so terrible, and all of my music is there, that I don't listen to music much anymore. It has actually changed the way I live my life, and I kinda have just given up on these things being better, so I don't even believe in a competitor very much.
This is what I need.
Actual interview starts around 6:30 for the impatient, like me.
solve & test first, abstract last. measure & optimize then, repeat until enough. ship it, done.
I'll say that one of the worst things about polymorphism for me (especially in OOP code with DI) is that it can become quite ridiculous to even keep track of what the hell anything is/does. Like sure you SAY x thing does this... but really it calls y thing over here which calls z and their all interfaces so I need to find out which interface actually has the bug/problem. And yeah... it gets really out of hand.
@_jagger1407
7 ай бұрын
exactly, I don't see how "clean code" with abstractions, polymorphism and everything hidden behind access modifiers, somehow contributes to "readability". If anything, it's a detriment to readability AND performance. Maybe maintainability? But keeping all the abstractions and having all these arbitrary rules just sounds less maintainable too, idk
@scotthinton4610
6 ай бұрын
I recently did this to myself. I thought "oh wow, this C++14 DI framework in a single header is really cool, and I don't have to worry about my constructors anymore". I've probably spent as much time trying to figure out WTF the DI lib is doing (including inferring behavior, yikes) and why things aren't working. I regret reading Clean Code.
Banger
This really good!!! Primecast when?
You're exactly right about the YT clickbait. It works, and if you don't do it, you don't get views.
DUNGEON SIEGE?!?! LETS GOOOO!! DUN DUN DUDUDU DUN DUN
This is crazy, I thought this was a react video then Casey started responding
I was a bit spicy about Casey's videos, but like 2 minutes in, and I'm all ears, seeing how chill he really is. I just remember the Windows terminal rant :) I completely understand what he talks about, sometimes you need to be extreme about your claims to be heard. What a great opportunity to hear you guys. (I have nothing against his arguments tho, just didn't like the ones he chose to debunk, and the overall approach: obviously "clean code" doesn't make a lot of sense when you're the only person who builds geometrical shapes library whatever, but some practices are useful in teams and larger codebases. It's a good example but just not like "we've picked their claims as the best example of clean code")
@Ryan-hl1bt
11 ай бұрын
people like casey and jon blow are often seen as abrasive because they aren't afraid to point out problems, and they step on a lot of toes in the process.
2:30 I didn't realize this isn't a reaction until now.
gonna buy 10 of the same pants and T-shirts now, thanks for enabling me
Best channel ever no cap!!
Glad I randomly found you on Twitch 😅
You are so smart, pls continue with your smart stories when you save millions and millions.
I loved this😂
I liked the typescript vs rust enums😢... Please don't stop doing videos like that
I feel like an extra nerd for knowing the cited video before finding this interview, i'm wasting my life
31:32 Once I compiled CPython and embedded it in my program, extended it and had to debug a function that involved stepping through the Python VM. I had to walk in and out of so many C functions for the most trivial of things and I realized there's no way everything isn't drastically bloated. Also, 27:41 I'm new here, when he says "whole meth scene"... ?
@Anon.G
Жыл бұрын
Addiction to meth
i love this tooo
ty
OMG Casey!! Love the guy.
What I find interesting about the content argument, and using something like Netflix as an example. I decided (number of years ago now), I would only pay for so many services. And the ones I would pay for, would be the ones with the best UX. As I knew I was gonna be going to the seas anyway, for stuff not provided by the services I was paying for.
I wasted about 8 of my best years on EverQuest 2, thank you Casey.
Haha auto-play transitioned me to this interview from a Cypress Hill live show, and the tab was playing on the background. I thought this was a post-concert interview! "And I'm just like guys, I talk calmly all the time, and no one cares." And I'm like "yeah yeah makes sense, and I like the band's aggressive style anyway".
I seldom watch anything over 30 minutes. If it's longer than that, I only listen to it with my headphones while doing something else (cooking, laundry, cleaning, gardening). Tutorials are the kind of material that needs to be watched and thankfully they are usually chopped in shorter videos and combined to a playlist. For me, this channel is mostly for listening. It's a mix of entertainment, technical advice and career/life coaching.
41:00 yes yes yes yes yes. I have been forced into big-design-up-front too many times and I've been burned every time. I've learned to just write the code I think I want while "designing" but not saying anything about the code.
18:50 when my GPU blew and I was left with just Intel iGPU, The Witness was the only rather modern playable game in my library xD
I always think about a design before implementing, to make sure it can be extended. Otherwise you're just writing bad code. But I agree that if you spend time writing a bunch of big frameworks before writing actual code, that is going too far.
That first minute and a half hit home what I dislike about online. People don't consider a calm thing worth listening to, without a hot take.
The Video about clean code does make sense but its not only black and white. Clean code was not meant to make performance gains but to trade some performance for better readability/maintainability. It all depends on the goals of your software and if you can afford those performance losses. I would say that most companies are fine with less performance if you can easily add more features to it and fix/find bugs more easy.
@Anon.G
Жыл бұрын
Your claims are unsubstantiated and flat out wrong
@mentis4046
Жыл бұрын
@@Anon.G just Google why you should use clean Code. Usually you find "reader focused". Clean Code is for humans not machines. Machines dont care how complex your code is, your coworkers do.
@Ehal256
10 ай бұрын
@@mentis4046users care when your application takes 20 seconds to start up when it should be instant
@MrGman166
5 ай бұрын
@@mentis4046 The statement "Machines don't care how complex your code is" is even objectively wrong especially when talking about a program that is going to access things like virtual function repeatedly during runtime and the compiler cannot optimize the operation and has to perform searches for the method and its signature in a large DDD "Clean Code" codebase. This does not even account the amount abstractions that are used represented as classes or phantom interfaces been used that will drag down the compile time of the program for a large application that make the testing process even more sluggish. You need to retouch basics of what the compiler is doing to the code as well as even just do a simple debug for virtual functions or dynamic dispatching that even disprove that statement. Also stop trying to google for "why you should use a clean code". If you are a programmer or software dev/engineer, it's your job to apply, measure and test the paradigm or approach against use cases and arrive at the architectural decisions based on the performance measurements and parameters of your testing. The fact that you had to do that google search means you don't even know why you are using that methodology and you are justifying software practices on the basis that someone else reasoning satisfies it without any kind of testing or measurements you have done on your end.
@TheExtremeCube
5 ай бұрын
Caseys objection to that is that it's not founded on any facts. Did you actually measure if your clean code solution has improved the onboarding of new people, or reduced development time? Its just taken as a given that clean code is better for that without any proof.
Can't believe you didn't ask Casey M about ZINC OXIDE!
Can someone explain to me the part of the video where Prime relates performance to JS map calls?
"Dungeon Siege wasn't particularly huge"... Bro that game was the hugest thing to me as a kid. Thank you for working on that game.
I second the Amazon Video complaint 😅
I'm only getting my groceries at stores that run at least 60 fps from now on
I had a project that was canned... it's was doomed at the start... The architect "well hind sight is a great thing, no one was jumping up and down at the start". I was like "no I wasn't shouting, butI said several times calmly, also I didn't need to shout about it because was doing that that; and they fired him"... If people don't wannt listen, you say it calm, you can say loud, it don't matter... but be sure at the end you'll always get a wight board jocky that wasn't listening... "well you know hind sight and all"..
The word "pessimize" is used elsewhere! Clang has a warning -Wpessimizing-move for when someone uses std::move in a way that prevents copy elision.
I think the distinction between advocating premature optimization and just being aware of performance-killing habits is important. Because, frankly, highly optimized code can also be incredibly inflexible. That's another difference between the webdev space and video games - web applications tend to grow over time but most video games don't double or triple their code over their lifetime.
@MH_VOID
Жыл бұрын
I'd think it's more the video games are largely swapping out code rather than just adding new code, in addition to many changes just not really being code (i.e., stat adjustments all the time for buffs/nerfs each patch, skins and voice packs and other assets being added forever all the time, but not really entailing any code in most cases)
@CottidaeSEA
Жыл бұрын
@@MH_VOID A lot of those things are largely pure data. Unless there needs to be very specific interactions, a skin/model can be packed with all animations and run in the renderer just fine. The issue comes when the game adds something like an item which has unique effects. I'll take League of Legends as they have a recent example. There is a biscuit item which is supposed to give mana permanently when used or sold. The issue is that if they were sold and you undid it, the mana either increased or decreased permanently and was infinitely recreatable. That is because the item is the only one which has an effect on removal.
@GonziHere
Жыл бұрын
Tripling your source code is almost never warrantied. The issue is that the abstractions actually make it hard to keep the solution DRY (think of all of the boiler plate code). On the other hand, you could simply write a solution to your current, actual, contained problem and when you'll add a new functionality later on, you'll also refactor the first one for some code reuse.... Like code on the project absolutely should grow logarithmically, not linearly.
@CottidaeSEA
Жыл бұрын
@@GonziHere DRY can sometimes lead to obscure abstractions and difficult to maintain code. Sometines it's just better to repeat yourself if you aren't doing exactly the same thing.
yeah my recent discovery was that im cpu limited in battlefield 2042 on my system
I didn't click the enum vid bc i'm not a typescript or javascript dev. Will check it out later tho