Welcome everyone to the Azure Recruitment Messing Step in your Azure Transformation by Jacob. Without further delay, I'm passing to Jakub. Thanks, Jakub. Hi everyone. Let me just share my screen. And we're going to take it away. As Trisha mentioned, my name is Jakub. I'm originally from Poland, but I live in New Zealand now. It's nice late afternoon over here. And welcome. Today we're going to talk about Azure Recruitment, which I think is often the missing step in our Azure Transformations journey. Yeah, my name is Jakub. I'm the founder of Azure Coaching Club, which is quite unique training that I run for Azure coaches here in New Zealand. I've been an Azure coach since 2013. And since last year I actually moved to a role of head of engineering at Med Enterprises. And at Med Enterprises we are improving doctors' well-being. And today I will tell you a bit more about our journey of how we change our recruitment processes and what hopefully you can learn from this as well. And let me just start my timer so that I can track my time. All right. Before we jump into it, I must say that this experience of being here in New Zealand and you all around the world probably, I feel a bit lonely. It's very different from being in the same room, in a conference room where you can see people, you can see people interacting. So it feels a bit lonely. And that's why I would like to ask for your help so that you help me feel not so lonely. So I have three questions for you if you can open the chat window and just answer the questions in the chat that would probably help me feel less lonely and maybe help you focus a bit and warm up for the session. Okay. Question number one, what has been the highlight of the conference so far? What have you seen or heard in the conference yesterday and this morning that's been a highlight for you? What would be the one thing you want to take away from the conference so far? And yeah, if you can open the chat window and just paste your answer over there. Nice. Jeff's bottom, Terry's session, diversity of speakers, outcome-based approach. Nice. Cool. My next question for you is what is your hope for this session? What would you like to learn today when you join this session? Is it really the important aspect in recruitment? Nice. Understand what we miss or where we can improve. Awesome. The secret sauce. Something new, something interesting. What to avoid. How age are you recruiting? Yeah, nice. Perfect. I think I hope I can help you with that. Right. The last question, what kind of a person do you need to be in this session? So you joined this session, you know what your hope is. What kind of a person do you need to be in this session? Curious, open-minded, active listener, listening, curious, listen to understand. Yeah, nice. Perfect. All right. Thank you so much. Engage, interactive, responsive, flexible, adaptable. All right. I think we're going to make it work then. I will just turn my chat off. All right. Thank you so much for the engagement. I must say I do feel as lonely. I know there are real people on the other side of the screen even though I cannot see you. Okay. So age are recruitment. What is it? And why is it important? When you think about agility, we often think about teams. We think about collaboration. We think about cross-functional teams, teams consisting of people who can do, you know, deliver value end-to-end, who can ID, ID, DAs, who can do the discovery delivery, and who can do support, and people who trust each other, people who are transparent with each other, teams with psychological safety, people, teams where failure is okay, is celebrated, and we learn from failure. Right. So that's when, when we think about the GAT, that's often that's not the only thing that we have in mind, but that's often what we have in mind. collaborate, that spend time together, that laugh together, that, you know, hold each other accountable, idea ideas. Yeah, teams that are really awesome, and it's fun to be in. So this is the day to day of our teams. However, somehow, when we get to recruitment, instead of recruitment, looking like this, or like this, it looks more like this. Don't you think? Instead of having these teams that collaborate, that talk to each other, admit mistakes, and they'll transparent with each other. We have this us versus them mentality, we have this group of people that are one side of the table or screen. And there's the candidate alone, not really feeling very safe, not really being able to admit to mistakes or weaknesses. And there's the company who's trying to find the best candidate, the candidate who fits their role description, the candidate who, who's going to be next superstar. And there's the company that is often hiding certain things or not telling the whole story behind the company or what's happening in the teams. So we have this disconnect, I think, between what we want to achieve in our agile transformation in our agile companies, which is this and this, and much more, of course. But when it comes to recruitment, we end up here. We end up in this artificial environment when we're trust is not really easy to get, where there's almost no transparency when there is almost this acting game, you know, we the the candidate acts because they want to be hired. And the company acts, because they want to, to be chosen by the candidate, especially in the current market where we are fighting for the candidates. So I believe that in if we want to get here, have cross functional teams with trust with psychological safety with innovation, we cannot keep doing this, we need to change this. And of course, you know, this is an extreme example. But if you look at it, and we're going to explore certain aspects of it, you will see how much of this disconnect we have. So in order to, for us to explore it a bit more, we're going to route the whole discussion around the modern principles. These are not my principles, they came from Joshua for principles, they are not supposed to replace agile manifest, but they are kind of the modern version of we have principles like make people awesome, make safety a perk with it, experiment and learn rapidly, the river valley continuously. And if you think about recruitment, and that's happening in your company, how you were recruited, how you recruit people to your teams, how the leaders you work with, how they recruit people. I wonder if you reflect on these principles, how many of them you could say, yes, we follow these principles in our recruitment process. Yes, we are really aligned with these principles. Yes, we are making people awesome. Yes, you're making it safe during the interviews. Yes, we experiment and learn during the recruitment. Yes, we deliver value continuously. I'm arguing that it's not really common. First of all, we don't really reflect on that. We rarely look at how can we make our agile processes more, our recruitment process more agile. And second of all, we don't look from far through the perspective of these principles. So I want to give you a bit of foot for foot. First, we're going to go through these principles. Then I will show you some of the principles that we adapted at my enterprises, and that we use to hire our people, our engineers. And then at the end, I will also give you some specific tips and tricks, techniques, tools that you can use that you can introduce in your processes. And hopefully you can help build the culture you want to build. So we are going to start with making people awesome. How can we make our candidates awesome? Right? How often do we even think in this way? If you think about this, it's often, unfortunately, often the hiring managers and recruiters, they are, they have almost the opposite thinking, you know, how can we find all the weaknesses of the candidates? Because if we know the weaknesses, we will be able to decide if they are, if we can hire them or not. Instead of looking for strengths, you often look for weaknesses. We find this tricky question or gotcha questions. We try to kind of catch the candidates on the way, how they maybe make mistakes. We rarely try to make candidates awesome. It's very, very unusual, I would say. And you know, how we treat them from the moment of when they apply. How soon do we reply to them when they apply? Often takes weeks, often they don't hear from us for days or weeks seriously, even if they ask us for feedback. We don't give them feedback. Is it making them awesome? I don't think so. Another aspect of it is that we often, when we think about job descriptions and the job ads that we have online, they are almost like a box. Imagine that these job descriptions, these job ads are like a box. So in the box are all the things that we want from a candidate, right? The perfect candidate would fill the whole box of these requirements. And when we go through the recruitment process, we try to find out how is this person fitting into this box? How much of the things that we want to be in the box? How much does this person has? And fortunately, I would say, people are not boxes, people are like these blobs, right? We have different set of experiences, interests, passions, knowledge, we are not squares, we are not boxes, we are blobs. And when you overlay this blob over these requirements, often as a candidate, we have some things, some experiences, some knowledge that fit into the box perfectly. But some of it is way beyond the box. Imagine, you know, we are looking for a front end developer.  Do they know React? Do they know TypeScript? Do they know Storybook and some other tools for testing and other stuff. And we are in the interview process, we are going to ask for proofs that this person knows everything that is in the box. But often because we are focused so much on the box, we don't see the things that are around the box. So this person may be passionate about UX design, about user interviews. But because we are so focused on the box, we might miss that. We might not even ask questions about that. We may not give the candidate a chance to tell us, hey, I'm passionate about UX design, and I can bring the skill to the team. And this means we are missing the wholeness of a person, because we are so much focusing on the box. What makes people awesome is allowing them to show us the true self, everything that they can bring, while we often focus just on the box. And what it also means is that we often, because of the box, we hire the same people again and again and again. We lack the diversity. And I don't mean diversity in terms of race or gender. I mean, thinking diversity and experience diversity and mindset diversity. Right. We it is proven that we hire people that are just like us are very similar to us. That's why if we start looking outside of the box, we might start hiring people that are different than us. Because we created the box often. Or the hiring manager did and they hire people like them. And the same as name. It is true. We need people with diverse backgrounds, with diverse experiences. So how can we make people awesome? How can we make environment where they can tell us, hey, I know this stuff. I know you didn't ask about this time in your job ad. But I know all of this, this richness of experience that I can bring to this team. All right, make safety a perk was the second principle. How can we make the candidate feel safe during the whole process? And how is it right now in your companies? I know from my experience that there were many like majority of my experiences where they I didn't feel safe. I couldn't say that I failed. I couldn't say that I'm making a mistake during the interview. I couldn't say that I changed my mind. I was afraid to ask about the salary range. I was afraid to say that the offer was not good enough for me. I was afraid of the feedback I'm going to get or maybe that I wouldn't get any feedback. So there was a lot of insecurity and I didn't feel safe in these processes. How can we change that? How can we help the candidate to feel safe during the whole process? Because then again, then they can be awesome. Then they can show us the true self and we can truly understand what they can bring to us. And what about delivering the value continuously? Just as in Azure Manifesto, we have working software over comprehensive documentation. We say that because documentation doesn't matter how good it is. It doesn't provide any value to the customer. Only working software is the true value. Similar here, just talking, hearing the answers. It doesn't really give us a good picture of a candidate unless we are able to experience real life scenarios through collaboration. Because remember, we want this person when they join us to join cross-functional teams when they need to collaborate, when they need to learn as well. Sure, they can tell us all the stories from their past. But stories is like this documentation. Only true experience or true collaboration during the process can tell us what this person can do and how they behave. Talking is cheap, but action is hard. And lastly, sorry. And often when we ask people questions and we ask them about their previous behavior, you know, tell us how we resolve conflict. They already tell us about past behavior. And past behavior is not the best prediction of the future behavior. The best prediction of the future behavior is their present behavior. So how can we get people to show us their current behavior? Because only because someone told us that, hey, I had this conflict with a colleague, I resolved it and I learned all of these beautiful things. But did they really? How can we create scenarios and situations where people can truly show the present behavior? Can you, for example, ask people as your candidates to join your team for a day? And you pay the candidates because otherwise it's not really fair. They often need to take a day off leave. They join you for a day. They sign all the MBAs they need. You pay them for this work. And they work with your team for a day. And they get a chance to learn about the team. The team gets a chance to learn about them. They experience stuff. You can observe them how they behave, how they show up in this team, which is very different from asking, what would you do on your first day? Right? You can see the difference here. So again, experience real life scenarios through collaboration instead of just talking for the process. And lastly, it's about experimentation and learning. How can you experiment and learn together with the candidate? What's learning over there? Because you want them to learn when they join you, right? You want them to tell you, I don't know. You want them to experiment. But often the recruitment process is so rigid. We have step after step after step that we ask the same questions to every candidate. We don't allow any agility. We are not able to respond to change. But different candidates have different needs to be able to show that they are awesome. How can we experiment and learn together? I will be showing you some examples how we can do that. And to give you also an example, while learning is important, here is a quote, our message I got from Ray, we hired Ray last year. And after Ray wasn't looking for a job early, I reached out to him, I could see he had great experience, I reached out to him, he, he decided to have a chat with us. And after the interview, that's the message he sent to me. He said, I actually learned something about myself today. I also learned a few techniques for running the grade interview. He learned about himself. How often can your candidates tell you, I learned something today in their interview? If you design the interview of the whole process, well, then they can say, hey, I learned something today. Even though we and we had a number of candidates who we didn't hire. But they're really, really happy that they, they were part of the interview process, because they said, I learned something, I learned something about technology, I learned something about myself, I learned something about the W company, they are learning. So the time they spend with us is not wasted. It's actually an investment into the learning process. Let me just get some water. And even if you don't, you know, maybe you don't follow modern Azure principles, or you have some other set of values. And you know, in our companies, often we have these posters on walls or wallpapers on screensavers, where all these beautiful values float. Like we talk about being open and and we trust and we, we are customer obsessed and we have collaboration, we believe in transparency, fun improvements, all of the beautiful stuff. But when it comes to recruitment, how open are you? How trusting are you? How candidly obsessed are you? Do you look for improvements? Do you look for collaboration, transparency? Is there space for these values in your recruitment process? Often there's not often recruitment is like the silo that we leave for the HR department and hiring managers, and they repeat the same patterns. They hire people the way how they were hired. How can you change your culture? How can you change how people behave? How can you change the mindset in your organization? If you don't change how you hire people? And how can people believe in these values? When they join you, if you didn't follow them during your interview process, they will not believe in them because they couldn't experience them. And you need them to experience these values from day one. From the time they see your job at, that's, that's the place. How does your job at look like? How's your process from the moment someone applies? How long do I need to wait for a reply? And what's the reply setting to them? How do you give them feedback? All of the things that design the whole process should reflect your values. Okay. I hope it got you interested and got you thinking. I will get more specific now bit by bit and show you how we apply it at med enterprises, what are some of the techniques? And yeah, we're gonna debut at the end and there will be time for questions as well. Okay. Here is, I've got two screenshots from the conference page in our company. And here are the principles we use when you do recruitment. A part of them is hire for culture at not just culture fit. And culture fit is this buzzword we use all over again, like all the time. We need culture fit, we need culture fit. But what if our culture is not great? What if we want to change culture through our transformation, right? That's part of our transformation. We talk so often, we need to change the culture, the culture, its strategy at breakfast, for breakfast, all of this stuff. But then we talk we hire for culture fit. If you keep hiring for culture fit, you will not change your culture. You need to hire for culture and as I will say, that we try to see how the candidate can add to our culture and change the culture in the direction we wanted to change. So not culture fit, how they can change the culture, how they can help us change the culture. Okay. Second, we talk about being equal partners. So we are equal. If we ask them questions, they need to have time to ask questions to us. If they invest time to meet us, we need to invest time to meet them where they are. We are not above, below the candidates, we are equal partners in this interviews. We are not better, which is often that's what's perceived like we are often we see ourselves and the candidates can see us as kind of having higher status. How could we lower the status? Because again, we talk about, you know, flat organizations and destroying the hierarchy in your organizations, but in recruitment, there's a huge hierarchy. We are often as hiring people about the candidate, how we can make it a bit more even or even like truly even if possible. We often also, we often, we also believe in and that the choice is made both ways. So it's not only us choosing the candidate, it's also the candidate needs to choose us. What we want, we want the candidate to be certain they want to join us. We want them to say, Hey, yes, absolutely, I want to join them. We don't want them to have any hesitations. Because if they feel lukewarm, it's a recipe for disaster. They will quit very quickly or they might. And if they if they're lukewarm when they join us, if they have some hesitations, this will just keep growing. It's really hard to get from there to through excitement to through engagement. As we hire them, when they say, Yes, I absolutely want to join you, then they are at the peak of the engagement and we can just help them stay there. And something similar to making the candidate awesome, we call it the candidate is the star of the interview. They should be able to show the best version of themselves. We spend some time in the interviews making sure the candidate is comfortable. We also are going back to to being equal partners. Often the interviews are going back to here, sorry. We would often, you know, ask the candidate something about yourself and they, you know, have five, 10 minutes to tell us something about themselves. We often don't tell them about ourselves, about our programs, about our desires, about our experiences that we bring to this interview to the team. So we would always start instead of asking, tell us about yourself. You will say, Hey, let us tell you something about us so that you know who you talk to so that you know why we are here. So yeah, we spend some time going back to the big the candidate being the star of the interview. We spend some time helping the candidate feel comfortable. We ask them, do you have something to drink? If they are, especially if they are remotely, you know, if they are in the room, we actually bring water for them and you ask them, do you need anything else? Would you like to have a couple of minutes just to breathe? And yeah, do you have some water? How do you feel right now? We give them time to think as well during the interview. I will talk a bit more about this in a moment about how we often, how we tend to make the interview much easier for extroverts than introverts. We avoid gacha questions. We make sure that every question we ask, we are able to answer these questions and we feel comfortable answering these questions. And we set up working agreements, which is a big part of making sure that the candidate is comfortable. So at the beginning you would ask, what needs to be true for you to feel like a star of this interview? What needs to be true for you? And people often say that at any time to think that they are shy, that sometimes they don't, maybe they are English in their second language, like it's mine, and they sometimes say, hey, sometimes I don't understand what people say. And that's awesome because now we know, okay, we know what environment we can create, what to watch out for so that they can feel better in this interview. Like we have working agreements for our teams, why wouldn't we have with our candidates? Okay.  Hey, it's okay to make mistakes. Hey, we will tell you when we disagree with you. Are you okay with that? And we create these working agreements, how to make this environment better for them. And then the last principle is that we follow is looking for growth mindset. So not only what they can do now, but how they can grow, how they want to grow. What are the interests for the future? And I will show you a couple of techniques so we can look for that as well. I hope you can see already how it's different from your typical recruiting processes, how it can change who you hire, how you can change what sort of values you show, you present through this different process. All right, let's talk about some examples.  So using real life examples as the interview mechanism. And I think one of the worst things, but also what's very common is asking the candidate to perform, for example, a software engineer, asking them to do some coding like during the interview for like, have an hour, an hour, and everyone observes and then they do this coding on their own. But I think it's terrible. I think it's really terrible because it has nothing to do with real life experience, real life scenario. It puts the candidate under a lot, like, a lot amount of pressure. And it doesn't look like this when they join, right?  If anything, they would be collaborating, they would be more programming. All of them would be throwing ideas out. Or they would be pair programming, working together and bouncing ideas together, exchanging ideas, pointing out what things can be done better. It's never that there's one person sitting, it's not of a monitor doing programming while everyone is watching. That pressure is not needed. It's not natural. If you want to have sustainable pace, you don't have this pressure. So why do we have this pressure during the interviews? Some candidates they cannot be the best version of themselves in this environment. That's why asking them, if you really want them to do some coding maybe, and if you cannot invite them, best scenario, invite them for hours, four hours a day to join your team. And actually work on real port together. Do a more programming session, do a pair programming session. Do take design together. I don't know what. But do something on real code, that's the best scenario. If you can't do that, we found that asking people to do some coding before, maybe giving a code cut or some example that they may encounter when they join you. Doing it, asking them to do it on their own is much better. Because they can be relaxed. They can ask friends for help. And that's often what we are afraid of. Or what if they ask a friend for help. Or what if they Google the solution? That's also.  You want them to be able to use their friends for help. You want them to bring the safety net or this pool of resources with them to your company. Don't you? So even if they ask for help, then of course you talk about this code with them and you have a discussion. What do you agree with them? What do you disagree? You ask them why they made this decision, why they use this design pattern over the other one. You can ask them how would you automate this stuff? How would you deploy it? You can have this question to better understand how much they truly understood or didn't understand. How would you act and trust? I trust you that you will put the best version of yourself into this code. Just spend maybe maximum two hours on this and let's have a conversation later. Another thing is collaboration. We talk about ownership and teams owning their processes and teams owning the function of data and the quality and deployment and support. But somehow we often forget that the team should also have a hiring process or at least be very, very involved. If we involve the team, if they get a chance to have their say about who we hire and how we hire, they will own this. They will own the onboarding of this new person. They will own the success of this person. Because they have chosen this person, that's part of their responsibility now. It's very different from a chapter lead hiring people and dropping them into teams. It's very, very different. Since we work as a team, let's interview, let's recruit as a team as well. How can you bring more people into the recruitment process? Because again, going back to diversity, hiring managers hire people like themselves. The more people you bring to the interview process, the recruitment process, the more diverse set of people you can hire. And what about safety? How can you enable safety? Part of the working agreements, we tell the candidates that it's okay if they want to stop the activity and reset it and start from scratch. Sometimes what happens is that they would give us an answer or they would start writing some code and they would realize five minutes in that, hey, I actually would have started it differently. And that's okay. We want to hear that. We want to hear when they say, hey, maybe I made a mistake. Can I correct that? We want that. We want that. That's the perfect mindset. That's what we want to hear. And when they say that, we say, hey, yeah, let's do it. Let's start from scratch. Let's rewind. Similarly, we ask them for permission to interrupt them and to stop them. For example, when we disagree, when we think there was a different way to do something, we say, hey, you know what? You'll do it differently. Can we start with writing passwords? Because that's what we do. And this builds trust. This builds understanding how we approach things, how they approach things. So when we want them to choose us, they know how it works. They know what we think. They know what decisions we make. That's an able safety. Safety for them, safety for us. And we also, we are very, very clear about that from the very beginning, that it's okay throughout the whole process, and especially during the activities that we do with them, that it's very, very okay, is actually expected for them to say, I don't know. And we celebrate when they say that they don't know stuff. We say when we don't know stuff. And that's, you know, huge value of an able safety. We tell them, we expect you to say you don't know stuff when you don't know. We don't want you to pretend. We don't want you to guess. Tell us you don't know something. We're going to either move on and we'll help you. We'll maybe guide you through your process thinking. Okay. Allow them to say I don't know. But make it very explicit. Don't assume that they know that they can say I don't know. Actually say we want you to say I don't know if you don't know. And then when they do celebrate it. Something I mentioned before is how silence is important. If you want to have diverse set of people, if you want people to be the stars of the interviews, we need to allow them, we need to cater for their personality types. And often in their interviews, especially when there's a lot of talking, people, good people in talking like extrovert, people who love, who can storytell, they are great in interviews. They are often, well, not always, but sometimes they're not so good at actually work. They are good at talking. We don't want them to be so good at talking. We need them to be good at what the job is about. And we often miss out on some of the more introvert people. Who need time to think? Who need time to reflect? So that's another thing we make sure we do. We tell them, hey, if you need time to think, we can sit in silence with you. That's okay. And we will. Because we want them to have time to reflect. Again, going back to software engineers who don't, their job is not about typing. They're not monkeys just typing. Typing is just a side effect of what they do. Their main task is problem solving, through thinking. And they have great ideas when they take showers, when they make coffee, when they go for walks. They're often alone when they can deeply think and reflect. And often that's missing in our recruitment process. We don't allow for that. Because we are, we have this very very rigid plan. We need to go for this 10 questions or these free activities. And we need to rush for it.  And we are gone. And these people, they don't have time to think. How can we change that? How can we extend the time by 15, 20 minutes? Why not? All right, now I'm moving on. We have 8 minutes left. I'm going to go for a different set of tools. I hope that they can be useful for you. Personal Canvas is one tool where you can allow people to actually reflect before the interview and bring something prepared. This is a set of questions we ask them about. We tell them you can interpret these areas any way you want. Just bring it with us and we ask them in the interview to give us the highlights. It can truly tell you much a lot about who they are. And here is an example of a field Personal Canvas how it could look like. Another tool that we use is called Moving Motivators. You may know it from the Management 3.0 toolkit. We often use it with teams to talk about what motivates them. But you can also use it with your candidates to discover what their inner motivation is about. So we can use the physical cards, but we also can use it remotely. Here is a screenshot from our mirror board. You can see at the top is a frame for Thomas who was our candidate and the bottom there is also a frame for me as a hiring manager. Again, equal partners not only they are doing the activities and telling us about something that is very deep and true for them I will share what is true for me as well. And if I have another person with me in the interview they will share what is true for them as well. Because Thomas in this case needs to know if he joins my team he knows that my motivators are curiosity and goal. And you also say it's okay if we have different motivators than I do. That's actually great because it brings diversity again. So here we can say see we asked Thomas out of the 10 motivators what are your two strongest motivators and two weakest motivators. And we have a conversation about that. Why is it important for you? Why is it not important for you? What does it mean for you? And we can better understand who they are. How they work, how they think, what they feel. And they can better understand us. So at the end again they can say I absolutely want to join this team. Another tour is called career forecast which is basically mapping people's experience and interests. So you have these two dimensions. One is the vertical one is about what they like to do and what they don't like to do and the horizontal one is about the level. Here I have an example from maybe two or three years ago when we were hiring a scrum master. So we would on a piece of paper we would put main responsibilities. It's usually somewhere between 10 or 15 pieces of paper or post-its. And first we ask the candidate can you order it like the backlog so two things cannot be at the same level. So it needs to be ordered from the thing that you like the most that you like the least to do. So that's how it looks like. So you can see that this candidate said that hey what I enjoy the most was facilitation of scrum events in teams other than mine. That was super interesting. Why was that at all? We could ask these questions. We can also see that the fourth item here on the list is upskilling that they added themselves because we asked them what's missing here and where would you put it. So we allowed their input here. Upskilling was really important for them as a part of role of scrum master and it was really awesome to learn. And that's what I didn't like to do. We could explore that as well. Why was that? And then we asked okay with this in mind move the post-its the pieces of paper to the level to the right things that you can do and that you need to help with. And now we can see okay we will need to mentor this person in this area and how this person can help us what sort of help we need to bring to them. Here is another example the setup here is a bit different this is a mirror board but we did something very similar on the bottom right we can see there is infrastructure as a code that this person was really interested in learning that but she was not really experienced with it which means that if in our team we get a chance to work with infrastructure as a code we need to provide mentorship for this person but if we don't have a chance to work with infrastructure as a code this is our team the best person the best place for this person maybe there is another team that deals with infrastructure as a code and this person should join them instead of us so this allows us to explore different dimensions of experience and desires and passions emotional culture that's something I talked about two years ago at this conference so maybe that's something to look on YouTube this allows us to talk hey how do you feel in this interview how do you want to feel like this team and again I would do the same how I feel as a hiring manager in this interview and how I want to feel how I don't want to feel that's something to check out invite and operate by invitation give them a range of five different activities and ask them which one should we do respond to change respond to their desire respond to what they choose was going to help them show the best version of themselves and debrief with feedback seriously make sure there is ten minutes five ten minutes for feedback and ask what did you learn tell them what you learned what did you learn about yourself today what did you learn about the role, the team, the company this can be a very useful feedback for you ask what would you improve or change what could you improve what we could improve or change how can you improve the process and how would the improvement and change impact you and why does it all matter because it allows you to live your values it shows that it care for your people it invites people to engage it creates space where everyone shares and learns and creates real diversity and going back to my initial point you hire for a culture fit you will not change the culture maybe you should consider hiring for culture to transform the culture I can see we are almost at time so I wanted to ask you for one idea that you would like to try but I think we are going to skip that to make sure we have time for questions here are some resources you can check out later I'm happy to make the sites available and thank you what questions do you have Thanks Jacob thanks for the session and in Q&A I would see one question so there is a question by Prashant who is asking As per my understanding of what you said it is okay to allow the candidate to take help like googling rather than having a college exams type interview but the point is how can we be sure if he or she can use their brain when needed rather than seeking the help and support for everything in such scenario we would like to know how she or he can deliver without any help and support because an agile people is very busy hmm but would you turn out their internet would you not allow them to use google or suga overflow at work or github that's a question for me I wouldn't people can use google all the time so why wouldn't you allow this during the interview if you truly want to check some sort of analogical thinking maybe make a small part of your interview process about that but it should be an exception it should be the whole thing you should try to interview as close to the environment you have at work because you want to see how they behave in that environment I may not remember how bubble surf works but as long as I can google it and implement it that's what you want that's how you get velocity of work that's how you have you hire people who can do their job not only who know all the algorithms possible on the techniques these are the true people who know how to do their job I hope it helped Prashant thank you bye


