Coding Blocks - Clean Architecture – Fight for Architecture

Episode Date: October 2, 2017

Joe learns of our harebrained idea, Michael learns of Eisenhower’s matrix, and Allen explains polyfills as we begin our dive into Uncle Bob’s latest book, Clean Architecture. Prefer to read these... show notes on something other than your podcast player? You can find the full show notes for this episode at http://www.codingblocks.net/episode68. Sponsors Linode – Use code […]

Transcript
Discussion (0)
Starting point is 00:00:01 You're listening to Coding Blocks, episode 68. Subscribe to us and leave us a review on iTunes, Stitcher, and more using your favorite podcast app. Check us out at CodingBlocks.net where you can find show notes, examples, discussion, and more. Send your feedback, questions, and rants to comments at CodingBlocks.net. Follow us on Twitter at CodingBlocks, Facebook also, slash CodingBlocks, and head to www.CodingBlocks.net and find all our social links there at the top of the page.
Starting point is 00:00:26 And with that, I'm Alan Underwood. I'm Joe Zak. And I'm Michael Outlaw. This episode is sponsored by Linode. Have your own server up and running in under a minute. They have hourly billing that you can cap on all plans and add-on services, including backups, node balancers, and long view. VMs for full control running docker
Starting point is 00:00:45 containers, encrypted disk, VPNs, or whatever you like. They have their own CLI so you can manage all your Leno needs directly from your terminal. You can even run your own private git server. They are backed by native SSD storage, a 200 gigabit network in all their data centers, up from 40, and Intel E5 processors. They have 24-7 friendly support, even on holidays, and they come with a 7-day money-back guarantee. For your $20 promotional credit, head to www.codingblocks.net slash linode, that's L-I-N-O-D-E, and enter the code CO blocks 17. Again, that'll give you a $20 credit,
Starting point is 00:01:27 which is the equivalent of four free months on their smallest Linode instance. So it didn't you, you called dibs today. I did. Yes. So let's get into the iTunes reviews. The real Brian Choi, a talus pizza,
Starting point is 00:01:44 HD 88 scuba, Steve36, JD Murth, James Strugnell, Al Franken, Mikey Don, aka ProgrammingPD, aka TheManWithTheGram, aka TheGhostOf404thSth street, aka Captain Hunt, aka, oh, Captain Hunt and Peck, sorry, aka General Error, aka the Wizard of WWW, aka Senior Segfault, aka New New Mew, aka PH Pimp, aka whose computer is this,
Starting point is 00:02:19 aka the Thread Safety Inspector, and finally, aka the author of Copy and pasting from stack overflow. That's amazing. He's got a long name. He does. That's excellent. Uh, so I guess I got the Stitcher reviews. So a little precursor to this, for whatever reason, we have two Stitcher pages. We've never been able to cancel one of them and just by happenstance the other day i noticed that we're getting reviews on one of them that we didn't even really know was out there so this is sort of an apology and a shout out to you guys for
Starting point is 00:02:57 leaving us a review there so this is from the other stitcher page so the cause s vod and tv stevens thank you very much. All very nice reviews that you guys wrote. I can explain that. That's the Stitcher page from the Upside Down. From the Upside Down. Oh, come on. Do we have to play Yes, Yes, No with the Upside Down?
Starting point is 00:03:19 You probably will. Hey, wait. Do you know what it is, Joe? I mean, I'm familiar with terms like that from comics and video games. Is it like Stranger Things or It maybe? See, okay, he got it on his very first guess. Wait, was it The Stranger Things? Was that part of that movie or show? Yeah.
Starting point is 00:03:37 I don't remember it. All right, sorry. I watched the whole show. I liked it. It's the other side of the board. Yeah, sorry. Oh, that was a tangent that went nowhere. Yeah, it really did.
Starting point is 00:03:47 All right. And then from the real Stitcher, the one that we always know about, 85... UStorm? Maybe I typed that wrong. Maybe not. Miklik, Fraben, and Jerry4592. So thank you. Oh, wait, wait, wait.
Starting point is 00:04:03 We got more. Joe. Yeah, I wanted to mention we just found out a service called pod chaser it's kind of like imdb for podcasts and you can subscribe and stuff there too and i was checking it out and i noticed that we already had two reviews there and so i just wanted to say huge thanks um particularly to these three people because i i know they both left reviews on other places as well so just wanted to say it was a really nice surprise to us and really appreciate it uh to uh go prog man and surprise to us and really appreciate it to Goprogman and Dance2Die. So thank you guys very much.
Starting point is 00:04:29 Yep, thank you all for leaving the reviews, even the one that hurt a little bit. But yeah, thank you all. All right. And then so one of the things I did want to mention because I feel like after I read Vassiliev's comment on episode 66, I sort of realized that we did come off whining a little bit about time estimates. And so, because we literally just bemoaned them for probably 10 minutes and then we're like,
Starting point is 00:04:59 all right, moving on. So a shout out to him for calling us out on that because we strive not to be those guys that complain and never bring a solution or something to add to the topic. And we didn't. So we'll admit it and we'll have to revisit that and try and look into some stuff to maybe make that more realistic. So anybody that wants to go check out his comment to where he basically scolded us, rightfully so, we got a link to episode 66 there. He's got a couple of good comments in there. And I see him talking with Brad, too. Brad Trager, we've mentioned before, also has left some really great comments. Oh, there's a lot of really great comments I haven't read here.
Starting point is 00:05:40 Awesome. He's just as surprised. Easy for me to say. Yeah just is surprised. It is. Easy for me to say. Yeah. All right. So I do want to bring up something here, and this is awesome for anybody that wants to look at cloud services. They haven't had a chance to get in there.
Starting point is 00:05:59 Microsoft is coming to Atlanta. They're doing what's called the Red Shirt Tour. It's on Wednesday, October 18th. So it is during a workday, but if you guys can swing it, anybody that's going to be in the Atlanta area, this is a free thing to attend. And Scott Guthrie is doing all the talking. There's going to be a ton of good topics here. So we're going to have a link here, but here's some of the things that he'll be covering. And he's going to be doing live demos of a lot of this stuff. So the latest in infrastructure, VM scale sets,
Starting point is 00:06:28 managed disks, the hybrid cloud, which is really cool stuff. If you haven't heard about that, Azure stack enterprise, mobility, security, Xamarin,
Starting point is 00:06:36 mobile development, SQL, AI, machine learning, and more. So again, we'll have a link here, which ironically is going to a cold fusion page.
Starting point is 00:06:47 Yeah. And you mentioned specifically the Atlanta one. And if you can't make it to the Atlanta area, you might want to just Google to see if there's an event coming to your area because, uh, I quickly checked and there is a Dallas, Texas event coming up October 17th. That's the same tour. Oh, awesome. Excellent. Yeah. I mean, this is going to be killer stuff. And for those who don't know, Scott Guthrie, I believe is the VP of cloud engineering at Microsoft. So like this guy knows this topic, right? So definitely,
Starting point is 00:07:18 if you can check it out, it's free, you know, take advantage of it, man. Like there's not too many opportunities to get stuff like this for free. Uh, another thing that we want to touch on quickly is outlaw myself attended connect tech. I thought it was pretty awesome. Do you, what was your takeaway? I'm always excited to go to that event. Yeah. Um, there's good stuff there. I think this year there was definitely react was still like the most popular JavaScript framework there. It had two separate tracks of talks going on throughout each of the days of it.
Starting point is 00:07:54 But I did see more representation from Vue this year than from previous years. So that was interesting. And a lot less Angular. Way less Angular. Yeah. So that was interesting. Um, and, uh, a lot less angular, way less angular. Yeah. Agreed. Yeah. It was surprising to me. So react was huge view view was coming on strong at this. And then there were the separate tracks for iOS and Android, right? Like that's still going really strong. Well, well, I was actually going to bring that up too, because I did notice that Swift, it seemed like those talks got moved to the smaller rooms now from where they used to be from previous years.
Starting point is 00:08:33 So, yeah, I was kind of like curious, like, huh, what does this say about the popularity? But yet, I don't know if he attended any of those talks. They were still, you know still well attended and everything. So it was curious though. Very cool stuff. So that was fun. And then this is a random side topic. Oh, wait, Joe, did you have something?
Starting point is 00:08:55 I saw you move your hand. Nope. No. Okay. Not everything we talked about was random side topics. Yeah, pretty much. We're trying to blow through this as quickly as possible. This I wanted to bring up because this comes up a lot in the gear channel and
Starting point is 00:09:08 even amongst friends and coworkers or whatever is networking, right? It used to be that you would go LinkedIn and meetups and maybe not that. Oh, maybe not that, you know, Slack channels and that kind of stuff, which you can hit at coding blocks.net slash Slack.
Starting point is 00:09:23 You can come join some of these cool conversations, but you remember it wasn't even so long ago in the past that somebody would ask, Hey, you know, what's the best router to get, right? I have this house and I need to reach all the points of my house. What's the best router to get. And that's changing a little bit. Like if you walk into best buy now, like there's, they have like an area at the front of the store with a bunch of different mesh networking technologies now. And some of the big ones out there right now, I'll just name them off quickly and we'll have links to them so that if you've not seen these things, you can just take a peek. There's the Google Wi-Fi, which is by and far pretty much the most affordable one out there. There's the Netgear Orbi, there's the Linksys Velop,
Starting point is 00:10:07 and then the Ubiquiti Amplifier, some of the more popular ones. But I installed one at my house. I know you have. Go ahead. Which one's the, oh, because there's the Eero as well. Eero, yeah. I haven't put that one on here. Oh, okay. We'll add that one as well. I thought that was the Linksys one. No, Linksys is the Velop. So here's one thing interesting to know about these things, and I'll go over this quickly, and you guys can jump in on anything. So the Netgear Orbi works more like a wheel and spokes. So you have a central, and then everything has to attach to that central one.
Starting point is 00:10:43 So it's not a true mesh network. It's more like a central repo and then other things can hit it and expand the network out from there. But you're stuck to one link away from that center hub. The Linksys Velop on the other hand is a true, you know, hook up your internet wherever you want and it'll pass it along. So you can literally chain them together and it'll push it across the network. So I thought that was interesting. I've, you know, I'm having mixed love hate with the Netgear Orbi and maybe I'll go into that later. I don't want to jump into it right now. Maybe I'll even do a review on YouTube. How about that? That's probably the best thing to do. Uh, so yeah, I know there was a lot of a lot of a lot of love in the slack channel for the uh ubiquity
Starting point is 00:11:27 amplify um the one caveat though is that if you that i ran into is that if you wanted to be able to plug those extenders into if they wanted the extenders to be wired into the network then they weren't that specific unit wasn't set up for that it's all wi-fi yeah like some of them um like i believe the orbi has um plugs on the on the extenders uh the google wi-fi you can plug you can wire those extenders into the network as well that way your extenders have like the best possible signal strength um you know that know, that they could give outright. So it depends on like what your, your situation is. Okay. Yep. So all cool stuff. I think, I think I'll do a video review. I don't know. Maybe, maybe cause you've got the Google one.
Starting point is 00:12:16 You're pretty happy with that. Yeah. I mean, it's stupid, simple to set up. It's I'll, I like that. I can manage it from anywhere, right? You know, it's tied to your Google account. It's super easy to share that configuration with with like your spouse or someone, you know, because you can just assign Google accounts that can manage it. And so, you know, if you're already if you already use Google services and you already trust Google, uh, they already know everything about you anyways. Why can't they manage your wifi? Yeah. And they do a pretty good job with it.
Starting point is 00:12:52 So. Yeah. Very cool. All right. So that was a cursory jump into that. Just want it like, you know, anybody that's out there searching for things, you know, be aware of them before you go buy a new router, because you might find something that will fill up your space better with the digital waves.
Starting point is 00:13:07 All right. So I'm not really sure what we want to talk about tonight or what this episode should be. Are you kidding me, man? Are you kidding me? Oh, clean architecture is out.
Starting point is 00:13:20 Yeah. We're one of the lucky few that actually got copies of it. Finally came out. You know, what's crazy is like, we said that we ordered this and that actually got copies of it finally came out you know what's crazy is like we said that we ordered this and we all got it like within two days a lot of people on our slack channel were like yeah mine's showing that it's not getting here till the middle of october yeah if you live in germany or even uh i think uh in europe it sounds like it might be even sold out so you go crazy yeah you guys will have to have bad architecture until then that's that's the key well it'd be kind of nice maybe if we sent somebody one i think we might
Starting point is 00:13:51 be able to arrange that yes i don't know i think we've done crazier things in the past so i don't see why we wouldn't do it this time yeah we talked about doing it before the show but we never uh we never settled on uh yes or maybe i was in the bathroom anyway um now that we've mentioned it i guess we got to do it so if you'd like to win a copy of clean architecture if you leave a comment on this blog post uh so that'll be codingbox.net slash episode 68 leave a comment and uh after i don't know a couple weeks or maybe some amount of time we will look in in there and pick a winner and send you a book. So full of definitive information.
Starting point is 00:14:30 So you'll either get your book from us first or from Amazon. Yes. We're not sure which one we'll get to you first. Yep. All right, cool. So let's go ahead and jump into it. What do we got here? All right.
Starting point is 00:14:44 Well, first, I just want to tell you a little bit about the book um we were going to actually talk about and continue on our series on uh object oriented anti-patterns but we got a lot of comments we got a lot of uh people talking in slack about the book and uh twitter and some people just kind of expected us to do it and it looked like a great book and it um kind of tied back into some of the ddd stuff we were talking about kind of higher level and so we just couldn't resist so we kind of rushed order to get the book and like mine just showed up actually just uh i don't know like five hours ago something like that so i had to speed read through the first couple chapters there um but so far i've been really liking it and um it
Starting point is 00:15:19 is part of the robert c martin series which means it is officially tied to CleanCode, CleanCoder, and the software Craftspin, which I'd never heard of that one. And we can all agree we like these, right? Like these are excellent, excellent books that we've all looked at. I've only read this would be my second one, so
Starting point is 00:15:39 I haven't actually read CleanCoder. Cool. Maybe that'll be on the docket here in the near future. Yep. We'll see. And I did notice on the back of the book it's built for architects analysts designers and managers but so far what i've been reading through it doesn't seem like there's a real like firm kind of role uh enforced at least the first couple chapters where they're you know they're saying like this is what developers do this is where architects do like so far as best i can tell it's just really about like good design maybe we'll jump into some more of that but so far like i don't see why a programmer
Starting point is 00:16:11 any programmer would not want to read this agreed you know one thing i'll say about this compared and contrasted to the ddd book, this is enjoyable to read. Not being mean, it's not so overly wordy and so buzzwordy that it turns you off, right? Or you feel like you need to have a dictionary sitting next to you so you can look up what every single word means. It's told in a way that is, this is what you experienced, this is what you've seen. It feels like a story as much as useful information you know yeah i think ddd was uh it was just really thick and there was a lot of stuff to kind of wrap your head around and i still kind of want to go back and reread it and
Starting point is 00:16:54 make sure i get it and it was just um a different kind of book but i mean clean code like i still think about it i still reference it it very much resonated with me i think about it all the time i think that's why there's been so much hype about this book is that i think people are kind of hungry about architecture i think that the problem that most developers face isn't necessarily you know how many spaces lines and you know tabs for spaces or semicolons or not but uh it to me at least i think it's more about like how do i keep adding features without digging myself into a hole? And I think this book aims to address that. And it's written by someone who's very highly respected and has written fantastic books. And so I think everyone's really excited about it, including me.
Starting point is 00:17:35 Maybe it's just because this conversation in the Clean Code series is more abstract. And therefore, you can talk about it in more general terms versus DDD is getting ultra specific and granular. And so in order to stay with the continuum of the chapters, you have to like keep building upon the things that were very specific. Yeah. Maybe just speculation. I think it's a writing style though
Starting point is 00:18:05 for me anyways yeah trying to be nice to the author here yeah i mean he wrote some stuff that people use and you know we're probably going to dive back into it at some point we've just taken a little hiatus he invented a thing that is like well known and received so right it's a big thing all right cool yeah he's been programming since 1970 things were um different and things were kind of the same too and that's one of the things he kind of talks about with architecture and programming it says um that at least with architecture it's completely independent of every other variable meaning that like software architecture in 1970 isn't so much different from 2017 and so programming isn't so much different from 2017. And so, programming isn't really that different either.
Starting point is 00:18:45 Like the tools have certainly changed a lot, the methodologies, the way people do stuff. But at the same time, you know, like if statement or loop, you know, in COBOL doesn't look that different from whatever language you're looking at today. And so, I think that's part of the kind of speaking to those principles that we just kind of alluded to. Yeah, there was a comment, there was a quote in this book where it went back to something that I think Joe had mentioned several episodes back, and I don't remember the episode or what the conversation was at that time, but do you remember talking about coding turtles? Yeah, turtles all the way down. Yeah, turtles all the way down. And I don't remember what that was in reference to, but there was a quote in this book where he mentioned that, you know, he was talking about how it's in the forward where he's talking about like, you know, we often refer to the canonical reference of software architectures to compare it to building something physical, right? But the difference in building a house is that if you build a house, I mean,
Starting point is 00:19:45 you have some wood, you have some concrete, you have some metal for things like nails and screws and wires, and it's all a bunch of different stuff. But software is built on top of software that's built on top of software. It's turtles all the way down. And that's awesome. But houses don't change typically either, right? Or software does. And that's where the analogy always breaks down, right? Well, no, he actually did cover that too. Because you could add on to your house. You can add on.
Starting point is 00:20:16 You could change and tear down things. I mean, that kind of stuff does happen. Yeah. Not quite as frequently, but yeah. Yeah, more than I like and less often than my city of other likes. So one of the things he said in here that I thought was really cool and interesting and so true because I've heard it happen so many times is writing the initial piece of software isn't hard, right? Like he even said, there, there are companies built on just making something work, right? You cram it together, you slap it together as fast as you can by sheer willpower, you make something, and it might be worth millions of dollars.
Starting point is 00:20:54 I loved that term, by the way, because I'm like, oh, that's how I do all my code. I will make this happen. I will figure this out. Yeah. And that's not really all that hard. And that makes sense. I mean, honestly, sure, there were probably a few bumps along the way, but for the most part, getting that first thing up and running isn't the worst thing in the world. But then he goes on to say that making it
Starting point is 00:21:15 maintainable and extensible and something that you can manage over time is hard. And that's what this is all about. Yeah. I love the first part of the book is really kind of setting up why this stuff matters like why does good architecture measure matter like what do i take to my boss when i say i need to refactor something like what am i explaining to him like the the benefits and detriments of not doing it are and um it gives a nice succinct definition in that kind of introduction here and says that, um, that good architecture means that effort is minimized and functionality and flexibility are maximized. So I can make changes easily and the benefits of those changes and the
Starting point is 00:21:57 benefits of being able to make those changes are, are, uh, maximized. Yeah. And, and the, the angle of this,
Starting point is 00:22:04 he was also saying was reduce the number of people you need to actually write these things right that's that's yeah so important go ahead yeah it's kind of funny like the whole idea of being a programmer writing yourself out of job as being the the goal i think we've joked around about the format like it really does make a lot of sense like you know the the and we've talked about this with, I don't remember what we talked about, but basically adding more people to projects, making things more complicated, more communication. Nine people can't have a baby in one month. I think that makes sense. If you can keep the number of people down,
Starting point is 00:22:40 if you can keep the lines of code down, if you can keep things simple, then win, win, win. Another thing. I don't want to get fired. Right. Well, I mean, the thing is, the reality of it is, if you write good software and you can iterate it on it quicker because you made it more maintainable and all that kind of stuff, sure, there's not going to need to be as many people maintaining that thing. But that means you get to work on newer, cooler stuff, right? We've talked about the greenfield versus the brownfield. And a lot of the times, the reason you're stuck in brownfield is because you're maintaining a pile of mess, right?
Starting point is 00:23:22 If you make that thing to where it is maintainable and you don't have to spend tons and tons of time bug fixing and all that. You move on to bigger and better things that can make the company more money, that could be more revolutionary, could be whatever. So I thought that was interesting. Another thing here, though, that he brings out in this book and I love is he's like, this all sounds utopian, right? This all sounds like this place, this golden place that doesn't really exist. And he's like i've been there right doing it right exists and when you do it right then it feels weird because you're
Starting point is 00:23:54 not fighting all these battles all the time and so that's what this entire book is about is how do you get to that right spot right yeah i think the sad reality is of a lot of green brownfield projects is that a lot of times we made it that way you know like how do how do brownfields get brown like we we poop them up the developers right that's not management that's not anyone else like we literally changed the code we made the mess we made the bed and we're lying in it but we're gonna get to that let's, though. Brownfield doesn't necessarily mean that it's crap. I mean, the brown isn't necessarily referring to it being crap, right? Not true.
Starting point is 00:24:30 It's just that it's older code. That's a good point. It's usually a negative connotation that comes along with the brownfield, right? Yeah. That you're talking about. But I mean, you could have something that was like written in great patterns of whatever the technology was at the time that, you know, you don't hardly have to touch because it just works and it's functional and yeah and if you do have to change it you know every now and then you know easier to do but but you're probably not going to
Starting point is 00:24:52 complain about brownfield at that point because you're not going to be spending that much time in it right so i think it's the negative connotation that typically comes with it not necessarily you know i think it's also too like we developers see that the new shiny and we so badly want to play with the new shiny i don't know what you're talking about well no i mean not you not you specifically never yeah yeah no this is awkward but no you're right yeah brownfield does not specifically refer to uhritus. I did not know this. This is something I learned today, TIL. Hey, wait, yes, yes, no.
Starting point is 00:25:32 I know what TIL means. TIL? Oh, today I learned? TIL, yeah. You always accuse me of not having known that. I didn't hear what it was and then, yeah, okay, sorry. Yes, I've seen some of the interwebs. All right. Excuse me. I didn't hear what it was. And then, yeah, okay, sorry. Yes. I've seen some of the interwebs.
Starting point is 00:25:47 All right. So the next part here, this is actually jumping into chapter one here. What is design and architecture? You want to kick us off, Drew? Yeah. So what is the difference between design and architecture? Do we need to guess? Is this a game?
Starting point is 00:26:06 You can guess outlaw. Oh man. Why did I put myself on the spot? Um, design would be graphical and I got to make things pretty. And I care about, uh, the color palette and the placement and the flow of things in architecture. I'm going to say is,
Starting point is 00:26:26 um, and the placement and the flow of things in architecture i'm going to say is um i care about the model and uh data structures and am i anywhere close joe or am i drowning i think in this contest specifically uh we're pretty far off but i think it's just because he didn't erase those lines and i know that you knew that and you knew that you knew that um but uh yes i read that usually when i refer to design uh that's exactly what i'm talking about but in this case we're talking about software design software architecture and uh what what he said was uh and i thought was interesting saying there is no difference if you are a software designer you're designing a system then you are architecting that system those Those words can be used interchangeably. And so I thought that was kind of a cool way to kind of erase some of those lines
Starting point is 00:27:07 because I think a lot of times when people think about software designer, they do think about the art. They think about like the soft, fuzzy kind of, you know, adjusting pixels and CSS kind of stuff. And when people say architecture, they kind of think of like the guy locked in the corner office who, you know, comes out and says, it's not my fault and then goes to lunch.
Starting point is 00:27:32 Wait, that's the architect yeah man wow she's like it's not my fault you can't follow my immaculate designs uh i gotta go to lunch i wrote a 17 page wiki on it you know it's funny though i love this because it always bothered me because i was like if you say that you're designing something it's the same thing it always kind of bugged me that I was like, if you say that you're designing something, it's the same thing. And it always kind of bugged me that there was like this line there. And I like it that he called it out and said, no man, if you're designing a system, it's the same thing as architecting it,
Starting point is 00:27:52 right? Like you are, you were figuring out how those pieces go together in a way that's not going to destroy you down the line. I like that a lot. Yep. And so to put it another way, measure of design uh quality then is the measure of the effort required to meet the needs of the customer so i'm sure we've all given this
Starting point is 00:28:12 analogy to someone where you say like sometimes you want a checkbox and it's a checkbox it takes me five minutes sometimes you want a checkbox and it's like the end of the world right i gotta change so much stuff and so um what we're saying kind of a little bit, you know, of course, my analogies are always, you know, mostly wrong. But what we're kind of saying is that the difference between how much time we think something should take because the customer doesn't think it's a big change because it's not a big change to their conceptual model and how different that is to how much it takes to actually implement that change. That is the measure of design quality. Yeah. So to revisit what you're saying, the way that he put it in the book that was really cool is product manager comes to you today and says, I want this feature, right? And then six months down the road, they want another feature that in their mind is very
Starting point is 00:29:08 similar to what this feature was. And you say, it's going to take twice as long. And you're gonna be like, why the heck is that going to take twice as long? It's kind of the same thing as what you did six months ago. And then a year down the road, they're going to want something that they feel is like about the same scope. And now you're going to tell them it's going to take three times as long. And that's what we're saying.
Starting point is 00:29:26 That's the measure of it. If every time new features or changes need to be introduced in the system, but the time to do this goes up drastically every time you failed at your architecture, you failed at your design because it should not be that kind of, you know, exponential rise or even linear rise of the problem. How else are you supposed to bake in your Reddit reading time, though? Yeah. That's a real-world problem there.
Starting point is 00:29:55 I was really asking. So, yeah, I mean, that's literally the identifier. And let's be honest, right? We've all seen this. Like, that's literally that's the identifier and and let's be honest right we've all seen this like that's how it happens a lot of times a lot of times yeah and i get it i mean they talk about the shape and the scope uh in particular and kind of the shape refers to um kind of like what the code actually looks like right it's like you know where the files are the actual um you know i don't want to say physical but you know that basically uh what the implementation is and then the scope is
Starting point is 00:30:31 like the conceptual model and so if somebody says like oh customers should be able to go back to accounting then and do something then that you know is like drawing lines in their heads from box to circle or whatever but when it comes to the code you know we know that might end up being like 44 different files and then deleting this folder and you know a big pain in the butt and that's a difference there in between the scope or the domain and the actual physical code um i used a word i didn't want to dang it but if you know we talked about um triple d uh domain driven design and that whole book was really around keeping your your code really close to the model and mimicking that and so that when they want a change in scope then that change isn't so different in the shape and you can kind of keep these two worlds somewhat in sync yeah keep it close to the business need
Starting point is 00:31:24 that way it makes sense hey one of the things that we called out here in the show notes and and really is cool and i highly recommend picking up the book at least so far as we've gotten like they have a he has a ton of graphs in here that shows some some interesting things like uh some case studies where an engineering staff increased by, geez. I want to know what company this was. Right? Like eight or 10.
Starting point is 00:31:48 I know. Yeah, they anonymized it on purpose, but it looks like eightfold almost, right? Maybe tenfold. Well, at one point, the cost of development, he was talking about how with bad architecture, they were able to chart out how the development effort um as the developers were small you know everything was okay but then as they would like ramp up the development team
Starting point is 00:32:13 that there wasn't an increase in code that it actually kind of flatlined the the amount of code flatlined if you just considered code as lines of code um which maybe there's some argument to be there about productivity whatever on one of the graphs it was actually productivity well the flatlining one though i thought was the was um lines of code yeah it was it was lines of code but the the um but he goes into the car but it also includes the cost of the development and in the beginning for like release one it was you know the monthly cost was a few hundred thousand dollars per month to pay the developers to do it and by the time you got to release eight it was 20 million dollars a month to pay the development team what company could this possibly be and it was climbing and yeah and that's
Starting point is 00:33:07 the kind of stuff that they see like they even so the productivity per release went way down because it was difficult to maintain um as they ramped up the engineering staff the the productivity flatlined like literally they they it looks like a 10 times increase, maybe 20 times increase in the number of engineers, but the productivity just completely flatlined. Come on, give me a guess as to the company. That's all I've been thinking about this whole time. This was Microsoft during the release of Vista.
Starting point is 00:33:38 I don't know. No? No? Okay. Let's see if it gives it a deploy count. And I don't want to give away too many numbers on the charts because you should really buy the book and read it. Oh, yeah. Hold on. I'm going to give you another number from the chart.
Starting point is 00:33:52 Two. Two. I'm just giving away a number. Yeah, there we go. No, I'm curious. I'm looking for it. So in eight years, we went from basically a handful of employees to 1,200. Who could that be? Well, we don't know what years. 1,200 employees could be anyone. Yeah, we went from basically a handful of employees to 1,200. Who could that be?
Starting point is 00:34:05 Well, we don't know what years. 1,200 employees could be anyone. Yeah, we don't know what years. We don't know anything about this. We just know that the releases, one through eight, he didn't correlate that to time. But one of the interesting things that he points out, and I think it was even earlier in the chapter, was this is where you have to be careful. Where you see trends like this, it's not just a development team, right? Like as upper management looks at this stuff, they're going to go,
Starting point is 00:34:29 holy smokes, man. Like we're not getting any features, but we're spending the same amount of time. And, and, and uncle Bob here even says, this isn't because developers aren't working. If anything, developers are working their tails off. But the problem is the architecture doesn't support making these changes. And so now not only are developers working their tails off, but they're frustrated because everything feels like a grind, right?
Starting point is 00:34:55 Like everything's an uphill battle. And honestly, if you're the, you know, he caught out the CFO in this, like if you're the CFO and you have, let's say, let's say you only had 20 developers on your team, right? And you're looking at that 20 developer and you're looking at this chart and you're like, well, you know what? I have the same level of, you know, productivity when I had 19. So why don't I just go ahead and only have 19, right? That guy, it's his job to start scaling that stuff back, right? And the problem is, is mentally that makes sense for somebody like a CFO, right? Because you're looking at numbers, you're like, well, okay, well, if we just move this curve back
Starting point is 00:35:28 down, but that obviously wouldn't work. Right. Because now you're going to have 20 people just spinning their wheels, trying to maintain however much code was written by those, you know, 1200 engineers. So it's, it's a real, real problem, right? Like, and, and it's something that snowballs. People hear that all the time but when you start writing code that's not maintainable and and you're rushing to get it in there it snowballs there there was this quote related to this section that you mentioned about like uh it wasn't the it wasn't due to the efforts of the developers you know it wasn't that they weren't doing hard work and he actually referred to it as the heroics of the developers and the overtime and dedication
Starting point is 00:36:04 but he says that you know the problem is that all their effort has been diverted away from features and is now consumed with managing the mess. Yep. And that's, that's unfortunate. Uh, we've all seen it. At least all three of us. I know we've seen, um, you know, in multiple places, right? And sometimes it's not the entire app. Sometimes it could just be a portion of the app that you're just like, Oh God, please don't ask me to fix that part of it. Like I'll, I will literally rewrite any other part of it, but let's just leave that one alone. Yep. Yep. Please don't throw me in the briar patch. Yeah, man. I, it looks like both of us wrote down something in here to where one of the quotes is the lie that we tell ourselves and that the product management team tells us and that we internalize is we can clean up the code later, but we got to get this to market first. We got to be so-and-so to market or we have to get this to market.
Starting point is 00:36:58 And the problem is that is a total lie because after you get that one to market, the very next hot feature is going to be on its heels, right? You never have time to go back and clean up that code. Rarely, seldom, if ever, do you? Because you're always trying to chase that market. I had a thought on this. So I wanted to read this quote from him. And then as soon as I read this, like a thought came down, I just had to like pencil it
Starting point is 00:37:26 in. But he writes that getting to market first was going on with what you just said. Getting to market first simply means that you've now got a horde of competitors on your tail and you have to stay ahead of them by running as fast as you can. And it made me immediately think, have you ever noticed that sometimes like company X might come to market first with some product, but company Y is the more successful. And it made me think that maybe this is why we see the second competitor be more successful in the long run, because they weren't pressured to be first. They were able to think more about design, which allowed them to think about the structure in a way that they could iterate faster. That's possible because eventually they're going to be the tortoise, right? And the tortoise and the hare, they're going to pass them slowly but surely.
Starting point is 00:38:14 Yeah, because they don't put that undue pressure on themselves. They're like, oh my God, we have to be the market first. We have to get this done. We have to be the first ones to solve this problem. But this does kind of fly in the face of what a lot of programmers have been saying for a long time about focusing on the MVP, about performance being optimized too early. So it's definitely kind of internalizing the culture that we should release
Starting point is 00:38:40 early and often and get this stuff out. However, I've read the whatever that book was with the MVP, I can't remember the name of Lean Startup. Lean Startup, yeah. Nowhere in there did it say you should sacrifice on infrastructure or quality. It said you should sacrifice on
Starting point is 00:38:57 features. You should pare it down to the least set of behaviors and features that make sense but nowhere in there did it say that you should sacrifice on architecture no that's true so in other words alan's doing it right when he scales it out his application for a billion current current users definitely absolutely i mean you like you look at these charts it's a scaling problem absolutely like things are great when it's you know when you're first starting out and you got one two three you know releases like it's not so bad but as things go on
Starting point is 00:39:28 it's just you start to see that curve level out and it just gets to just insane levels and it's just totally unsustainable so well there's there's a couple more things in here that i want to point out that i don't think we wrote down um but this whole thing about, about us as developers, if we just bang it out fast right now, we can, we can go fast. Right. And, and it'll slow us down later, but at least right now we can go fast. That's actually a falsehood by what he says. And it sort of makes sense because he put it this way.
Starting point is 00:40:01 And if you think about cleaning your house, your apartment, your car, whatever, this is so true. If you just maintain the cleanliness of the area, it's a thousand times easier, right? Like if you're throwing McDonald's bags in your passenger seat and they just keep piling up over there, guess what? You are going to have a nasty mess when it's over because it's not just going to be, Hey, you got to get rid of those bags. Now you got stains in your seats. You got stuff all over the place, right? It's going to take a lot more effort. It's the same thing with code, right? I mean, it really happens that way. If you let that stuff pile up, it's going to get to a point to where it's very difficult to clean up. So I thought
Starting point is 00:40:40 that was awesome because it's so true. If you maintain the cleanliness and then he goes into, it kind of goes along with the thought that, you know, some people make against awesome because it's so true. If you maintain the cleanliness and then he goes into, it kind of goes along with the thought that, you know, some people make against testing where it's like, Oh, we don't need to, we can test it later. We don't need to write tests or whatever because we can come back to that.
Starting point is 00:40:56 But it kind of went along with the sentiment of the TDD approach where it's like, you know what, if you actually do your testing in, in the beginning, you're going to be able to iterate faster. And he actually had a chart here where a colleague of his did a test of writing code where we just spent a little bit of time each day. And on three days out of the week, he would, you know, write his tests first and do a TDD approach to it. And then and then document how long it took him to complete the amount of work.
Starting point is 00:41:28 And then on the other days of the week, three other days of the week, I guess he was working a six-day week, he would not take the TDD approach to it. And he was able to chart that there was an actual, you could see the learning curve in both approaches, but in the slowest day when he took the TDD approach, it was still faster than his fastest day where he didn't take the TDD approach in terms of being able to iterate and get something done to completion at some respectable time. By 10%, by at least 10% on each day,
Starting point is 00:42:07 he beat it with the TDD approach. So riding slower, but it ended up being faster, right? Because we all think, hey, if I just skip doing the test, I can do this faster, right? But he proved it. It sounds like a hassle. Like you got to set up that infrastructure or you got to set up that plumbing or whatever it is, you know, if it's a new project.
Starting point is 00:42:27 And if it's not a new project, then you're like, well, I got to make this new test. I don't want to want this new test to be yet, you know, in. And yeah, so it's you can easily see why it would be why you might think like, oh, let me just skip the testing. I'm not going to worry about the testing. I can I will skip the testing. I'm not going to worry about the testing. I can, I will write the testing. Let me focus this week on just getting the core functionality done. And next week I'll come back and write the test. But what's going to happen is next week, assuming you even got it done the first week, then you're going to be tasked with doing something else because you know, the, the customer, uh, whether that customer be your boss
Starting point is 00:43:03 or your boss's boss or an actual paying customer outside of your business, that test to them isn't a feature. It's not material to them. Yeah. They don't care. They don't know what exists. There's a better term for it that's not coming into my head right now. Yeah.
Starting point is 00:43:22 So this all leads into something, though, that I think, joe you actually put in here in the quote yeah did i put my name there no i did i did okay somebody's kidding wow uh okay uh yeah uh slow smooth smooth as fast which is uh like a military saying i don't know if you guys have heard that before um i read it in a book recently um and uh actually another quote the one you're probably referring to is the only way to go fast is to go well and that one was actually from this book but both are kind of speaking to the same thing where if you are rushing around frantically trying to do stuff you're going to make mistakes there's going to be stuff to pick up afterwards it's a big mess this is also kind of the the main point behind the uh the infamous or famous um
Starting point is 00:44:05 toyota like the the new me plant whatever the andon cord you know the idea was previously all those car companies would rush everything to the assembly line because stopping the assembly assembly line meant stopping the production it slowed the numbers down and they would kind of fix their mistakes afterwards but toyota had a different approach where they would actually stop the problems as they and deal with them as they arose and that ended up being so much faster and so much more efficient in the long run and we've heard similar stories i know pat flynn's got a similar story to like doing wedding announcements and stuff and i found um it was faster actually to do each one individually rather than trying to kind of do all the folding do all the stamping do all the whatever
Starting point is 00:44:42 and it's just the same kind of deal whereas if you kind of take the care and have the patience and kind of do things slowly they end up being a lot faster in the long run but the thing is it's a convenient story to tell or is it rather as a sort of convenient story to go along with when you're you know your boss or your manager whoever wants something done faster and you know there, there's a little, you know, a little if statement, a little hack, a little, you know, flip of the wrist that you can do and get it quote unquote done. Then there's a lot of pressure to do it that way. And the only one who a lot of times can say, hey, that's not so great is another developer who's got their own pressures and lives to live and probably isn't looking over your shoulder. And so's kind of like you know you've got the devil on your
Starting point is 00:45:28 shoulder that wants to go home and just make everybody happy and and close the ticket and then you've got the angel over there that nobody else can see nobody can hear nobody will ever know about um so it's it's hard to do the right thing and there's no one else really to fight with you a lot of times it's it's kind of up to you to defend uh what doing it right means and why it's important yeah and this is where the one of the conclusions is so what's the answer did you rewrite it that's the answer that comes up a lot right yeah he says that developers think the answer is to rewrite it from scratch right you know one thing i was reading about when i when i read when i was reading this book or one thing i thought about while i was reading this book
Starting point is 00:46:14 was that um basically he wrote this book for whatever company you're working at while you're reading this book totally this this applies to your company. I'm sure. I'm sure of it. That's not ours. But to Joe's point about like, you know, the responsibility thing,
Starting point is 00:46:32 he has a statement in here in, you know, skipping ahead to the next chatter where he says that the business managers are not equipped to evaluate the importance of the architecture and that it's the responsibility of the development team to assert that importance of the architecture over the urgency of that feature. Yes. Right.
Starting point is 00:46:53 And we need to jump into that deeper in a minute too, because I think that is so incredibly important. I do want to point out though, that the term that I was looking for was non-functional. Oh, okay. Yeah. Non-functional. Yeah. Yeah. Yeah. Non-functional. Yeah. Yeah.
Starting point is 00:47:05 There was a race condition in my brain, so it took a minute for that one to get there. But it eventually got there. But the Semaphore, it kept everything good, right? Yeah. All right. So the thing on the rewrite, and I love this, he says, no, that's not the answer. And just about any time somebody says rewrite to me, I get a little vomit sick. Like, you know i feel
Starting point is 00:47:25 some bile rising because it almost never works out like twitching yeah yeah the seven minute abs oh six minutes well what's always really funny to me is like a lot of the team a lot of times the people proposing the rewrite are like a big part of the reason why things got so poopy to begin with right those people who've been maintaining this thing and not fixing it up not taking the time to push you know not taking the energy to push back and kind of fix things as they went along so what makes you think it's going to be any better and they say he even says typically it won't be right because you're gonna have you're gonna have so much overconfidence that oh i'm rewriting this thing i'm gonna make it perfect and you're not going to take the steps necessary to not make it a mess. And so you end up in the
Starting point is 00:48:08 same situation you were at before. So rewriting is typically not the answer is what the gist of it is. Yeah. And you end up right in the same trap where like the first couple of days of rewriting feel amazing. And that's kind of the trap of it is like the first portion of that rewrite just feels so great. You're moving so fast. You're replacing large swaths of the system. But as you get into those little edge cases and those little weird things and those bugs that you didn't think were bugs. And then next thing you know, you're right back where you were. Except now you've got two crappy systems you're trying to maintain somehow.
Starting point is 00:48:39 Yeah. And now you're probably going to be under more pressure because you put yourself out there as, hey, I can make this better. And so, now you're probably going to rush things even more because you want to prove that you can do it faster, better, all that kind of stuff, and you're going to cut corners. Yeah. Oh, and we didn't talk about the hare and the tortoise analogy that you used quite a bit through here, which I'm sure everyone's familiar with the story. But the idea is that the hare thinks he's so fast he's gonna win the race no problem so he ends up kind of slacking off taking some breaks taking a little nap whatever while the slow turtle who's racing against him like plods along and eventually wins the race and i never thought about it this way i don't know why my entire life i'm questioning what i
Starting point is 00:49:18 thought people were saying when they used the expression harebrained but they're referring to people using like you know kind of like the reptile the hair brain you're you're doing your short-term thinking you're overconfident and you're not just focused on your task i always thought hair brain meant you're just an idiot but that's fine that's what i thought too i googled i was like wait a second does hair brain being like you're thinking with your hairbrained, like the hare and the tortoise? The answer is yes. Is that really?
Starting point is 00:49:50 We got to fact check you over here, Joe. I never thought about it either. Coming in live from Georgia, we're fact checking now. Wikipedia says. A rash decision. Actually, this is coming from Dictionary. Something. And I would have, if you had asked me to spell, if you had tricked me before I read this book,
Starting point is 00:50:13 you said, hey, how do you spell hair brain, Joe? And you hit record. I would have spelled it A-R. Spelled like hair head. You mean A-I-R? Yeah, that's what I was thinking. Hair. Well, he would have spelled it his way.
Starting point is 00:50:26 He would have spelled it hard break. And then autocorrect would have corrected it. He would have gotten there. We need to autotune for our spelling. All right. All right. So, yeah. So, really, the key takeaway here is not rewrite to the answer. None of that's the answer.
Starting point is 00:50:41 The answer is start taking your quality seriously. That's where this ended in chapter one. Yep. So I want to take a few minutes here to ask you to please leave us review. We really appreciate it. There are a variety of platforms and you can go to codingblocks.net slash review. And there's a couple of links there. And if you don't want to install iTunes, that's fine.
Starting point is 00:51:10 We don't either. And there are alternatives.'s stitcher there's pod chaser and we really we really love getting that and it helps for the show and it's just really meaningful and we're very thankful for it so if you've done it thank you if you haven't please consider it and coding box.net slash review is the way to do it and a huge thank you to everybody that did it this past time we had quite a few come in and that was that was awesome so thank you it really does mean a lot to us and with that it's time for survey says bing all right so last time we asked, how many different podcasts do you subscribe to? Your choices were, there can only be one, which is obviously coding blocks. I mean, that only makes sense, right? Yep. Less than 10, YOLO. Less than 25, less than 50 and less than 100 all right so i'm gonna go with you first joe which one address the controversy we should we should i think you need to okay fine let's start
Starting point is 00:52:17 with the negativity yes thanks joe i don't know if i got negative i i call it amazing i call it impossible i do too i call shenanigans that's what i'm calling i don't know i'm up to 47 now and that's three more than last time there's only a couple weeks so i mean it happens but we did get a few people writing in uh and saying that they listened to over 100 which is just astounding to me that's crazy that's insane yeah crazy town even if each one of those, even if you listen to only exactly a hundred and they were each, and what 30 minutes long, that's still 50 hours a week.
Starting point is 00:52:54 That's a full-time job of podcast listening. And even if you double the speed and listen at chipmunk rate, that's 25 hours, 25 hours. Yeah. That's almost as a part-time job. Yeah. But if you skip the news, you can get that number much, much lower. Man.
Starting point is 00:53:09 That hurt, dude. Just kidding. That's like a dagger right there. I can't kick him off this podcast. I'm trying to figure out how. Well, I was going to say you can't kick him because he's not. Hey, guys, if you're listening to this episode, just fast forward to the 20-minute mark and you'll totally skip the news. Oh, man. And if you're an advertiser episode, just fast forward to the 20-minute mark and you'll totally skip the news. Oh, man.
Starting point is 00:53:25 Whatever, man. And if you're an advertiser, totally ignore what he just said. That's right. We would never endorse that. All right. And you like how we tell them at like minute 50. All right. So, Joe, with all your negativity, which one do you think was the most popular and what percentage?
Starting point is 00:53:46 Only one. Less than 10, less than 25, less than 50, less than 100. Less than 50 at 40%. 40%, less than 50. Doggone it. I'm going less than 50 at one. At 1%? This is Price is Right rules, man.
Starting point is 00:54:04 Yeah, you're right.'re right yeah price is right rules uh where we mix you know multiple games survey says yeah right price is right uh the price is wrong yeah right no don't finish that quote for anyone who doesn't know what we're talking about watch happy gilmore go Go watch Happy Gilmore and laugh. All right, so both of you think that the most popular, you really think that all of our listeners listen to more, or I'm sorry, under 50 episodes, but that obviously implies greater than 25.
Starting point is 00:54:38 Subscribe to. Subscribe to. I don't think they listen to. Subscribe to. Subscribe to. I'm sorry. Subscribe to. I think so.
Starting point is 00:54:43 So I guess that you're leading the jury here. No, I just misread that. Yeah, don't. But you're wrong. Both of you are wrong. Is it less? Far and away, the answer was less than 10. Really?
Starting point is 00:54:59 Wow. Dude, that's exciting. Thank you for listening to us as one of your 10. We are 10% of their important subscription. When you say far and away, are we talking greater than 50%? Oh, okay. Well, now who's being negative? No, it was 47% of those surveyed were less than 10. Well, I'm not going to recommend any more podcasting.
Starting point is 00:55:26 Cause you get one of those in like, this is a good chance. We're coming out. So this is a stack. Yeah, man. Y'all cutthroat. No,
Starting point is 00:55:39 that's not fair. There's a frigging survivor over here. We just got voted off the island. No, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, voted off the island no no no we're still your torch has been put out all right all right so on this episode survey we ask how often should your employer replace your computer? And your choices are every three years because you got to respect the money. Every two years. Come on now.
Starting point is 00:56:19 Or every one year because I deserve it. Or who stays at any employer long enough to have that problem? And lastly, wait, they're supposed to replace it. So just so you guys know, this will be an anonymous voting as they always are. They are all your votes are safe with us.
Starting point is 00:56:41 Yes. Do we want to add a four to five option i'm kind of scared of not representing now what four and five year options yeah oh fine we'll say well how about if we just say greater than three yeah greater than three i like that all right greater than three seems very nebulous like 10 years i'm upgrading my 486 DX two this year. I mean, I'm sure your laptops are three years old. Come on.
Starting point is 00:57:12 Wait, no, we're not talking about personal. I'm not. We're talking about your company. We're talking about your employer, what your employer should do. Cause like our,
Starting point is 00:57:20 our personal, that makes more sense. Cause it's not going to get the daily use that, you know know your work computer does now if you're self-employed if you're self-employed but that's where you are the employer yes so this question still applies to you so don't try to come at me with any shenanigans about like well i'm self-employed so it is my personal no you're employed you're employing yourself all right all right just real quickly here um we don't want to uh we're trying to let me just tell you let's like let me spend 10 minutes tell you about how we're trying to save
Starting point is 00:57:52 time anyway preach it brother moving along uh google feud i've got one quick one which i just happened to look at the other day i thought it would be fun to do on the show so let's try JavaScript is outlaw you want to go first no this is your opportunity do not miss this chance to blow okay so all spaghetti right thanks Eminem
Starting point is 00:58:18 JavaScript is um JavaScript is like Java. I'm trying to think what the most common Google search is going to be. JavaScript is always changing. I'm horrible at this. This is why I ask you guys the questions. JavaScript is popular. JavaScript is popular.
Starting point is 00:58:48 JavaScript is popular. Alright. You guys are so far off. It's amazing. Yeah, I'm sure. What is it? Do you want me to tell you? Yeah. Alright. Well, JavaScript is... Hold up, hold up. Hold on, hold on. Before you do Well, JavaScript is. Hold up. Hold up. Hold on.
Starting point is 00:59:05 Hold on. Before you do this, there was somebody I ran into and I cannot remember his name. That's horrible. But when we did the Atlanta Code Camp, he said a suggestion, open up a private window and run the same query. Because maybe Google won't do it. Although I said that maybe by IP address, they're still hitting it that way, but no, no, no. And when I've done the Google feuds in the past, I've always done it in cognito window to see like what, what Google will come back with. So we've been doing that. All
Starting point is 00:59:34 right. So do yours incognito, sir. All right. Got it. Pretty much the same. Got it. Okay. Probably because they're looking at your IP address and they're like, this is JavaScript is amazing. JavaScript is hard. JavaScript is javascript is amazing javascript is hard javascript is stupid javascript is uh you're cheating by the way i know i'm thinking up the top of my head like what would these search what would google searches be all right i'm just gonna go ahead and lump those all together and give you a big fat no on all of those not nowhere i'm not good at this all right so here's what it says so if i do javascript is and no space afterwards then i get things like javascript is nan is numeric and then then we start getting into other stuff eventually is set is defined but. But if I do JavaScript is space, I basically use the same kind of thing.
Starting point is 01:00:29 JavaScript is array, is null, is string, is integer, is numeric, is numeric, is undefined, is defined, is not a function, is not null. So I thought it was really funny for, you know, a weakly typed language, you know, a dynamic language. I see where you're going. Yeah, apparently it's just the programmers are the compilers. The programmers are the ones checking for error, and they're using tools like Google instead of a compiler.
Starting point is 01:00:55 So I thought that was really funny, and I never would have guessed that. But, dude, this is ridiculous. Come on. That's where they went wrong. This doesn't make sense. They should just have used Stack Overflow. I feel like they need to talk to, what was his name again? Mikey Don?
Starting point is 01:01:10 No. Yeah, Mikey Don. Mikey Don. Yeah, he's the one that authored the book on copy and pasting from Stack Overflow. Well, next time someone says, hey, I don't got time to learn TypeScript, you just say, that's your harebrain. Your harebrain thing. Hey, wait a second.
Starting point is 01:01:28 Wait a second. So, funny for you. That's your hair brain. TypeScript is not a module, is array, is not a function, not a constructor, string, not assignable to type. So, it's the same garbage, man. Okay. Oh, man. I am so used to that comment.
Starting point is 01:01:44 Somebody says something to me from now on. That's your harebrained speaking. You got to put son at the end there. I love the way that he pointed at the camera when he did it, too. It's like, that's your harebrained talking. Yeah. You got to check out the YouTube video for that. Oh, man.
Starting point is 01:01:58 All right. Well, let's get into chapter two. Yep. A Tale of Two Values. Yes, sir. All right. we're done. That's it. Yep.
Starting point is 01:02:09 So two values, the two values that we're talking about here are basically structure and behavior. And when I'm not used to those terms in this context, I'm used to words like features and architecture or features and non-functionals. But they're kind of the same things we're talking about here. I didn't really detect any sort of major difference between those concepts i don't know about you guys no it's the same okay and i think what they're saying here is really stressing the beginning is that both of these are high in a good project right we like we want a lot of features and we want really solid features and we want a lot of structure. We want a lot of architecture, which I thought was interesting. He didn't say good or simple or clean kind of said a lot.
Starting point is 01:02:53 No, no. I think it was, it needs to be a high priority, right? Or high importance. Okay. High importance. Yeah. Okay. So I'm, yeah, I'm on board with that.
Starting point is 01:03:02 I think that makes more sense. Yeah. Cause a lot, a lot of architecture isn't necessarily a good thing. Yeah, this seems really silly now that I've said it out loud. Dude, one of our good buddies, Will, I'll never forget at one point he had on his messenger something to the effect of, I hate abstraction for abstraction's sake or something like that Where there were like 20 layers of interfaces And he's like I can't deal with this So yes a lot of Isn't there like a quote though about that
Starting point is 01:03:31 Like abstraction for abstraction's sake is bad Or something like that I feel like Joe knows some book that has a quote about that Joe knows that feels like a Tecmo Bowl thing So You remember Bo knows? I remember that, but I'm trying to make the reference to the, the, the football game from Bo knows, like, um, don't tell, I know Bo, but no, no, that Tecmo bull, he was the dude
Starting point is 01:03:56 that you couldn't stop. Bo Jackson. If you had his team, you, you couldn't, you couldn't tackle the Raiders. Yeah. Yeah. But there were, there were, There was like a player like that on every team though. I don't know, man. Bo Jackson. Yeah, because who was the guy from the Buffalo Bills during that same time
Starting point is 01:04:14 frame? Oh, Thurman Thomas. Yes. He was the same way. Sports ball. Sports ball. I'm sorry. I'm sorry. I let the internet down. Dang it. There's actually thursday night football on right now it's running in the back of my head and i'm like oh man all right okay so uh yeah the two two different sides of the same coin right um behaviors and structures
Starting point is 01:04:42 and we'll just go ahead and use their terms for it um and one thing one good point it really makes about this is that software as opposed to hardware is called software because it's supposed to be malleable it's supposed to be easy to change the difficulty in making a change should be proportional to the scope there's that word again of the change not the shape of the change so if conceptually it's not a big deal then theoretically code wise and shouldn't be either and if there is a big discrepancy there then we kind of have to ask ourselves why or where we go wrong or have you know is has there been a miscommunication this whole time or have we not been adapting the shape of our code to beat the scope of our ever evolving scope yeah well said and um you know kind of nail that point home talks about the stakeholders meaning that you
Starting point is 01:05:42 know the heads of customer service or whoever is commissioning the product for you, they provide a steady stream of changes that are roughly similar scope, right? So they start off saying, I need this, I need that, I need this. Their requests three years later haven't gone completely crazy, right? They're not asking for things that are dissimilar from what they used to ask for, but now it's taking you, you know, a lot longer turnaround. I've seen this in pretty much every business and, you know, as things get bigger and more complicated, it happens that way. And I think the analogy that he gives is fantastic. Here, I highlighted it like three times. Yeah. From the dev's perspective, every time we get a new request in
Starting point is 01:06:26 we are rearranging the pieces of an ever ever increasingly complex jigsaw puzzle every new behavior that we add is additive to the problem it's additive the number of code lines of code that have to be maintained it's additive additive to our abstraction, to our model. And we've got to keep rejiggering that stuff. And it's hard as things get bigger, especially if we don't keep that shape and scope in sync. And this is where, by the way, like in the previous thing, in episode 66, when we were talking about time estimates and all that a lot of times developers
Starting point is 01:07:06 are pressured to get things done as fast as possible right and and ship it and that is completely why this happens right here because as a developer you're like man i'm being held to the to the coals on this thing. I need to get it out the door and it needs to be good, but that always comes with ever increasing risk, right? Because now you don't have unit tests because you tried to ship it fast. You didn't take the time to say, Hey, how can I make this thing fit in a way that we can come back and reuse it later? Or it's not going to be a problem and that's exactly why this thing turns into a jigsaw puzzle right in the long run that's really why it happens yeah and it's a total trap
Starting point is 01:07:52 too right as the shape and the scope get out of sync things take longer and so you have less and less time to go back and fix infrastructure type stuff because now you're telling them well that checkbox just like the checkbox added last week is going to take five times as long checkbox added last week, is going to take five times as long. And you can't say it's going to take five times as long. And I'm going to take a month off to, you know, add testing or replace the ORM or whatever. Right. It's never going to happen. And it's because you kind of worked yourself with your harebrained into this hole.
Starting point is 01:08:20 And there's not a good way out of it except to kind of own up to it and start trying to do better. Yep. And he brings up, like in this very next section, he brings up this almost contrived sort of ridiculous thing about, would you rather have a system that works that's difficult to change or one that's busted but easy to change? But when he says busted he basically means has no value right like it doesn't work that it doesn't work for the business and he said i would argue that you'd rather have the application that doesn't work at all but it's easy to change because then you can change it to meet the business's needs well he was
Starting point is 01:09:00 specifically saying in this section that like more than not, your management is just saying, it's more important that it just work. Yep. Right? And that's where he was taking this extreme approach of, do you want the one that works, but it's difficult to impossible to change versus the one that doesn't, quote, work, but you could easily change it. And he goes on to argue that yeah well actually i don't want to jump ahead so yeah i'm going to skip that we'll get back to it here in a second and i'll bring it up but yes so that was the whole thinking about the problem at the extremes and and what he says sort of makes sense right like if you can't iterate on the problem then it doesn't really work
Starting point is 01:09:43 out that well for you but But if you can iterate on it quickly, you could potentially add more value to the company. And I think he even pulls it out in a different way. Well, I was going to read the two extremes here because I really liked the way he put this. Going to this extreme example where one quote works, but you can't change it, and the other one doesn't work, but you can easily change it. And he says, if you give me a program that works perfectly, but it's impossible to change, then it won't work when the requirements change and I won't be able to make it work. Therefore, the program will become useless, right? So as time goes on and you want to add new features or whatever, and you can't, right? Versus if you give me a program that doesn't work,
Starting point is 01:10:24 that does not work, but it's easy to change, then I can make it work and keep it working as requirements change. Therefore, the program will remain continually useful. Yep. And I want to read like the last paragraph here where he gives the more because he even says that's kind of contrived. And some of you might argue that because it is super extreme. But then he gives the real world example. If you ask the business managers if they want to be able to make changes, they'll say, of course they do. But then they may qualify their answer by noting that the current functionality is more
Starting point is 01:10:54 important than any later flexibility. In contrast, if the business managers ask you for a change and your estimated costs for that change are unaffordably high, the business managers will likely be furious that you allowed the system to get to the point to where the change was impractical. So it's literally a catch-22, right? And that is the situation that often happens. But that's where we're going to get into this next section.
Starting point is 01:11:20 Have you guys ever been in a situation where you're working at a company and you get some sort of quote from a third party and it's just unreasonably high and you think basically they gave you the applaud way of saying no. It costs a million dollars and you think they're giving you the take a hike number. Maybe they're just really good at estimating. And they know that it's going to be more trouble than it's worth or, you know, it's going to be worth X amount of dollars. I think we need to be careful about talking about estimating because we don't know yet. No, no, no. Hold on.
Starting point is 01:11:51 I needed to whine and complain about it for a minute. Give me a second. We definitely need to come back to that one. Oh. Yeah, and give some positives for it. Yes. What to do about it um eisenhower matrix uh i always forget what this is called i i don't know why but it's it's the grid of four i'm sure everyone's
Starting point is 01:12:13 seen it by now where you've got like behavior or sorry behavior uh urgent in one corner and important in another and um well what are the other four squares. Important and urgent. There's important, not urgent. There's unimportant, but urgent and unimportant and not urgent. So it's that quadrant, right?
Starting point is 01:12:34 They fit into them. I've never heard of this. He's talking about this. Like I should have known about this. But one of the interesting things was this is what Eisenhower said. And this is the irony to it all. I have two kinds of problems the urgent and the important the urgent are not important and the important are never urgent so
Starting point is 01:12:52 it's basically that whole you know everybody wants something right now but they don't matter or the things that we do need right now nobody cares about and and that's what he's getting at here. And Uncle Bob here goes into this and he sort of lists them in order of what they should be important to software architecture. Number one was urgent and important. Two was not urgent and important. Three is urgent, but not important. And four is not urgent and not important. So basically, you know, you take your
Starting point is 01:13:25 highest priority, most important, most urgent thing all the way down to doesn't matter at all. Right. And go ahead. No, go ahead. No. So all I was going to say was he said, the biggest problem is when they invert, they move number three up to number one, they move what's urgent, but not important. And they try and cram it into urgent and important. Because that's typically what product teams are doing, right? Everything's important to them because they want it done. They want that feature in there. But it's our job to make sure that we keep those things in perspective, right? We need to identify, is that truly important or not, right? And it needs to be noted to the business so that everybody's in the right line.
Starting point is 01:14:11 So crazy, crazy thought. Everything that comes across via Skype, Messenger, maybe Slack, it's all urgent, right? It's all things that are kind of pressing. You're supposed to respond right now. And a lot of times that stuff isn't important you know the stuff in your your ticket system that's important everyone's agreed on the stakeholders are in game we have deadlines set but then we've got this little flashing thing in the corner but but it's hard to say though because what's urgent and not important to me may be very much different so outlaw sends me a message because he's having a hard time with an urgent, important issue, right? And he needs answers.
Starting point is 01:14:49 Well, that little flashing light may not necessarily be important to my goals, right? Well, really, it's sort of about the company goals, though. And that's really where the problem lies, right? Is there are personal goals because everybody's held to a certain level of performance and what they have to get done. So there's those personal ones, but there's also what's important to the organization, right? Is, is spending, you know, a week on this one thing that really doesn't add much value. Is that truly what's important? important and and then you might even argue whose job is it to say right and that you know yeah but if you're not careful you could have
Starting point is 01:15:31 all your time eaten up by just dealing with these little flashing lights and trying to you know prioritize yourself what's important and not important or make it yourself rather than all the stakeholders who have already kind of agreed on what's important for the two weeks but i don't know a good way of telling the difference so i you know i like luckily i don't get that many sky messages so it's not a big deal but i just kind of always wonder about that with like uh slack being so important in so many organizations now and uh you know chat's always been really important but uh i think it's kind of interesting because by definition it is urgent and it's not always important. Right.
Starting point is 01:16:06 Was that the only one though that, that read this quote from Eisenhower and then was like, okay, how did these two things explode to four? Well, I think they just built a quadrant out of it at that point. Right. But it's still like, yeah, even cause he even listed them out as, you know, numbered bullet points, right.
Starting point is 01:16:23 Or a numbered list. And it was like wait he never said something was important and urgent so number one can never exist right yeah no i don't think he did but or maybe he made the chart but he said he said all my stuff falls in one corner or the other yeah if this is your really the first time you've seen this then you need to read or rather i should say i've been reading too many self-help books because if you read any sort of like productivity book this thing is like front and center like getting things done um self-help or the seven the seven highly effective habits of successful people whatever like all those guys uh any book
Starting point is 01:17:02 like it like this is like front and center like chapter one interesting okay so then explain that then no i'm just kidding we'll move on so here's here's one thing that came out of this that i think is really important because this boils down to the software architecture part of this is they say that the dilemma for the software developer is that business managers are not equipped to evaluate the importance of architecture. That's so true. They can't be equipped because that's not what they look at. They don't see it. They're not down in it. It's your job to make sure that you are fighting for keeping the architecture clean so that when they come for another request in the future, that it doesn't turn into this big snowball effect to where the same request scope and shape ends up being three times the amount of work.
Starting point is 01:17:52 Right. So he makes it, he makes it a point here to say, that's what we're hired to do. We're hired to not just write lines of code. We're hired to make sure that we create a system that is maintainable. You know, I gotta say this. I really enjoyed the first parts of this book that I've read. Like it, it touches on so many different things that we've talked about in so many different ways, but it didn't go into every little one. Like it didn't talk about tech debt. It didn't talk about project management and ticketing systems. It didn't talk about, you know, all the stuff that
Starting point is 01:18:22 I'm kind of bringing into it now, because it really focused on like the specific clean clear messages of architecture and you know behavior or structure and scope for shape and so i really like dealing with in those terms if you look at some of the future chapters man i'm super stoked to continue reading this because, you know, structured programming, object-oriented, functional programming goes over all of solid. Yeah, there's some really cool topics that are coming up in this book. So I'm happy to – this is – I know we were waiting for this to be released. We saw it, what was it, like a month or two ago. Yeah. And kind of got excited
Starting point is 01:19:05 about it. There was one thing in here, though, that I wanted to, as part of the wrap-up of this section, that, you know, often we talk about, you know, when you're going over, you know, some requirement or feature or part of the application or whatever, you know, and you refer to to like, you know, getting the stakeholders involved and, you know, having that discussion with them because they're an important part of, because, you know, they're the stakeholders, but he makes the important point, uh, to note that you are a stakeholder and that, uh, it is your job as a software developer developer to safeguard the code. It's part of your role. It's part of your duty.
Starting point is 01:19:53 Yeah. Absolutely. And what I like about this too, the stakeholder thing is, he makes it a point to say that it's never easy. As a software developer or architect or designer or whatever. It will always be a struggle because people aren't exposed to that part of it. Right? So when somebody comes to you and say, Hey, I need feature ABC, you know, let's get this crammed in there. And you're going to be like, well, this is going to take us a little bit of time because we
Starting point is 01:20:22 need to do this, right? There's going to be an argument. There's going to be pushback. No, we need this in two days. No, well, you're going to have it in five. And he says, it is always a struggle. And he said, frankly, that's how it's always going to be. And that's how it's always going to be done. Because there's always this whole balance between it. But you as a stakeholder, he even says that it's not that you're somebody that is reporting to these people.
Starting point is 01:20:47 You should be treated as an equal in this argument, right? Because you're the one that knows about what you're doing to make it work for the company. But every one of the stakeholders involved, that struggle is there because every one of the stakeholders involved is doing their part to protect the overall organization from their perspective yep and it's your job to protect your slice of the organization which is your code you don't know their domain they don't know your domain yep and and he's just kind of go ahead oh go ahead no no i don't want to oh no yours is much better no mine's like cut off top stop all right all right uh so i was just kind of like you know thinking about spitballing like how what does it mean to defend or what does it mean to fight for something right and so i was just kind of thinking of a couple like off the cup
Starting point is 01:21:35 examples like one way to do it would be to talk to your boss about having like uh you know uh like what's called um lunch and learn type thing where you talk about better techniques for doing stuff and you can share that knowledge with your team. Another example I could think of would be going to different... Encouraging going to conferences or whatnot would be another one that's not so direct to your code or you know maybe even something like the google 10 percent um or was it 20 percent uh 20 20 and that was based more
Starting point is 01:22:13 around like kind of innovation um 20 projects and but you can imagine having something like you know what every other friday we're gonna have tech debt fridays and you know every developer gets to pick their favorite thing that they hate and work on it. And so that's what we mean by fighting. It doesn't necessarily mean saying I can't do this ticket because I need to clean up. Um, you know, you may want to bring up the problems and the things that you should do there, but there are other ways to address this than, you know, saying I'm not doing this ticket. I will say the tech debt Friday thing where each developer works on things that they know that they want to clean up or whatever. I have split mixed feelings on that because I've seen situations to where
Starting point is 01:22:58 people know what's important to them, right? What they, they've seen some bad code. They want to clean up that code. But oftentimes I, if you look at it as more of a big picture or a whole type thing, I feel like a lot of times there'd be wasted efforts down on, you know, feature X, Y, Z, because really what should happen is further up above something should have been fixed there that would have lined everything back up. You know what I'm saying? Like, I feel like sometimes the problem is, and I'm, you're saying like you put in the cart before the horse kind of scenario. Yeah. Like, like I do agree that
Starting point is 01:23:38 everybody should be a part of making sure that things stay clean, but that means everybody also needs to be involved in that conversation of what does that mean for us? What is important for us to clean up so that we can make better steps towards a better application, right? Just because you're going to go clean up an ugly section of code doesn't really mean you bought much, right? Because maybe that ugly section of code shouldn't even really exist, even as a clean section
Starting point is 01:24:03 of code. Maybe that thing should be completely removed because there should be something else further up that should be driving some of these things. You know what I'm saying? And that's where I struggle with some of that stuff is I think if somebody doesn't have enough context, they think that they're doing right by spending time in one area when really if that time could have been better spent elsewhere, that would have affected many areas. So here's an idea then.
Starting point is 01:24:32 And I don't have like a nifty little name for it, like the Google 20% feature. But what if on those days where, you know, refactor Friday or whatever, you have unit test Thursday. So instead, you maybe you don't have time to refactor something or whatever, but you introduce one new unit test to a piece of code that didn't already have any coverage on it. And if that requires that you need to do a little bit of refactoring to make that test work, then okay. I mean, in a little, right. And I'm only asking for one unit test. If every developer just added one unit test one day a week, right. However, that's however many developers you have. So if you have 20 developers, that's 20 new unit tests that get added that week, right? And then that would go along towards your ability
Starting point is 01:25:28 to do those future refactorings, like what you mentioned, where something's up a higher level and like, oh, do I actually have the impact? Did I introduce any regressions? It gives you that confidence that we've talked about before. Yeah, I like that.
Starting point is 01:25:42 I do like that. Yeah, I also also i really like the idea of uh devs having a seat at the project management table like a lot of times the the tickets kind of get determined in some you know back room where people are playing some sort of point poker or something looking at velocities but a lot of times um the devs will have the manager there but the manager is more about um you know, kind of keeping those behaviors rolling. And so it might be nice to have someone who's like specifically there just to kind of represent these non-functionals and structure and architectural concerns. Yeah, I honestly believe that the devs need to know more of the big picture stuff so that they can think about things in more of the big picture.
Starting point is 01:26:25 Right. How can I make something? You know, I have this one thing that I need to build. Oh, but this exists somewhere else in the app or or or oh, there's somebody else is going to be working on something else. Maybe we can work together and build something that we can both leverage. Right. I feel like a lot of times that's not done well enough. And that that is hyper frustrating, right? Because then,
Starting point is 01:26:46 then you get this whole thing where it's just not maintainable over time. Yeah. So we want to keep the devs closer to the domain experts. Yeah. I sometimes, you know, the, the problem is, and this is always a challenge is when you get too many people in a room, then the meetings will drag on, right? Like it's like going through, it's like walking through mud because there's a lot of questions. Everybody has ideas. So I think a lot of times the answer is you get a smaller group of people, then you involve more people after people have already hashed out some of the things and then, and then you hash them out in little mini
Starting point is 01:27:20 sessions as opposed to, you know, one long meeting that everybody loses focus on because it takes 80 tangents. And it's a practice that you have to try and do. And it's, I mean, but it's valuable. And I think that's a key. And don't forget, if you leave a comment on this blog post slash episode 68, then you're eligible to win a free copy of this book. And one great comment idea would be a suggestion for how to fight for good practices, right? How to fight, how to push back, how to deal with bosses that favor behaviors over structure. And to wrap this particular section up, I thought he summarized it excellent here in the first sentence of the last one. Just remember, if architecture
Starting point is 01:28:07 comes last, then the system will become ever more costly to develop. I mean, that's true. We've all seen it. And don't take our word for it, right? Take every project you've been involved with. Right. And if you're new to programming, if you're new to programming or you're a new developer,
Starting point is 01:28:26 keep this in mind, right? Like it's your job to, to start really thinking about this stuff. You really need to internalize it and don't let it stop you from working. But you know, this needs to be a part of what you are because you'll be respected for it eventually as well.
Starting point is 01:28:45 You can't be the guy at the meeting saying like it's all too big of a crap we need to rewrite the system before we do anything don't do that don't do that don't do that because all the senior devs will look at you and be like man yeah don't do that all right so we're gonna have a link to this book obviously as the resources we like uh and with that we move on to alan's favorite portion of the show it's the tip of the week it's the tip of the week all right so i'm gonna go first with my tip and that is that this is specific to, Alan's going to love this one because I got a SQL server tip or a SQL tip. And we all know how much Alan loves SQL server.
Starting point is 01:29:33 It's actually his favorite thing. It's one of my favorite things. It's his favorite thing. It's not one of, it's the. So always, if you're creating a view always explicitly name your column names for your view because if you think you're doing yourself a favor by just creating a view that does select star and you then change that underlying table the view is not updated with that change. Isn't that crazy?
Starting point is 01:30:09 I never realized that. And when one of our coworkers shared that tip, I was like, oh my God. Now immediately I was like, I'm probably guilty. Am I guilty? I'm not guilty. No, I'm not guilty. am i i'm not wait no i probably am guilty i've probably done that i don't think i've ever well ever in years and years and years i don't think i've i've put in a proc or a view select star just because there's the hit as
Starting point is 01:30:41 well on top of that of it has to query the sys columns and all that to get the stuff back. So it's running more queries just to return your query. Yeah. I mean, I honestly, I don't know. I honestly, I don't recall if I have. I'm going to guess that I probably have. But more importantly, though, was that it didn't matter if that it was just I didn't realize that that it wouldn't update like that. That's crazy. Talk about some some bugs that you chase down being like, why?
Starting point is 01:31:15 Yeah. Interesting. So I've got one. This came from Connect Tech that we mentioned at the beginning of the show here is there was a a session on web api and i almost skipped it because i'm like man i know web api what are they going to teach me in here right like literally those are the thoughts yeah those were the thoughts running through my head and i get in there i didn't know anything it had nothing to do with C sharp. It's what the Mozilla developer network MDN, if you're familiar with it, it's what they call web API. And it's part of these design things that exist in browsers that are amazing
Starting point is 01:31:58 things that I'd never heard of guys, like just killer stuff that you've probably never heard of. So one was like there's this uh what was it there's a payment request or or something like this payment form like basically what one of the big things that's happened in in a lot of companies keep metrics on this like i bet you you can bet your money that the Amazon does Walmart does, but I forget what the stat was that they threw out in this thing, but there was a study done that like 60 plus percent of people, when they go to buy something on mobile leave, because
Starting point is 01:32:35 when it gets to the checkout page, it's an absolute pain in the butt, right? Like you don't want to type in a bunch of stuff on your phone. And so there's this whole payment API thing on here to where if you implement that, which is, by the way, supported by a number of browsers and the browsers that don't support it, there's a polyfill for, but it'll actually pull up the payment instruments that you have available
Starting point is 01:32:58 that have either been stored on your phone or whatever, or in that particular browser. And it makes checkout super easy easy i don't think we've ever described a polyfill oh okay a polyfill let's talk on that real quick so if any of you unfortunately like we've had to in the past have to support something like ie8 right which unfortunately still exists for some reason somewhere out there in the ether. Just if it starts with IE, it's already like, really?
Starting point is 01:33:27 Yeah, I do. I'd so man, another tangent. So IE, uh, eight, nine,
Starting point is 01:33:32 10, 11, whatever. I ate eight. I think I was looking at was released in 2009. It was still being used, right? Even a year ago until they supposedly stopped support on it in 2016.
Starting point is 01:33:46 IE 11, which is the newest version was released like three years ago so we're talking about browsers right like there's security holes everywhere chrome has an update every other week firefox is the same thing they're like on version 60 and 50 and whatever it's crazy anyways and that's what a polyfill is. So, so yes, that's not a polyfill. So a polyfill, I apologize, coming back around. So a polyfill is when there's functionality, like new functionality that most browsers support, but there's a browser out there that doesn't support it yet. Somebody will write like a JavaScript script or something, a piece of code that will make that browser work like all the modern browsers. And so if you're ever looking like shims used to be a big one, right? There was polyfills for the old ones. And so like these, these payment, uh, a APIs and all that kind of
Starting point is 01:34:35 stuff, there's polyfills for that. There were really cool things. Like there was this, um, what did they call it? Enter something. Same in. Intersection observer. So this was an interesting one. If you've ever been to one of those websites or pages to where it has like the infinite scroll thing, if you want a good UI experience, a good UX experience, you don't want somebody to hit the bottom of the page before it starts loading up the more stuff
Starting point is 01:35:04 so that they're waiting once they get down there, right? So you can have this intersection observer where it will say, oh, this object is intersecting by X number of percent. Is it completely on the screen? Is it 80% on the screen? Is it whatever? And you can have it, you know, eager load some things or something like that. But what I'm getting at here is there were tons of features here that I'd never even didn't know existed because I never had heard of this web API thing. And there's, there's literally just pages of this stuff.
Starting point is 01:35:36 So I'll have a link in here. That's my tip to you guys. It was news to me and it's really cool stuff. Very nice. All right. my tip of the week is actually something i heard on ms dev show a long time ago oh wait i wasn't gonna mention another podcast so we'll leave that out we just fell off just kidding yeah fell off the wagon um anyway uh the idea there is sketchnotes which is uh just a way of taking notes where you kind of do some drawing and stuff and it's supposed to engage different parts of your brain. And just a better way of taking notes. And if you've ever seen any of the pictures, we'll have a link in the show notes.
Starting point is 01:36:13 The notes just kind of look like fun to take. So I always think about that when I'm taking notes with pen and paper. And there is something kind of nice and, I don't know, satisfying about doing that on paper compared to just, you know, notepad. So I just thought it was kind of a cool thing and kind of a cool idea for your next meeting. Although it does kind of look like coloring or, you know, it's like drawing pictures, which may not be cool depending on the meeting, your end, you know, if you're with the board of directors, whatever, maybe that's so cool, but it's actually just fun to look at. So you should go, go up there, look at it, see what the person has to say.
Starting point is 01:36:44 And they've got a whole system for um for kind of how to how to draw and how to how to emphasize the right things in order to kind of maximize your learning and also reuse of the notes so it's just really cool so you should go check it out good stuff all right well with that uh we ask that you subscribe to us on itunes to learn more using your favorite podcast app. Be sure to leave us a review by visiting www.codingblocks.net slash review. And while you're up there, check out our show notes, examples, discussions and more. And send your feedback, questions, rants and Destiny 2 clan invites to the Slack channel at codingblocks.slack.com. Make sure to follow us on Twitter at Coding Blocks or head over at codingblocks.slack.com make sure to follow us on twitter at codingblocks
Starting point is 01:37:26 or head over to codingblocks.net we can find all our social links at the top of the page and I'll be on Destiny 2 in about 30 minutes here so uh let's get to it

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