Transcript from the "Introduction" Lesson
>> Welcome to Enterprise Patterns, featuring TypeScript and what we're gonna do today is, we're gonna hang out and I'm gonna show you the patterns, more importantly, the mental models that I use to program enterprise applications. And so this is a little bit off script, but this is probably out of all the courses I've done.
[00:00:28] I am the most excited about this, because in the course of this workshop, I'm going to attempt to take everyone from ground zero. And incrementally built in such a way that when we're finished, that we will have arrived at the most complex type of programming that I'm doing right now.
[00:00:52] And when we talk about Enterprise applications and Enterprise patterns, I think the fallacy is a lot of individuals start to think of complexity. That we're going to introduce complex things to help us do more complex things. But in reality, when you look at patterns, patterns exist to eliminate complexity.
[00:01:23] And so, as a person progresses in a skill set, they start to build on their techniques, build, build, build. And then at some point, they start to realize that there's these patterns that exist, that they're starting to see repeated across a couple of different domains or context. And then eventually, they start to reduce everything into some core fundamental principles, that they use over and over.
[00:01:54] And so this is my attempt to share the things that for me, are for programming for 20 years, that I honestly believe ,that I could write down everything that I know about programming, and I do as a programmer on a single piece of paper. And so this could be flawlessly ambitious, but I do believe very much that it will be helpful.
[00:02:25] And so here's the Agenda. We're gonna talk about managing complexity. We're gonna talk about local complexity, which I will refer to as kind of micro complexity. And I'm going to introduce the axis of evil and so on. I've talked about this before, but we're gonna walk through this in a very specific fashion.
[00:02:45] From there, we're gonna talk about feature complexity or what I would call mezzo complexity. And I'm gonna To introduce the four elements of programming. And then, from there, I'm going to talk about application complexity and the fifth element of programming. And then kind of as a grand finale, that we're going to talk about how to take all of that and talk about distributed complexity, which I believe that, when you talk about enterprise applications at scale, especially with the cloud, what you are looking at is distributed complexity at scale.
[00:03:28] And so this is where ultimately, I hope to end up by the end of this workshop. And so there's some resources that I've prepared. And, if you go to this repo, then you can clone it and we are going to work through this. And in the read me, it talks about how to get up and running.
[00:03:51] The caveat I would say, is that, what I'm going to talk about, is framework agnostic? With that said, I'm going to use a few angular bits to just kind of hold things together and create some presentation elements so that we can help make the points or illustrate these concepts in a way that we can see it easier.
[00:04:16] So, this is the repo for the course, but [COUGH] I've also produced a few stack blitz, that you can just hop in if you don't want to download the repo. So most of what we're doing today, you can do just right inside of stack blitz. So the first section we're gonna talk about a refactoring example, you can go here, and then when we get to the fifth element, I'll be talking about time.
[00:04:44] You can also go to these links as well and work through those along with me. So I've done as much as I can to keep the framework piece out of it. Because I just want to talk about programming. And [COUGH] one other thing worth mentioning is that, we're going to be using stack Blitz for a lot of this in using TypeScript.
[00:05:09] And so if you just go to stackblitz.com, you can click on TypeScript and you can start a project and so let me hope into the browser. And i'll just illustrate this one point real quick. So we'll just go to stapplets.com and in this case because I'm logged in, you can.
[00:05:27] It's showing all my projects but you can just click on TypeScript and we have a blank TypeScript project. All right with that said back in to the slides. And now [COUGH] let's start at the beginning, and I'm going to set some context for the narrative arc. When I decided that I wanted to program, I was incredibly enthusiastic.
[00:05:57] And I remember that I decided that I want to be a programmer. Specifically, I wanted to be a flashpro programmer. We know how that turned out, but with that said, I went and I found the best programmer I could find. And I went to this person, I'm like, I want you to teach me how to program.
[00:06:16] And this individual was like, sure on, I'd be happy to teach you to program and essentially, this, my mentor was like, we're gonna do this and it felt a lot like I was painting fences, and it didn't make a lot of sense. And then my mentor was like, well, let's do this for a while.
[00:06:38] And I'm like, no like you don't understand I want to program. I wanna be a hacker and an elevator shaft, doing really cool things. I don't wanna do this. And so in my mind, [COUGH] when I thought of programming, it was kind of that hacker Individually that you see on Hollywood television, and that's what I thought programming was.
[00:07:01] And this individual wisely said, no, we're going to do these things and they were very repetitious. They were very mundane. And then, at some point, it was like, we're going to do these things to decide if it makes sense, it's gonna get weird. Really weird. And from there, I kind of I still I didn't understand like, why am I doing these things and the course of my arc in my progression as a programmer is I found myself doing things that didn't make sense but.
[00:07:39] I realized that we do this thing right here, these very intentional practices and these mindful practices when we programmer. So if you go read clean code or a lot of these old kind of perennial books on software engineering, there's a reason why they talk about doing code katas And the reason why you do for instance code kata is interesting they call it that is we do this for moments like this.
[00:08:10] There's going to be a time when everything is breaking, falling apart and it's a high torque situation and you're going to be very glad. That you took the time to commit to first principles in programming so that you can stand on the beach if you will, or in a low torque environment and pick these skills up, so that when you get in situations like this, it's muscle memory.
[00:08:38] And so this is [COUGH] something one of my favorite funded masters instructors will sentence. He is the master for first principles and really breaking things down to the core. And philosophically, I completely agree because you're going to run into these situations when you're going to be extremely glad, that you did this.
[00:09:02] And so, as we start on this course, in this workshop, the course of the workshop, that we are going to start with some very basic patterns, we are going to start painting the fence. We're going to wax the car. And I realize that making Karate Kid references that there is a contingent of viewers that may not even know about this movie.
[00:09:33] If you haven't seen it go check it out, it's awesome, but If we focus on these and if you'll trust me to go through these simplest examples. And I know that there's going to be some of us that are like look, I already know how to do this.
[00:09:50] I know how to paint a fence, I know how to wax a car. But at some point, everything is going to click, and it will connect. And, I promise that we are going somewhere. It's not going to be here. But, there is a very specific arc. And what I believe more than anything, is that as you progress as an engineer, that you start to reduce complexity.
[00:10:16] To a very few patterns that you use over and over and these are what I want to share with you, that has made me a very effective developer. After 20 years, I realized everything that I can do, I can write on a single piece of paper, and this is what we're here to talk about today.
[00:10:39] Should you start in the repo or in the stack blitz? Personally, I like to work locally. So I would start in the repo, just pull it down. But if for some reason you don't wanna do that you can follow along in the stack blitz, so it's just a way to give some individuals some more options.