On today's Visual Studio Toolbox, Chris Woodruff and I are going to start our conversation on how you build web APIs. Hi, welcome to Visual Studio Toolbox. I'm your host, Robert Green, and joining me today is Chris Woodruff. Hey, Chris. Hey, Robert. How are you? Good. Welcome to the show. Thank you. Welcome to the cozy confines of Studio B. It's great. Yeah, it's intimate. It's like there should be a fireplace in here. That would be awesome. Yeah. Cozy fireplace. Although it's 90 degrees outside, I'm not sure how much we need a fireplace right now. But come wintertime, that would be handy. You may. You may. Chris is here to talk about web API. Yeah. This is an interesting topic. So web API is basically the modern way of having services running in the cloud that serve up data, typically. And we've done this before. We've had azimx web services and WCF. And then there was web API, which is restful. And we've been doing this for quite some time. Lots of way. RPC, way back in the day. Yeah. But I think it's getting a little bit easier to do. And we're going to look at creating them using ASP Core, which is we'll wind up being faster. .NET Core is really fast these days. We'll talk about how you create them, what they look like. So if you're somebody like me who's kind of coming from the WCF frame, I've written a lot of WCF services. I have a bunch of existing ones that I would love to turn into web API. How do you build a web API? What does it look like? What's the plumbing, the routing, and all the rest of that? We'll talk about that, where you would put all your logic, what that looks like. The benefit, of course, of the web API is that it gives us our world where you have a service running in the cloud. And any client, any client at all, basically passes it a string with a request. The service reads that string, goes off and does whatever it does, whether it's written in, whatever it's written in, who cares. And then packages up your data, sends it back as a string, typically in JSON format. And there's really cool tools for working back and forth between JSON and C-sharp.  Everyone can do that with JavaScript. JavaScript uses JSON. The problem with WCF, of course, is it relied on SOAP, which is powerful. But then your client had to have knowledge of SOAP. And if your client didn't, then you would have to write that support yourself who wants to do that. Web API is just completely open and neutral. So we are leveraging the power of the internet. So we're leveraging HTTP. So everyone uses HTTP. So we're actually going to leverage the HTTP calls. So in a sense, you hit the nail on the head. A string comes across. But there's also another piece of information that comes across with it. That would be the HTTP verb. So we have to know if, just like SQL, some people don't like to talk about HTTP and REST with the SQL kind of the idea. But for some people. Get is select. There's a put. There's a post. Add is insert, update, delete. It's crud, right? Whatever the verb is, so what? I do. Because for people that are coming into the RESTful world, it makes things a little bit easier to show them, maybe use some of their knowledge that they have from T-SQL. And then they can kind of understand to be a little more comfortable in the HTTP world. So yeah, so it's actually really easy. They have made, I mean, the ASP.NET Core team has made things extremely simple. All right, so prove that. Prove that. That's a great segue into demos. Prove it. Prove it. Let's write ourselves a web API. So we're going to write an API that connects up to. Is the mouse working? There we go. Uh-oh. This is why the clock's hidden, by the way. There we go. That was strange. OK, I'll pause a little bit. So we're going to build an API against a database that Microsoft created a number of years ago. It's called Chinook. You ever heard of Chinook? So Chinook. Delicious salmon in addition to being a sample database. It is. I love the salmon. But Chinook is a database that has, it simulates a online music store, the front and back.  And it's much more interesting than North Wind. Yes. Anything's more interesting. Sorry, but anything's more interesting than North Wind in bicycle parts. So I'm going to use Chinook. And I actually, Chinook went away. So I don't think Chinook. I have it on my GitHub because it was going away in what's the old of? Going away. I thought data never dies. Well, it doesn't. But what's the old of? Coplex. So Chinook used to be on Coplex. And then it went down. You can still get it, but no one's updating it because Coplex can't be updated. So I grabbed everything. And you can find it out on my GitHub repository in my space. We'll put a link to that in the show notes. So let's do this. So it's really simple. So start like everything. We're going to start with a new project. So we're going to go under .NET Core. And then we're going to do ASP.NET Core Web App. And I'm going to change over and let's browse. Because I like to use, I always put things in my projects folder. And then let's just call it Chinook Core API. Pretty simple. So we're going to say, OK, we've got the next stage. And this is going to be an API. We're going to use ASP.NET Core 2.1. And for this demo, just to make things easier, I'm going to turn off HTTPS. You can leave it on. I mean, you need to leave it on when you actually build something for production. But to make this demo, it's just one less thing I have to worry about. And we're going to show that. If you're making a public API that anyone can use, would you need HTTPS? Yes. Yes. Because remember, Google and with Chrome, and I think Microsoft with Edge, are setting it up where those browsers, if you don't use HTTPS, you'll start getting warnings. Or people accessing your API, well, mostly websites, will start getting warnings from browsers. So it is good to use HTTPS. If nothing else, it's all encrypted between your API and whoever's getting it on the other side. OK. OK. So we're going to say, OK. It's going to stand up everything. Let it figure it out. Let it pull all of its dependencies in. OK. So what I'm going to do to begin with is the project always comes with some initial controller and some initial logic. I'm just going to delete that. We don't need it. And then the other thing is under your project properties, if you go to debug, you will find that there will be an API slash values. Because when you first launch your browser, it wants to go out to that controller that initially created. But we don't want that controller. We're going to create our own. OK. So I'm just going to say API slash. So let's save that. Now we're at a good starting point. So I have a number of packages that I have to install. And again, I copied them from a text file. And we're just going to bring that text file in. Let me go grab that. And so we're installing all the packages that we need for entity framework core. So SQL Server, SQL Server Design, and then entity framework core tools. So you need that, especially when you have an existing database that you're going to be generating your models on. And I like having, I like using existing databases. I'm not really a code-first type of person that does migrations and stuff. I was a DBA for a couple of projects. So I like having real databases that are fully tuned and that run well and have good indexes and stuff like that. I'm old fashioned, I guess. OK, so we have everything that we need. The next thing that we need to do is we need to use a command called scaffold-dbcontext. And I'm going to copy this in. I'm going to paste this in. And I'm going to explain what it is. So it's a command that will generate your dbcontext in all of your entity models. So you give it that command. And then you give it your connection string. So I'm going to run off of a local database. And I'm going to use trusted connection. But then you have to give it the type of database that you're going to be using. So that's where it comes in. And you have to say Microsoft.NEDFrameworkCore.SQLServer. Just say, I'm going to be using a SQL server. If you're using Azure SQL, use SQL server. Same thing, just SQL server. And then the last thing you need to do is give it a parameter called OutputDur. And OutputDur is where you want all of your generated code to be put. And I just say dash outputDur and then space models. And that will create a models class in your project. And then it will put all those new generated files out there. So we're going to run that. It takes a second to go through. Don't worry about that. Sometimes you will have that.  So I've had this. I might have missed this part, but where did you tell it what database you were using? So in my connection string, if you take a look here, I have a server, just server dot. And so that just means the local SQL server. And then I have a database just called Chinook. And then I just say trustedConnection equals true. So it's really simple. But you can have a little behind the scenes here. I can't really read that text. Yeah, sorry, no worries. I can increase or I can fix the resolution, I guess. That's good enough. Go ahead. So this will generate all of your models. So at this point, we have our Chinook context. So it should be very familiar. Yeah, and so far, this is pretty standard stuff. It's NEDFramework, right? From NEDFramework6. So it's pretty much the same thing. And if you know NEDFramework6, you should know 99% of Core. So it's pretty, I will say Core is still a subset of, in some ways, a subset. It has some things that 6 doesn't have, but it has lots of things that 6 has that hasn't been brought into the library. And then just a side light, you've got the warning with the squigglies because you have your secrets buried in your code. We did an entire episode on secrets management. I will do that. I always do that because I like to hide my secrets. All right. So we did a whole episode on that a few weeks back. Well, that's awesome because that needs to happen. So we're going to. Would you leave it in there for now, if you want to? Well, actually. Unless you want to do it. Right now, I can just delete it. We're not going to worry about it anymore. Because I'll show you how we take care of it, which you may have already shown in a previous episode. But I'll go through it again for a few more minutes. That's worth repeating now, if you want to show it. So we have this. We have our generated files. Now we're going to go and we're going to work on our startup. So startup.cs is the new core way of standing up all of your services and doing your dependency injection and stuff like that. But first, I'm going to go to my app settings.json. So app settings.json is kind of like, if you remember the old web.config, you can keep a bunch of stuff in there. Well, app settings.json is a JSON file that you can put stuff in there that your project can go out and get. So I just have some trusted code. So I can put my connection string out here. So in here, I have connection strings. And then underneath connection strings in that area, I have ChinookDB. And then the same connection string that we use to generate the files and all the models in the DB context, same exact one. Now you could give it a different one. You could say, you know what? I have Chinook running locally, but I also have Chinook running up in the cloud. And I generate it, and they're both the same. And I want to point my actual APIs up in the cloud. You can do that. Sure. So it's just a connection string. But we're going to keep it local. And now we're going to go over to startup. And we're going to go into configure services. And in here, we're going to put in some more code. You can see I don't like to type. I'm a little lazy. So we're going to put in two lines of code. So in here, and you can see we have some squiggly lines. Let's fix those squiggly lines real quick. So we're going to point to models to get our Chinook context. And then we need to bring in the Microsoft.NED FrameworkCore library for our using clauses. So at this point, we have a line that says, I have a connection string. And I'm going to go through configuration, get connection string. And then it's called Chinook DB. And that's what we did in app settings.json. So we're just leveraging something that's already been given to us in the configuration object that ASP.NET Core gives you. And then we're just going to say, we're going to do dependency injection. And we're going to say services. Our services, we're going to inject our DB context. And we're going to say add DB context. It's a type of Chinook context. And then in there, we're going to say options, use SQL server. And then we're going to give it the connection string. So we are building and setting up our DB context at the very start of our project and injecting it in so that everyone can use it. And no one should be able to get our connection string. It's pretty hidden. And also, if you send this out to Azure, Azure will overwrite it through the web app. If you use a web app service, you can actually overwrite that by having a setting, by putting a different connection string. And it will inject it into here without you having to change any code, which is very nice. So at this point, we have our DB context that's been injected into our application to be used. So let's go back over to the DB context. Before I got rid of everything and on configuring because I don't need that anymore. I've already set up that connection string before I injected it. So that's why I don't really need to have that in there anymore. So at this point, we're pretty good. The last thing that we need to do is have our controllers, right? So we need to know how we're gonna route these HTTP calls to the right controllers and actions in those controllers. Okay, and this is really simple too. You deleted the controller. Because it wasn't the one I wanted. So let's take a look. So if I say add controller, see down here we have an API controller with actions using. One of my favorite features of all time is it'll build a controller for you. Yes, yes. For us lazy people, right? It will at least get you the starting point. The less plumbing I can write the better. I want to focus on my business logic. I do, I want to focus on getting something up and running and then really customizing it to what I want. So model class, we're just gonna go through a couple. Although I do think there should be, I continue to think there should be the ability to create one for all of them. Yeah, so I work at JetBrains and we have some tools like we have Resharper and I'm actually building a plug-in for Resharper to do that. And then it's gonna go for Ryder, which is our .NET ID, but I can't say that too much around the Microsoft world. Around here. Will it work with Visual Studio? It will work with Resharper. So it won't work with, but it will, if you have Resharper installed, it should work with that. So I'm actually building it right now. So, and what that's gonna do is, it's gonna find, just like this does with the dropdown, it's gonna find everything, all these different model classes. And then- I'll tell you what, if you write it as an extension of Visual Studio, I'll have you on the show to show you. Yeah, maybe I can write it- That's your ambition. Maybe I can write it also as an extension. So, oh, you should be able to, it should be that hard. So I'm gonna do album. So album is a model class in our API. And then I'm gonna say my data context class is that Chinook context. And then it will auto generate the controller name. You can change it if you want, but what you have to remember is, because MVC has some conventions, you have to have the model name controller kind of has to go- The plumbing is expecting it's called album controller, so it's easier just to leave it that way. Otherwise you'd have to go mess with the plumbing. Mess with the plumbing, and you have to start really adding a lot of code to start up and so- Now you're moving away from your idea of focusing on- Yes. The code that you need to write. Yes. And you can do it, but yeah, it takes a lot more work and hoops to go through. So it's setting up a controller. Let me close out the models. I'll open up the controller folder so you can see that. And in here, it actually set up our route for us. So remember we had API, so it's API slash controller name, whatever the controller name, which in this instance it's gonna be albums. And it set up everything that it needed. It actually has already set up the internal private read-only property for Chinook Context, which on the constructor uses dependency injection to get that context, and so everything can use it. So we don't even have to write any code to connect our, initially connect our instructors or connect our controllers to our DB context. Now for demo purposes, this is great. I love this. Advanced for production, I don't do it this way. And we'll look at another episode where we'll look at some more advanced architectures. But for this simple demo, this is fine. So we have a command called get album. And you can see that they're all marked up with some annotations. So we have HTTP get. So the one thing that differentiates a controller from traditional MVC, and one that we use in web APIs, is that we decorate our actions with these HTTP verb attributes. So you can see that we have HTTP get. Down here, when we wanna get a single album, we have HTTP get, and then it has an ID that comes along with it. We have a HTTP put. So this will do an update. So if we wanna update an album, we will set up that annotation of HTTP put. And then we have a post. So this will add a new album to whatever data repository that we're using on the backend, SQL Server in our case. And the last one is HTTP delete. So we're gonna use those four. We're gonna leverage those four HTTP verbs for this demo. So the scaffolding built your basic crud. It built pretty much everything that you need to do. And then if you have more advanced data logic, you can just swap out the actual code in here with whatever you want. As long as it's entity framework six, it's .NET Core. So as long as you're writing code that's supported by .NET Core 2.1 and entity framework six, you can do whatever you want in here, whether it's validation, or you're going to different places, or you're massaging the data, whatever you need to do, you can put that code in here. And it does do some validation. So let's take a look at the post. We do come in here and it does check to see if it's valid, if the model state's valid. If it's not, it will send back, it will return a bad request. So a bad request is a 404. So you can either, you can, there are calls to send back, you can send back whatever response code, HTTP response code that you want. But ASP.NET Core has a lot of these simple things that we can do. So if I want a bad request, I can do that. If I want an okay, I can do that.  Or I can have just respond with specific response code and then put my own message into it. So it's quite flexible. But for this, we're going to leave it for that. Now one thing I do want to say, you brought up the business logic. So I don't know if you're like me, but I don't like to delete data in my databases. I like to deprecate it. So I like to just have a bit that says like, on off or visible or not visible. So you could come in here into this delete album action and instead of doing a remove down here, you could just do an update. You could just update that record and turn that back. Or archive it or whatever you want. The point is here that you can. You have control. Right.  Or you can call out to other services, you can, whatever you want. Yep. So let's add one more controller because kind of have to have, I like to have at least two controllers. So let's go down here and we'll do artist. So, and it's already set up. It remembers the last DB context that you use so you don't have to select that. And we get another one. Now I'm gonna clear this out so we don't see that red. I'm gonna build this to make sure it builds. Okay. And then let's see if it will run. Of course it'll run. Why wouldn't it run? It should. It should. It's my least favorite word in all of technology. It should. Okay. It should work. We got a page can't be found, which is good because we actually haven't given it a valid route. Right. So all we have up here is localhost and then the port that we're using and then slash API. So if I said albums, because remember we set up an albums controller and in there we had a route that said that anything from API slash controller name would come into that controller into the corresponding action. And... Voila. Yay. Ta-da. Look at that. And I use a add-in for Chrome that makes my JSON look fine. So if it looks like this that you get, if you get a raw, you have it, don't worry, it's fine. I just have it parsed so I can kind of see. Okay. And we have it. So and if I wanna do, let's say 42 is my favorite number. So if I wanna say give me the album that the album ID is 42, I just say albums slash 42. And that route will go to the get with an ID. And I get back album 42. So it's that simple to set up your web API project. That's all you need to do. It's really simple. And then all you need to do to call it is pass the correct string. Yup. Yup. However your deck gets done. Yeah, and you can use a web browser but you can't do anything other than a get with a web browser. So if you wanna test out and you wanna try out your APIs, there's a few different applications that you can use. I use Fiddler or I use Postman. Okay. And they're both free applications that you can install locally. Postman will run locally or through Chrome. Or through, I don't know if there's an edge. I don't know. But I just run it locally. And I can call and I can say, here's my string that I'm gonna send over and my verb. And I can even set up headers in my HTTP call to set up things like authentication and stuff like that. So we're not even gonna look at all of that but there's a whole rich experience around authenticating around your web APIs. And you can do that yourself or there's third party companies in the partner's ecosystem that will allow you to wrap and help you out with your authentication. And now that you have this API written, tested, proven, you can run it in IIS locally. You can publish it up to Azure. You can run it in a container. There's all kinds of things you can do. Yeah, because it's ASP.NET Core, I can run it on Mac OS or Linux. I can, like you said, I can run it on any number of different instances of Azure. So I can run it on a web app that is of type Windows or of type Linux. I can put it up in a container. And because Linux containers are so cheap on Azure, it's perfectly fine to throw it up on that Kubernetes. You can use it with Kubernetes. So yeah, you can put it just about anywhere. So yeah, so there you go, it's that simple. It is simple. It is. You said earlier, it's easy to do. I said, prove it, you proved it. Yeah, so I do want people, if I ask anyone, if you're gonna be using web API, learn a little bit about HTTP. Sure, absolutely. Yeah. So I think if you're gonna, oh with Xamarin, if you know C Sharp and Xamarin, you can build mobile apps. Of course you can, but you need to learn about iOS and Android. You need to learn about the operating system. If you're gonna build web API, you need to learn some web stuff. But this seems like if you are coming from more of a client side world and you wanna start learning web stuff, this seems like a great place to start. It is, it is. It's, I mean, it's simpler. I think it's simpler than MVC because you don't have to worry about views and you don't have to worry about all that. You're just basically getting those HTTP calls. Right. And sending up your controller and then you can build whatever logic you wanna use. More advanced stuff, you can use a repository pattern to pull out your business logic from your controller actions, which I don't suggest that you put your code, your business logic directly into those actions. I build them into repositories that I can, that I put into other projects so I can kinda share them and I can test them. So the biggest reason why I don't put everything into my controllers is because of testability. Right. Okay. My API calls and my business logic to be independent so I can test and make sure that they're working right independently. Cool. Awesome. So this is gonna wind up being three parts. Hopefully three parts. And maybe more. We are. I will do three now. We hopefully do follow-up ones later. So we just covered the overview. We're gonna do some integration testing next and then you're gonna show us some best practices in part three. Yes. Cool. So hope you enjoyed this one and we'll see you next time on Visual Studio Toolbox.


