 What's going on YouTube Lee Brandt here. I'm a senior developer advocate at octa today We're going to talk about five things that blew my developer mind. Let's check them out Okay, so one of the things that blew my mind early on Was this idea of programming to an interface now if you're new or you've never heard this before what does that mean? that means that I program with the idea of What what class I need and what methods that class needs to have what properties are going into it? And what's coming out of it with no regard given to how that's actually happening, okay? It's very easy early on to say I'm gonna send this into that object and it's gonna do these things with it I don't want to care about that. I just want to care about what the interface is what the outside of that Things look looks like so one of the best examples of this is the repository pattern I think the repository pattern starting to get kind of a bad rap I've heard developers that I respect saying that they're kind of over the repository pattern I think it's super helpful and one of the best places that I saw this was at a financial institution, so I Was a consultant for about 20 years up until about 2016 so I'm at a bank and When you go to work at a bank, there's lots of regulations around who can access what data and those sorts of things The big thing was the fact that the development team didn't have access to the database server So we couldn't create our own databases So we had to send off a request to the database team and wait till they sent us back the connection string information for the database now This particular bank is a very large bank and had lots of requests So it was gonna be you know It was probably a month month and a half before we got an actual database set up and sent back to us So during that time, we can't just sit and do nothing and we're not just gonna sit and shell out objects and I Want to be able to develop this application so what we can do is if I create like for instance an I person repository and it has a Create update delete read read all it has those methods in it and they take certain parameters That's all I care about What I can do then is until the database is created and this is what we did until the database was created We had one that was saving to a text file, right on your local development machine, right? So it's just saving out stuff to a text file reading stuff back up from a text file That sort of thing really helped us out Once we got the database all set up and everything was ready to go Now all we've got to do is replace those classes that implement the I repository interface And we're connected to the Oracle database. I think is what it was at the time so What the this programming to an interface really allows you to do is think about your application in a more modular way more smaller pieces And being more Disconnected the term everyone uses is loosely coupled So that's programming to the interface and it really the repository pattern, especially But that idea of programming to an interface. I think the repository pattern was just my first introduction to thinking about only the interface and not the implementation and It really kind of changed the way I thought about application development at the time So that's number one programming to an interface The second thing that blew my mind was agile software development at the time when I first got started with I guess it was scrum or just extreme programming at the time 2007 ish I got hired to run a team and They wanted it to be an agile team So they basically just gave me one of the only two books that were out of the time on Agile software development and said here's how we want you to run this team so I read the book started building the team and We were working through this and it was a little bit sloppy But I could definitely see some of the benefits and then we got lucky and hired someone who had just come from a scrum team and Had been looking into Kanban They've been doing a lot of reading about it and we got to talking about it quite a bit And I really liked the philosophies behind Kanban the whole pull system and one-piece flow And as we started to get into it, we had already set up a lot of these things around kind of scrum with The daily stand-up and then scrum the the scrum planning sprint planning meetings sprint retrospectives Relatively sizing things we'd we'd done all these things and we had a big board and we were really proud of it But as we started talking about it And bringing some of these ideas from Kanban in It really helped streamline the flow. So all of a sudden We were getting rid of things that normal agile software developers or practitioners or The the coaches the agile coaches of the time Would have considered sacred cows. We were slaughtering some of them We slaughtered some of these sacred cows because We were a team of four developers Well three developers in our database guy All sitting in a little pit together a four-man cubicle all together and One day during the stand-up Someone just mentioned What is the point of these? I mean The stand-up started to become Yesterday I worked. Well, you know what I worked on yesterday because you helped me with it And today I'm going to finish that up and then I'm just going to grab the next thing on the on the list But everybody already knew So what was the point of the stand-up? So we stopped doing stand-ups and I know that that would make most agile coaches have a stroke but it worked and a lot of it had to do with Kanban and just constantly Convolving and thinking about how you're doing things and what things are slowing you down What things provide no value what things are you doing that provide no value? And as I started to take that agile mindset From that team to the next team I was on remember I was a consultant for since 98 ish until 2016 so Almost 20 years as a consultant I Took that to my next team Someone else would bring up, you know, what is the point of this and if we couldn't figure it out if we couldn't Know do some Google searching or explain to somebody why we were doing something We would just stop doing it and it kind of shaped how I built things over the years the other thing that Kind of really just sat with me is just jumping in developing Means that I have to make changes easy because I'm going to be changing all the time So if I just jump in and start developing on a story, I mean there's planning that has to go in But it's just enough planning to get started and then once you get started with this and you start writing code You're going to find things that you didn't know or wouldn't have known to ask and then someone You know brings a change to you and you have to make a change the code Well, you're going to have to make that code easy to change Right because you have to change it all the time You're going to have to figure out a way to make the code easy to change which means that I've got I End up with more loosely coupled code because I'm like well I don't want to depend on that too tightly because they might change that So I had to think about those things in a different way and then it's a lot messier For sure, especially when you're getting started it seems chaotic and More messy, but I feel like it yields a better result one of the things that just really gets under project manager skin, especially if they're used to Gantt charts and you know like MS project or something like that is they are used to reciting the mantra of Plan the work work the plan right and One of the things that sticks out to me is that the plan changes So if you make a plan Not only are you making the plan at the beginning of the project when you know the least amount about it But even if you knew everything that you wanted to get done Things are going to change I think the coronavirus especially puts this all in Serious perspective because nobody expected that this was going to happen That we were going to be working from home and that all of these other things were going to be happening So there's no way you can plan for everything So if you just start off with I'm going to plan just enough to where I feel comfortable Like I can feel like I can start working on this now And then you start working on it and you start showing them little pieces of progress Your product owners the people who are in charge of making sure that what's going into the product needs to be there will end up coming to you and going I don't like this or let's change that and Two things happen one I have to make my project or my my software easier to change because they're going to be changing their mind all the time So I just have to make it easier to change which in turn actually makes better software more loosely coupled software The second thing that happens is After a couple of rounds of changes you start to get a better sense of where their head is at I mean we can sit in meetings all day long and talk about these kind of Esoteric things these these non solid things these ideas that we have But until we start getting in and actually building it and you actually looking at what I'm building It makes it hard for me to To figure out what you're actually talking about I may come out of a meeting after an hour of talking to you and go Yep, I got it. I know exactly know exactly what they're looking for and exactly what to build and I'll go off and build it and if I spend Six months building that and come back and go ta-da and they go that's not it I got it. I just wasted six months If I spend a day or two Kind of scaffolding out what I think it should be based on our conversations And I show it to them and they go that's not it. I wasted a day so it comes back to these small increments and Just kind of getting started and it's lumpy and a little Chaotic at first, but after a while you start getting into a rhythm and I feel like not only did it change my software development how I run teams How I how I develop software and how I develop as part of a team But it also informed me on how I do everything. I mean I run a conference here in Kansas City called KCDC and when I first got started that I took those agile principles and kind of baked them into Building this this conference and it was like okay I don't necessarily need to have a company in a bank account To take money in from sponsors. I can just start with the sponsors paying for lunch directly, right I Can start with one of the sponsors giving me a venue for free, right and starting small and we did 119 people the first year we had like Domino's for lunch and I think we even had like fruit for breakfast and that was it. No, we had Krispy Kreme's but Later on, you know now it's 10 12 years later now and we had 22 hundred people the last one And it was at the convention center downtown and we do now have a business set up at a bank account And it's a 501 C3. So we went through that whole process those sorts of things We didn't I mean if I does Spent time doing all of that up front. I'd have wasted years before even having a conference So when it comes to software development that thing not that agile software development not only Changed how I thought about software about how I think about everything in my life Just start small with start as soon as you feel comfortable that you got an idea what you'll want to do and just go and Interate on it change directions if you need to make it easy to change The more you change it the easier it's going to be to change period because you're just going to build that in So that's number two agile software development totally blew my mind change the way I develop software The third thing number three that Totally blew my mind changed the way I think about software development The rest rest API's building rest API's I can't remember when this first started becoming public or kind of a big thing I Remember talking about it in 2009 ish so Somewhere around there is when it first started becoming super popular That was probably a couple years before that that it started becoming popular and I I Don't remember how I came across it, but I came across the actual doctoral thesis from fielding from Roy fielding and Read it Highly recommend it if you're having trouble sleeping if you're an insomniac who doesn't respond to strong drugs Reading this doctoral dissertation Very helpful If I remember right it's chapter five chapter five is the one that really Kind of deals with rest Itself kind of defines rest the first four chapters or so they're talking about the problem and why Why we need a new paradigm chapter five introduce rest introduces rest API's and Then the rest of the book talks about how they fix those problems that we have the rest of the dissertation and So really if you wanted to jump right to it you could just jump right to chapter five I believe it's chapter five But really The thing that really kind of changed my mind Kind of blew my mind is the fact that it just made sense to me when I read it I read it one time through and it just I just kind of understood that there's these resources and I want to get one of those resources and I can tell you a specific resource that I want to get This kind of forces you to think about how your data is going to be used So how am I going to access that data? If I think about how I'm going to access that data It kind of informs what resources I'm going to make that people always say to start with the nouns That's fine, but you're always going to come up against one of these things where you're like, okay Well, is this part of that resource or is it a separate resource? I mean, I'm almost always going to use them together So if you're almost always going to use them together then maybe they're one resource, okay? So that's what I'm talking about when I say it forces you to think about how your data is going to be used in your application Now there's some downsides to to rest apis One of the biggest downsides to rest apis is the fact that it can be chatty. You're going to be Sending messages back and forth, especially if you've got a bunch of connected data that you want to get You're going to make a call this resource get its ID and then go get all the resources that belong to that resource By its ID and get all those and put them together So they can be chatty you can also get more data than you really want like I May get a whole book object when really all I want to do is display the title and the author and maybe the cover image I Don't need the ISBN or You know the forward or any of those things. I don't need those things back So that's another downside to rest apis because when you go to get a book you're going to get the book You're going to get the title the ISBN number the author You're going to get the cover art. You may get the back cover art The forward you may get you know The synopsis of the book I May not want those That's one of the reasons that things like graph QL are becoming popular Because you can kind of define queries that you'll want to run and then you really have to think about How you're going to be using the data on a page by page basis and you can it can still be stored as a resources and the data store But you're going to be choosing from the API from the UI or from the client of the API What data you want back, which is even better. So rest apis thing number three that blew my developer mind Okay, the fourth thing that blew my mind as a developer Is when I started using MongoDB Now it wasn't necessarily the no sequel database itself That was a game changer for me it just led me to Thinking differently about designing databases and This is also one of the things that's probably going to get the most hate in the comments below. So let's get started Designing databases for applications The way I think about it now after using MongoDB and it was basically a Mindshift that I had to get into when designing databases for no sequel Was I feel like there's two types of people when it comes to databases There's the data centric people in the application centric people now data centric people Believe that the database is the center of the application They believe that the application is just a data entry point for getting data into the database Hence you start with a database and you plan the whole database out. I can't tell you the number of years I spent in meetings planning databases planning database tables planning resources or Database relationships This is a one to many relationship and this is a many to many relationship and all that good stuff and I Found a lot of the time that the database can be one of the hardest things to change So It becomes one of those things that you don't change Like you design the database and then you don't You come across this thing. You're like, I really wish this was over here or I really wish that this was a little bit different But you don't go back and change the database Because it's going to be too difficult. There's already too many things touching it now. So you just write code around it you write code to Put together the data in the way that you want to see it and it becomes kind of complicated But I was firmly in the camp of the database is the Foundation of the application. It's the foundation on which the application is built So you start with the database and you plan it all out and you get it all good. Then you write your application against it When I started building for no sequel it's not that you couldn't do that with no sequel It's just when I first did a couple of like Video tutorials or blog post tutorials on how to design a no sequel database One of the thing first things they talked about was Well, there's no joins So there's no That joins are probably the slowest thing in a relational database and That's what no sequel databases are meant to do. They're meant to handle non-standard data and be fast Because generally one of the things that you're dumping into these no sequel databases, probably the biggest use I've seen for them so far is Log files. I want to get log files from four or five different sources. So they're not always going to be the same They're not always gonna have the same fields But I want to be able to go out and get all the ones that have a field called Start date and has a date between these two dates and These are the things that I need to make sure are Are displayable there And so you start thinking about For me, it made me change my mindset to thinking about the application as the center of the application Is the center of focus and the database is really just a place to store the state of the application So These are the two views the data centric view that is the database is the foundation it is the center of the application and the application is merely a You use user interface for getting data into the database It's just a data entry form for getting data into the database And then there's the applicant application centric view that says the application is the center of focus here and The database it just exists to store the state of the application at any given moment, right? so once I made that shift from Thinking about the database as the center of the application to think about thinking about the application being the center of the universe and The database just being a data store. It's just a place to store the state of the application. I Really started to change the way I Built software and it kind of lent itself to that agile mindset Even more where even now when I'm using a relational database I'll only design out the tables that I need when I need them I can start building the application without a database even available and I can start with a local database and just Change it as I need to and once I feel like I've got it where I want it to be then I can you know commit that code and I can build the database as A place to store data for the application And for me that was a huge huge mindset change and I just I remember feeling wow I Have always and when I first started talking to people about it Of course, I get lots of vitriol from people going Oh, you don't know what you're talking about man database is a center of the application database is the foundation On which the applications built you can't go just changing the database willy-nilly But I do all the time It's just fine Because I think about the application being the center of my focus and the database just being someplace to put the data And I don't care what that is. I don't care if it's no sequel. I don't care if it's a sequel database I don't care if it's a graph database. I don't I don't care if it's a document database or what kind of database it is I don't care if it's file store. I don't care All I need is someplace to put this stuff where I can retrieve it later and rehydrate the application To this specific state that I was at so application-centric Database design If you want to think about it that way Was number four on the things that really blew my mind and kind of changed the way that I think about building software Okay, number five The fifth thing that blew my mind as a software developer Was getting involved in the developer community I don't know what made me start doing it to begin with I am not a joiner Never have been I didn't belong to any clubs in high school. So I don't know exactly what made me Get involved, but I just started going to my local user group and after Seeing some of the presentations that were there and getting to know some of the people I felt comfortable enough to present something and I think my first presentation Was test-driven development in C sharp But once I started getting involved with the community Then you know, I started running the user group when the regular user group People weren't available like if they had work or couldn't make the meeting or whatever I could fill in and run the meeting and kind of emcee it Um to I ran it by myself for several years Um, then starting the conference the kansas city developer conference kcdc here in kansas city Um starting it and building it from 120 people that first year to 2200 last year um Going out and speaking at other conferences I mean once you start running a conference or running a user group you start to get to know The speakers who are coming to speak at your event. So then you start going to speak at their user groups their local conferences Um, and I started like traveling all over the world speaking at conferences and user groups Um, and just getting involved with the developer community And then going to conferences especially as the conferences turned from They used to be just saturday free events And it was code camps everywhere and then some of them started turning into real conferences And then some of them started turning into multiple day conferences So you're traveling to someplace staying in a hotel And you're staying with a bunch of other speakers And you're sitting around At the hotel bar after the conference day After all the activities are done And you're just talking to these brilliant people who go out and speak at conferences all the time And you get to have these really in-depth conversations about Software development that you can have nowhere else in the world except for with these people Um talking to people who wrote a piece of software that you use every day Is brilliant being able to talk to the people who are working on the visual studio team When you're spending your whole day in visual studio Is awesome I mean, that's an awesome once in a lifetime thing that you would not get Had it not been for being involved in the community The other thing it does is it builds that network. So I am never afraid of being laid off from a job ever And it's not because i'm super smart because i'm not And it's not because i'm a super Genius programmer because i'm not What it means is that I have a network that I can tap that is Huge from all the people I've met from traveling around and going to conferences And I can tap that network I can tap my network and just say hey just got laid off You guys all know me Ping me if there's something that you think is up my alley Um, there's no sending resumes back and forth No introducing yourself to people know that we already know each other and They know what i'm capable of because they work they've worked with me in the past We've talked so they kind of know where my interests lie and what things i'm best at And my network brings me jobs And the same with when someone else in my network gets laid off as soon as they let me know I just start Opening up all the emails that I received from recruiters and going okay, that one was very recent And it's pretty close to what she does so let me send that to her Usually it works out pretty well It's not just building your network for the sake of building your network and it's not just for jobs Building my network also means that my brain trust is larger So when I have to do something that I haven't done before chances are I know five or ten people who do that every day And I can just ping them and go Hey, man, um, I know you do this every day I'm here's what i'm trying to do Can you help me out? And usually they can so being able to tap your network for ideas um as well as for jobs is just huge so I highly recommend anybody especially if you're a junior developer you're just getting started And you're worried about going to user groups Um understand that yes, some user group topics are kind of advanced topics but they do a lot of intro level topics and there's a lot of beginning junior level programmers At user groups that you can talk to that you can get to know And kind of grow in this industry with them people who have known you for years I mean I some of my best friends are people I met at user groups or conferences or just Sometimes people getting together to have beers With people that we know from user groups or conferences So it's a mutually beneficial thing and I just wish I had done it earlier Number six On developer things that blew my mind the bonus one. This is this is your bonus track Uh, I'm trying to think of like a musical reference uh bonus track that I can't think of one off the top of my head, but Um, sometimes they're the best tracks on the album the bonus tracks. Sometimes they're real stinkers So you make up your own mind um And this is something that I had to come to hard And that is you don't have to be the best developer in the world Um, you don't even have to be the best developer in your local community Um I am not Super detail oriented. I think really good Programmers the most brilliant programmers that I've met and worked with Are super detail oriented and they get very frustrated with me because I'm not And they're like, well, what about this? I'm like, I I don't know. I hadn't even thought about that So Not being detail oriented to me And not having a hard cs degree. I've got a cis degree um But not having that hard cs degree that background in computer science I felt like I was always at a disadvantage but That doesn't mean that I'm That I'm never going to Progress as a developer Um, it doesn't mean that I'm going to need to go back to school and get a hard cs degree Or that I'm going to have to change my personality and become a detail oriented person What it does mean is that my value to a team Becomes a little different. No, not a horrible programmer I get things done and I improve and I think over 20 Power many years it's been since 97 23 years Over the last 23 years. I've gotten better And am now a pretty good developer But I'm not the best developer in my community And I'm not even the best programmer in the room most of the time But It does mean that I have certain other skills that I can bring to the team That make the team better Even if I'm not the Rockstar programmer, right? My biggest benefit for me is the fact that even when I'm deep in the woods I can still Because I'm not detail oriented. I can still remember The big picture I can see how this little minute detail that I'm putting together right now Fits into the overall whole So, um I think that was the big takeaway is that you don't have to be programmer of the year. You don't have to become Linus Torvalds or you know Dennis Richie or you know, you don't have to become one of these superstar programmers You can just be good And go to your job and be good all day And they will love you for it. So um That's my bonus track Okay, that's it. That's our Five things that blew my developer mind plus a bonus track. You got a bonus track You know how many times I wanted a bonus track for my favorite band Not that I'm your favorite band or anything, but You got a bonus track. So you didn't even have to pay for that one So you didn't have to pay for that any of them, but Thanks for joining me for these six things that blew my developer mind If you like this video, make sure you smash that like button down below If you're not already subscribed, please subscribe If you like this content, you'll get notified every time we put new stuff out Which is usually every tuesday and thursday. There's new videos out So you'll get notified and you won't miss them. Have a good day