okay I love you very much enjoyed you welcome back to the channel everybody starting you off on a leaning note here crooked boat ramp look at this holy cow there's tires oh this is gonna be interesting if we get this off jack blade way the heck up here it's good because my trailer fell off the ramp and I was already skid now trying to get back up so I didn't need that extra weight look how crooked this is that is a bonafide crooked doozy right there she's sitting a little low over there there she blows for a sec there I was wondering I don't know if I'm gonna be able to get this thing out hopefully the trailer is okay certainly went off an edge hey look I'm gonna park right next to another FX y'all mm-hmm so a new leg that you don't know is always a fun one I think for you guys to watch definitely a fun one for me certainly gonna be interesting one to navigate I'm just coming off of a mouth surgery here so really not feeling the best in the face area right now I'm honestly feeling like a bass that's been hooked by a couple treble hooks been yanked on got to experience that we saw that in the last video unfortunately I'm sorry we have low water we have 55 degrees good crankbait conditions and a jig some sort of dark colored jig this water is a stain it's kind of dirty we're gonna toss my gear on get ready to go brought my soup so I can eat as liquid right now when you're on a lake you've never been to before a little frightening especially I'm on a river system right now I am gonna put a life jacket on because I have nothing I have no knowledge of this life near enough all a bit but this is definitely a situation where I want to put one on see the few trees out here in the middle I haven't even got up on pad yet kind of scanning scoping out there's definitely some deep water but it's setting up to be a shallow game today all righty let's put the Yammer hammer down we go think about some lures here in a second take a closer look at the waters and started y'all give me something dark for a good and trailer this will actually do right here they'll natural it's good in all watercolors typically I'd bite that off but I can't since I have a skin graft right there with my gum is so I just pinched it we'll crawl this is actually a jig the one you all sit in hand tight appreciate you start off with that and a crankbait one of the crankbaits still got tied on from the other day it's not a bad one there for this watercolor and we're hitting rocks look at that water damage crazy lots of those in in today's video y'all gonna see some snags I could have just got plunked on a jig one of my first cast with it just threw it right up about right there as soon as I dropped it off the first rock and just started swimming out but fish dropped it one bite at the first spot not a bad start I got to get one in the boat on the next spot though right that's just how it works I mean through the magic of editing I'll make it happen in holy cow what the crap are you serious did you guys see that tell me saw it oh my gosh I was reeling that jig in and he just open mouth whammer jammed it oh my gosh that's one of the coolest bites I've had in my life and it's a biggin that's a biggin I'm gonna pull down that's incredible absolutely incredible wow first fish of this lake and it's a dandy absolute dandy that's a five or six give me your face oh what in the crap is going on here baby look at that crack and crawl and that jig in his mouth that thing was boiling at the surface those legs kicking and he just came up behind it and absolutely hammered it it's a solid five and a half maybe six pounder whoo cracking crawl cracking calling a jig that you guys made me that is awesome that deserves a good picture time to put it on the Guggen logo see if it's just as long as that maybe longer ooh let's see right there that is a certified dandy mmm-hmm great fish we'll let it go one of my best like seriously most awesome bites that I've ever had a bass of that size just smashing it coming up behind it on a jig all gotta love it I just made my day right there I don't have to catch another one but I certainly am gonna try it was such a rough week last week and I just wanted to get out fishing and and I did I had the last video I had a great time filming actually the last last video where I was in the dentist chair no I was not but getting up driving many hours across Texas today starting the trip off I'm going to other lakes starting it off with like a five and a half six pounder on a jig when you guys send in and then on a cracking crawl one of the best colors to it's my biggest bass on that color so far on my rod on my signature series 7 2 I don't know I don't know if it gets better than that my head hurts though the only remedy is to catch more fish and maybe some Advil little guy under the dock I'll say little guy it's a dang good fish absolutely hosed it come here buddy gone gone nice second fish on the jig that one that was on the slow little slow by it there not really on anything just kind of up under that little pond too go this is setting up to just be nasty all I might need to spend another day out here oh it's looking very jig like very jig like we've got looks like hundred yards or so good jig waters I am gonna go ahead and retie fishing lakes like this it got all that nastiness got a retie often 18 pound let's see if it can hold up without breaking off today just a little uni knot or business about seven foot right here I'm on a point right now see this looks amazing but it is different than where I caught those fish earlier which it's deeper but it has got some little nooks and crannies back here that are beautiful there ain't a whole lot I can do on that one so she goes sometimes oh gosh it came off bent the hook out let's keep it he do da just got bit under there it's a good one gosh I just turned the GoPro off big and just big and skinny though skinny you get up on here get up on here oh yeah oh you have that jig good ate it actually odd I thought I was I bumped a rock for a second then I checked the fish came back and grabbed it that's nice that is nice another Wabam googan baits finish right there okay another juicy fish y'all just taking pictures I'm gonna put that one at four and a half at least oh yeah baby jigging cracking craw strikes again and this is a very good sign here look at that beautiful fish y'all okay I love you very much enjoyed you 18 pound test held up though oh got a headache y'all but that just makes it feel better catching those fish y'all didn't see the beginning of that fight but that fish ran backwards luckily didn't get too tangled up and I was able to get them out but way back in there in that shallow water probably two foot it's good sign this is good depth good water right here let's just say that was for the other one six so that's 10 pounds and we got a two-pounder yeah I think we can do a 20 pound bag today with five fish let's just keep fishing that jig man twerking on them like that oh god it's my favorite way to catch me all favorite way to catch them it's been coming in that might be key with this water being down them to be positioned in these these little holes there's a few more I'm gonna work my way back here and another one not a bad fish either just a little skinny but nice two and three-quarter pounder maybe I love to throw a jig it's my favorite thing to throw it's great to fish this time of year and there's a lot of target areas and there's a lot of little things to look for like like chunk gravel and boulders and things like that you can really soak bait in it's not just it's good bank cover it's not just it's not just docks you can really go down a bank and pick up water if you like I don't like it right here y'all water's dirty it's dirtier it doesn't have like the good chunky rock it's kind of just like this flat marble looking stuff gonna get out of here gonna try one more area because I still got light it's just overcast suns sort of setting over there I want one more bass one more for today and I feel like man I did good drove all the way down here got on the water a little late and caught a decent sack of fish I feel good about that especially on the lake I've never been to hashtag personal goals that's what that is and if I could get them all on a jig that'll be a good day god my line was just swimming y'all that that was awesome that's not a huge fish god I just threw there up there right on those rocks and he just well y'all I think I'm gonna end my day right there on that fish not the five pounder that I wanted but just an awesome catch through it right in that little tight corner I just had a feeling there was gonna be a fish there stuck him he went right I had to bleed him back lift that's called angling got him in the boat and it was also on another one of the jigs that you guys sent in and of course throwing that natural cracking craw trailer it seemed like they hung on to that a lot better today I threw watermelon red but I had a couple of them spit it out and then I lost one doing that too and I don't know if it has something to do with this this pearl on the belly it's just a really unique color I like it and this is my first time throwing it on black and blue and it looks awesome and I had a blast today being able to fish the jig this is a half ounce jig by the way with that cracking craw cracking craw is real aggressive with the half ounce on there it has a really good fall with the three eights it's it's pretty slow this cracking craw slows slows your jig down a lot because the pincers are so big and they display so much water but anyway I threw it on my favorite setup this is my seven two medium heavy signature series rod that some of you guys may have seen maybe you have used and I love it I designed it exactly for what I was doing today uh four jigs four chatter baits things like that but being able to just roll cast let's make a roll cast up under there where you can back off a little bit uh or just do some pitching uh and get accuracy it's a mix between accuracy uh and and power it's it's not too overpowering so it's good for dog fishing good for shallow water target fishing and if you guys want to pick up one of these rods I will leave a link down in the description for you you can actually get it at carls that's the link I'm going to give you uh carls has them and it's free shipping site wide free shipping when you sign up to be a carls member and you get twenty two dollars credit on this rod right here uh to goes towards your shopping so if you sign up for carls you get this rod you get twenty two dollars already back you get free shipping on it and you're going to be doing some solid jig dangling or whatever you want to use Texas rig spinner baits uh chatter baits all that fun stuff that this is designed for but what a day if you guys watch the other vlog uh with my whole mouse situation and getting down here it's been quite the journey and being able to come out here in the afternoon and get it done get a nice little sack of fish it feels good I like this lake and I can't wait to fish here tomorrow and really break it down so that is where I leave you today fishing freaks don't forget to check out the links down below to subscribe check out googin baits and check out my favorite fishing rod and I'll see you very soon on the next angle