Jeff Terrell: Okay, so this is a recording of what I did in class. I totally forgot to hit record.
Jeff Terrell: And after class. I had about 20 minutes before my next meeting. So I hurried and tried to
Jeff Terrell: Re record the lecture and got all the way through one, not all the way through it but 20 minutes into it anyway and then realized I forgot to hit record again.
Jeff Terrell: So this is my third attempt, following morning to record this content. I'm going to go quick not going to spend all the time that I did in class, talking about this. But yeah, talking about agility today.
Jeff Terrell: We heard some Radiohead
Jeff Terrell: I think it's a good example of musical agility.
Jeff Terrell: If, if you're a student and remember to join the class before or join open class today and before tomorrow before Wednesday.
Jeff Terrell: Because we're going to be doing quiz for then be Wednesday, October 7 and there's a link on Piazza for that.
Jeff Terrell: There was a correction about Quiz one grades have now been updated.
Jeff Terrell: You only got more points you didn't get less points for that. So feel free to check your scores, if you're interested.
Jeff Terrell: And yeah, I was going to talk about testing tonight, but I'm going to talk about agility first because that makes more sense.
Jeff Terrell: All right, for assignments. I just had an assignment update here the walking skeleton. The big one is due next week. Also during the term presentations in class next week you will be presenting. So be aware of that. Be prepared to present on Monday, because you might
Jeff Terrell: Tech Talk preferences are. Do the week after next
Jeff Terrell: That the preferences are separate from the tech talk itself preferences are two week after next the tech talk itself has given them one of the last seven days of lecture.
Jeff Terrell: In this class for the semester, and you get to see your preferences about both the date and the topic and that's first come first serve. So
Jeff Terrell: submit that. Now if your team is ready to do that in order to sort of get your topic and date reserved
Jeff Terrell: Yeah. All right. So last time we were talking about interpersonal effectiveness. We didn't quite get through that. So I'm going to finish that up and then move into agility.
Jeff Terrell: Routing why we care about agility and talking about extreme programming or XP.
Jeff Terrell: So we didn't get to some of the skills we talked about the dear man skills. These are the objectives skills.
Jeff Terrell: Remember that in dB T dialectical behavior therapy. There are my mindfulness kind of underlies everything but there's three different skills that are three different goals that you can pursue
Jeff Terrell: In a personal effectiveness. One is objectives, like you want, what you want and you're pursuing what you want.
Jeff Terrell: relationship skills you're pursuing the health of a relationship, maybe want somebody to like you and care about what you think and three self respect.
Jeff Terrell: Called the self respect goal is, like, do I respect myself at the end of the day, am I proud of my actions and behaviors and the airmen skills talked about objective skills.
Jeff Terrell: And one way to talk about this would be assertiveness getting soft skills and assertiveness and we saw those already, but we didn't get a chance to talk about relationships kills more self respect skills. So let's do that.
Jeff Terrell: So typically, this is not going to be at zero, your relationship goal is not going to be something you completely don't care about usually there's at least some amount of like okay well I guess I care whether they liked me or hate me at the end of the day, so it's not a zero.
Jeff Terrell: But be aware that if relationship is always your primary school, you might burn out in the long term, because you're not
Jeff Terrell: Maybe listening to what you need and sticking up for that when you really need to. So be aware that it can be a little bit out of balance, sometimes and not sustainable and long run
Jeff Terrell: But the gifts skills, their relationship skills are captured by this acronym give the G stands for, be gentle.
Jeff Terrell: So don't attack the person obviously that's not going to help your relationship don't threaten
Jeff Terrell: If you're judging you know their motivations and their intentions, that's not going to be helpful if you're disrespecting them. They're not probably going to like you very much. So obviously the, you know, if you want them to like your theme of the day, be gentle.
Jeff Terrell: I act interested. So listen, focus on what they're saying, give them my contact physically like lean into the conversation that's showing them that you're focused very interested, don't interrupt.
Jeff Terrell: Interruptions generally are assigned that you don't care or they care more about yourself, then
Jeff Terrell: Another person. So, don't interrupt.
Jeff Terrell: So that's act interested V validates we'll talk more about that in a minute because it's really important. But show the person that you understand where they're coming from.
Jeff Terrell: He is using easy manner. So you can help the relationship when you know even if you're having a difficult conversation about, you know, some sort of conflict. If you can do that and light hearted way.
Jeff Terrell: Using an easy manner. Smile joke around a little bit, lighten the mood, a little bit that can really help.
Jeff Terrell: Sometimes I can really be disarming and help somebody
Jeff Terrell: Yeah, just kind of lower their card so that they can more easily talk about things.
Jeff Terrell: Okay. So I want to talk a little bit more about validation, because it's pretty important.
Jeff Terrell: We talked about NTT how one of the core beliefs is that everything is connected to other things. And what that means is that there's a context to everything. And so sometimes
Jeff Terrell: Part of what good DB T skills and interpersonal effectiveness skills would mean is being able to find a reason why what somebody is doing makes sense. And so finding that context that
Jeff Terrell: That may be making makes more sense to you about why they're doing what they're doing and why that's actually could be a good thing.
Jeff Terrell: So if you can just show them that you understand what they're doing and where they're coming from and what they want. Sometimes that really helps. Sometimes what a person needs.
Jeff Terrell: Most of all, is to know that you hear them. And ideally, they'll also be able to get what they're after. But the fact that you hear them.
Jeff Terrell: Sometimes really helps with things over. You can validate underlying reasons, even without validating particular behaviors. That's a really important separation to have in your mind that somebody, including yourself might not be expressing themselves in a way that you like.
Jeff Terrell: Maybe somebody coming in, shouting at you.
Jeff Terrell: That's not a fun thing to be shouted that somebody's angry at you. But there might be underlying reasons that are actually really good for that maybe you don't even agree with some of the conclusions that they have left to that got them to a place where they thank you for on them.
Jeff Terrell: But you can still validate some of the things that are happening there without validating the fact they're shouting at you. So, for example, hey, I see that you're angry.
Jeff Terrell: I i'm glad that you are able to come to me with your anger and tell me what you're angry about because I care about this relationship and I care about you. So what's going on, you know, how can I help
Jeff Terrell: I'm, you know, I appreciate your courage and bringing this up, you know, not everybody would would feel
Jeff Terrell: Bold enough to to come and come to somebody else with what they're angry about so I appreciate that, you know, these are things you can say
Jeff Terrell: If you, if you have to resort to sarcasm to say them probably don't say them. But if you can say them authentically, just like I don't like that you're shouting at me, but I do appreciate that you're bringing this up. Thanks for doing that.
Jeff Terrell: That can really calm things down.
Jeff Terrell: So had a story about Johnny trying to pay attention in class. This is just a story from the Linda handbook on DVD.
Jeff Terrell: Don't have it in front of me. I'm not going to tell you this but I it's it's painful and the point of it is
Jeff Terrell: Johnny just isn't getting validated and when you actually hear a story about a kid not getting validated it kind of hurts.
Jeff Terrell: And you realize like, how much you need that how much you you miss it when it's not there when somebody just charges you charges your motivations and doesn't validate that you were trying to do something good.
Jeff Terrell: It hurts and it doesn't motivate you to care to care about that person or to want to be around them. So yeah, things that you could say to validate, you know, it makes sense that you thought that Doc or, you know, I'd want the same thing in your position.
Jeff Terrell: So these things are really nice to hear
Jeff Terrell: Again, this is all in the context of their relationship goal you care about the relationship
Jeff Terrell: Right so inner personally when you can validate, you can really unlock a deeper insight about how that person operates.
Jeff Terrell: A deeper appreciation for who they are and just a better relationship with more trust. So these are some really good things that can happen that validation can get to a nominee. Other things can
Jeff Terrell: Inwardly validation can have the same effect as you're trying to understand yourself. Maybe you're acting in a way that you don't like.
Jeff Terrell: But if you can figure out kind of let me see if I can validate some aspect of this, maybe there's something in me that is coming out in a way, I don't like but
Jeff Terrell: Maybe apart from how it's coming out. There's something important there that I need to understand and appreciate. So if you can validate trying to find that thing to validate. A lot of times that can get you more connected with who you are.
Jeff Terrell: And unlock more insight about who you are and how you work that can be a really good thing.
Jeff Terrell: Levels of validation. These. I'm not going to walk through these, but just ways of
Jeff Terrell: Doing validation more effectively. It's also harder, the higher level up. You go and you know paying attention is easy, but
Jeff Terrell: Separating the valid from the invalid and acknowledging the valid is hard. So
Jeff Terrell: Yeah, if you if you
Jeff Terrell: Want to kind of get your black belt in validation, then you can work it climbing this ladder.
Jeff Terrell: All right, let's move to the self respect skills. Again, this is like, I want to like myself at the end of the day, and like the way that I acted in a situation. So if you, if that's your goal, then these are some skills that you can use to get that goal.
Jeff Terrell: F is be fair to yourself and the other person.
Jeff Terrell: If you're validating what they are saying and wanting to invalidate your own stuff as well.
Jeff Terrell: You know tell yourself how that makes sense to yourself, oh, that's okay. That would you want is okay.
Jeff Terrell: A don't apologize for what you want. No apologies. Again, this is in the context of self respect.
Jeff Terrell: Sometimes I do this and
Jeff Terrell: I'll sort of apologize because I'll say something that maybe I think somebody might not like and then sometimes I kicked myself afterwards. I'm like, No, you don't need to apologize for saying what you want. It's okay to want what you want.
Jeff Terrell: So that's something I'm working on. But, um,
Jeff Terrell: Yeah, don't, don't sort of discount what you're asking for, as though it's less important.
Jeff Terrell: So stick to your values don't compromise on your own values will get maybe if it's really important. You would compromise on your values, but most of the time if you do this.
Jeff Terrell: You're not going to respect yourself at the end of the day, right, you're gonna say
Jeff Terrell: I got it. I didn't, I didn't do that thing, or I did this wrong, and I don't like that. I did it that way. So if you're wanting to respect yourself. Don't do that.
Jeff Terrell: T be truthful, don't lie or exaggerate don't act helpless when you're not. All right. If you want to respect yourself.
Jeff Terrell: You'll know when you've exaggerated or live. Maybe you said something is really important to you when it's not really important to you. It's like, somewhat important to you.
Jeff Terrell: So, you know, think about where you're at. Try to be authentic and accurate in the way that you act in the way the you savings.
Jeff Terrell: And don't act helpless when you're not if you're acting helpless and you're getting out for something when you didn't really need the help. It's not a way to respect yourself. You're not going to respect yourself if that's the case.
Jeff Terrell: Right. So to summarize, the whole interpersonal effectiveness module.
Jeff Terrell: You're gonna be dealing with people, your whole life. Right. So it's worth learning how getting some skills at this, not just in a professional context but
Jeff Terrell: Family, you know, with friends in romantic relationships and professionally will be dealing with people getting some skills are doing this are going to apply to all of those fears.
Jeff Terrell: And make a lot of your life a lot easier. So it's worth spending some time on this, and trying to level up here.
Jeff Terrell: We talked about the dialectic, this is the d amp D BT dialectic is a Greek idea involves two sides working together to find the truth through dialogue.
Jeff Terrell: So trying to get closer to one another through talking about it not debating, not just rhetoric, but actually really caring about the truth and pursuing that together, starting from different places.
Jeff Terrell: So DB T dialectical behavior therapy.
Jeff Terrell: Has three underlying beliefs. One is that everything is connected to is that reality consists of internal opposing forces and three is the nature of reality is change.
Jeff Terrell: Alright, the core practices of DVD. The main one is really mindfulness that underlies everything but validation is pretty important to
Jeff Terrell: Three goals as we saw this time of interpersonal effectiveness are the objective goal you want, what you want, you're pursuing what you want the relationship goal your personal pursuing health of the relationship
Jeff Terrell: And the self respect call and you want to respect yourself at the end of the day.
Jeff Terrell: These are all intention with one another and in any given situation you, it helps to figure out what your goal is. And what your priorities are.
Jeff Terrell: So the skills are summarized says, Dear man for objectives give for relationship and fast for self respect.
Jeff Terrell: Your man give fast.
Jeff Terrell: Okay, so that was interpersonal effectiveness going to move right along to agility. Why do we care about agility.
Jeff Terrell: Let's think about this story. All right, to the core engages acne software to build an app Acme reads the project description and quotes $250,000 over three months, they go build it and deliver it just in time, but to lay reviews and says it's not what they asked for.
Jeff Terrell: TNA has people waiting on the software, but they don't want to move forward because they don't think the software is done.
Jeff Terrell: But Acme has another project lined up, they already told some other clients that they would be able to start on this date, and those are the clients are waiting on them so they need to start on another project.
Jeff Terrell: Not a fun situation to be in.
Jeff Terrell: To he says it's not done aqui thought it was both are wanting to move forward and we're planning to move forward at that three month mark what went wrong.
Jeff Terrell: All right, in a module about agility, you can guess that the problem is related to agility.
Jeff Terrell: Yes, there's a few things that you could say went wrong reliance on a written document over in person collaborative explorations, you can kind of if you can be agile and explore things together and collaborate together. You can pivot and find a find a way to give value to the client.
Jeff Terrell: Predicting relatively far into the future and committing to that. So locking those three months in and saying it's definitely going to be done with features x y&z in three months time that's difficult
Jeff Terrell: Maybe the biggest thing is there's no opportunity for iterative feedback from the client.
Jeff Terrell: Kind of related to that first bullet point. So you want to get feedback from the client to adjust to what they need and to uncover when you don't understand something, or maybe interpreted it wrong.
Jeff Terrell: And if you need to change requirements a locked in time frame and budget really doesn't mix with that.
Jeff Terrell: But there are some good reasons why the whole thing was structured this way. So let's try to validate what those good reasons are not judge them.
Jeff Terrell: All right, CLA needs to decide whether to build a software to begin with. There's some decision point about, okay, maybe it's worth $250,000
Jeff Terrell: But it's not worth 2 million. And so they have a go, no go decision about whether to build a software at all and also about whether Acme software is the company that they want to engage to do it.
Jeff Terrell: So they have to decide these things and knowing
Jeff Terrell: A fixed budget and timeframe really help them make those decisions if it's if acne is coming at them and saying,
Jeff Terrell: I don't know. I'm just going to cost to build. Let's just try and see, you know, maybe it will be 20,000 maybe it'll be 5 million. I don't know. Let's give it a shot though well i TNA wants to know, like, do I want to go down this path at all, it might cost me more than I have.
Jeff Terrell: So I won't be able to finish and that would be pretty lame.
Jeff Terrell: I'm actually needs to decide whether to engage in this project at all. So if they are if they understand what the needs are of the desert Radha is
Jeff Terrell: Our does it run our then it helps helps them make a decision if they have that stuff fixed and I guess that would be not fixed budget and time frame so much as fixed scope fixed set of features.
Jeff Terrell: But also the fixed budget would tell them. Can we get this done.
Jeff Terrell: Sort of under budget, can we actually make a profit on this rather than just spending a bunch of time and maybe not.
Jeff Terrell: Not even making enough to pay all of our employees. So they have to decide that as well. Is it worth it to them to take on this project or are the needs of de la Corp.
Jeff Terrell: To great are the expectations too high to where they're not going to actually be able to turn a profit on this.
Jeff Terrell: Both companies need to get stuff moving after the software has done the late Courtney's to line up marketing releases and sales efforts.
Jeff Terrell: Acme needs to work on that next project, whatever that is. And so as the product is ongoing. Maybe the sales arm of the organization is talking with other clients who need software written
Jeff Terrell: And those clients are trying to understand when. Could this actually be done. So the sales arm and that sort of management arm is trying to like
Jeff Terrell: Line up those next engagements to work on afterwards. And so they got to tell those other clients, something like yeah, we're going to be able to start in May, or whatever it is.
Jeff Terrell: So if you have a fixed budget and time frame that really helps inform all of those things that have to happen, especially at a business level.
Jeff Terrell: So it's important to think about that and realize that there are good reasons why products happen that way.
Jeff Terrell: The problem is, I have never met a client who can imagine in full detail what they want. That includes myself when I think about some app that would be nice to have.
Jeff Terrell: I can't imagine in full detail what I want, I have to iterate and explore to figure out what it is I want you know if it's detail, I have some idea. I have some like vision, but it's not fully specified. I don't just have it in my head.
Jeff Terrell: I have to work at it, get it out into a clickable prototype and maybe even explore beyond that, as things unfold before I can make some of these decisions.
Jeff Terrell: Even if a client really did have everything they've understood in full detail what they want, transferring that understanding from one branch to another is not really a possibility. Right. You have to mediate it through words, maybe a written document maybe through descriptions and
Jeff Terrell: In person communications. Maybe through a clickable prototype that certainly helps but you know there's no Vulcan mind meld here. You can't just transfer that knowledge from one hand to another.
Jeff Terrell: And that process takes time.
Jeff Terrell: But let's say they can efficiently, get the details of that vision into my head. Even then, how could I have confidence about my estimates.
Jeff Terrell: Predicting the future with any accuracy is hard, even for people who have some practice at it and I've tried to refine their skills of doing that, it's still hard
Jeff Terrell: I would say it's even maybe a little bit harder in our field because things change so quickly. But regardless, it's hard to make estimates about how long this is going to take and how much it's going to cost.
Jeff Terrell: Especially if it's a very large project.
Jeff Terrell: Okay. Did I say let's see.
Jeff Terrell: Right. So we saw some of the reasons why the business needs could really benefit from having things nailed down but if things are nailed down change is the enemy.
Jeff Terrell: Right to a Corp says, Oh, can we change this to do this other thing and acne says
Jeff Terrell: I don't even want to spend the time to think about whether that would be easy or hard because I have told you I would get X y&z done in three months. And I've got to work to get that done.
Jeff Terrell: You're asking me to do extra work not just to think about whether that's easy or hard but to actually do that change.
Jeff Terrell: And that's not what we agreed to. I can't do that if you still want me to make that three month timeframe here so Acme software doesn't want to. They're not interested in any change. And that's hard. That's hard to PT la cope in that situation, because then
Jeff Terrell: They get what they described as like before the project even started and almost certainly because they didn't imagine in full detail what they wanted to begin with.
Jeff Terrell: They're going to get something at the end that they're not fully satisfied with inch. It sure would be nice.
Jeff Terrell: If they could see things unfold realized that maybe what they had in their minds wasn't very realistic or maybe wasn't what they wanted. Now that they see it and be able to pivot and change as needed.
Jeff Terrell: Okay, so I'm going to move on from there. So that kind of introduces and sets the stage for agility agility is useful in a changing environment. The key idea here of agile software development is to expect change and handle it gracefully.
Jeff Terrell: If you're doing things in an agile way you are de emphasizing planning your de emphasizing predicting the future, especially at a long stretch you might
Jeff Terrell: Do a little bit of prediction for like the next week or two, but not three months out, or a year out instead of emphasizing those things you emphasize iteration.
Jeff Terrell: you emphasize taking things as they come. Not before and responding to new information in a smooth way gracefully.
Jeff Terrell: Think about a running back in football.
Jeff Terrell: So that running back gets the football and maybe there's a little bit of planning to say like, okay, you plan the next the next play that's kind of like the kind of planning that we would do an agile software development is planning the next week out
Jeff Terrell: But that's even that's just kind of a loose plan like okay yeah offensive line, try to make a hole in the middle, right. So that's the general sort of plan.
Jeff Terrell: The running back though has to read the situation, figure out what is it the tight end. I don't. I know a little bit about football.
Jeff Terrell: To her, where the tight end is figure out kind of how the whole thing is breaking down and and breaking open
Jeff Terrell: And figure out whether they need to run down the middle, or maybe they need to readjust and
Jeff Terrell: You didn't need to go left around this person or right around this person or whatever it is, but they're being agile, right. That's the point. You get it running back because that running back is very agile somebody who isn't agile. You don't want an opposition.
Jeff Terrell: So our software development teams should be the same way we should prioritize being agile, being able to respond to new information smoothly and take it into account and and pivot and move
Jeff Terrell: To get things done. I will break down more about what kind of how that works in a bit.
Jeff Terrell: So let's imagine a situation in which to a corporate Acme software actually engage them are agile way.
Jeff Terrell: To a Corp could see the work in progress as it's being done and realize that it's not what they want or it needs to change in some way.
Jeff Terrell: They can give that feedback early as soon as they notice that it's not what they want.
Jeff Terrell: And that means that things can change when all the details are fresh in in mind for developers. They just worked on the implementation of that.
Jeff Terrell: So we've got it relatively at the top of their mind and other code and decisions and UI have not been piled on top of that yet. That's still sort of at the top of the heap. And so it's still relatively easy to change.
Jeff Terrell: There might still be a little bit of backtracking. But that's a lot less frustrating than having to reach back three months ago. And remember how this implementation worked and
Jeff Terrell: Change all the things that were based on that decision. So yeah, that could be a lot worse.
Jeff Terrell: Importantly, an agile way to go here is that Agile software is paid by the hour so they don't have an incentive to resist change.
Jeff Terrell: To a corporate gifts in that early feedback and says, Can we change this actress like
Jeff Terrell: Sure you know i mean that's that's on you that you wasted some time and money this way, but we're getting paid for our time. So we're not trying to push back and say, I don't want to change that because I have a deadline to meet. We're saying like yeah okay
Jeff Terrell: It's not the most fun thing in the world to have to backtrack work that you did and realize that that work isn't meaningful.
Jeff Terrell: But you're getting paid for it. So, man. You're in a lot better mood than you would be if you had to change something, or even had a client that was trying to pressure you to change something that wasn't agreed upon.
Jeff Terrell: And that you weren't gonna get paid to change.
Jeff Terrell: To a court needs to have some trust for acne and this is hard without a contract. So if you're talking about paying by the hour to a corpse going to be like, I don't really want to do that. I mean, how do I know what the end of this project is going to be, I mean,
Jeff Terrell: Is it going to be, you know, $20,000 there's going to be 2 million. I don't know. So how can I have confidence as as teal a corporate
Jeff Terrell: This work is really getting done. It's moving at a good pace and that it's going to get done in a good time frame with not a crazy amount of money.
Jeff Terrell: The reason for that is in an agile way actually software is frequently showing the work to a Corp. And so is saying.
Jeff Terrell: This is where it's at right now you can see the progress that we've made you can give feedback on it. So to a quote begins to see, okay, this is the pace that the project is proceeding that this is the pace that acne is working. And this is okay.
Jeff Terrell: So they start to have more trust and that trust is really, really valuable. This helps avoid conflicts completely and it also helps navigate conflicts when they arise.
Jeff Terrell: Yeah, if there's a misunderstanding or something like that, you need to have a difficult conversation, you know, y'all can do the right thing here. If you already have that trust that you've been working on over time, then that helps those conversations go so much more smoothly.
Jeff Terrell: So that's a more agile way to go for software development and I'm talking about this almost like a business level here.
Jeff Terrell: Best why agility can be important. So an agile turns out has kind of taken over the world in a lot of ways. It's not everywhere, but a lot of programming these days.
Jeff Terrell: And professional software engineering and software development is agile and a lot of it comes from extreme programming XP. So this came out in the late 90s. There's a book that came back row in 99
Jeff Terrell: Coming from his experience in the software project leading up to then
Jeff Terrell: My understanding, I should have looked this up before I did this lecture. But I think this is one of the the major sort of
Jeff Terrell: Watershed moments for agile software development was this book that came back wrote in 99
Jeff Terrell: I think there wasn't a lot happening in agile software development before then. But I think this was kind of the moment where a lot of things really crystallized for a lot of people. And this became a movement then now it's
Jeff Terrell: Kind of hard to find programming that involves more like this heavy upfront planning stuff. The way things used to used to happen.
Jeff Terrell: So next piece we're talking about in detail.
Jeff Terrell: It's not, I don't think I know anybody that adheres to XP strictly but a lot of the ideas are really influential and really important. And a lot of people adhere to a lot of the ideas at least loosely
Jeff Terrell: So we'll talk about it in some detail as a sort of representative of a lot of the Agile things that are happening.
Jeff Terrell: The goal as with any sort of software engineering methodology work is to produce higher quality software faster.
Jeff Terrell: And XP includes for activities five values and 12 practices. We're not going to get to the practices today, but we will talk about the activities and values.
Jeff Terrell: Activities, which we'll talk about each of these in a little bit more detail are coding away knowing. Well, this is a slide for activities coding. Obviously, I mean the P AMP in XP is programming. So you got to program.
Jeff Terrell: But testing is actually as important as programming testing is a really central part of XP. And I think that's probably part of why we get the x and XP why XP was considered extreme is its emphasis on testing at multiple levels.
Jeff Terrell: We'll talk more about testing and the lectures that follow agility.
Jeff Terrell: Other activities, including listening to the client. And so that there's a really high value placed on being
Jeff Terrell: In good communication with the client and listening to them understanding them and then designing is another activity that is a valid part of XP and important part of XP.
Jeff Terrell: If you're not
Jeff Terrell: I guess if you didn't. If you didn't know better. You might think that will XP is just a reaction to all the heavy designing and planning up front. And so you're not supposed to design a plan at all. You're supposed to just be agile, that's not true XP is actually a little bit
Jeff Terrell: In the middle of that saying yes, we actually do need to design, especially when things get complex to capture some of these complex things in a way that everybody can easily get on the same page.
Jeff Terrell: I think clickable prototypes, probably a good example of this, because it's a complex thing that's being designed and it's a really, really good vehicle for getting everybody on the same page.
Jeff Terrell: Everybody all the developers as well as a client has a clear vision of what's going to be built.
Jeff Terrell: So that's a core activity. All right, the values will talk about each of these in more detail communication.
Jeff Terrell: Simplicity.
Jeff Terrell: Feedback.
Jeff Terrell: Courage and respect.
Jeff Terrell: These all sound like good things right, but we'll break down what they what they mean an XP communication.
Jeff Terrell: The general need for all software projects for you, whether you're doing agile or not is to communicate systems requirements to developers, developers need to know what their requirements are so that they can actually implement those requirements.
Jeff Terrell: In the past, this has been accomplished by documentation.
Jeff Terrell: And that's useful because written words don't change like memories do especially memories. When you have to go more than
Jeff Terrell: A day or two back, it can be pretty hard to remember what happened a year ago and exactly what was said.
Jeff Terrell: So when you have longer term projects. It really helps to have things written down. This is part of what we saw on the project management assignment and lecture is that writing down your user stories and writing down your cards on cello.
Jeff Terrell: Helps because you don't, you shouldn't have to remember with all the details exactly what was needed actually written down so you can refer to it. And so that if there is a conflict, you can refer to kind of what was written.
Jeff Terrell: But of course documentation tends to be static. It's not. It doesn't have to be. You can have kind of a living document that gets updated. But if even if you have a document, maybe, maybe it's even like a Wikipedia. Wikipedia, a wiki that you can update as
Jeff Terrell: As things change. It's still a lot of work to keep that maintained and keep it up to date and most of the time if especially if your developer, you're going to want to be coding, you're not going to be going to, you're not going to want to go update on the documentation.
Jeff Terrell: And also, like, let's say you read through all the documentation at the beginning of the project.
Jeff Terrell: It's kind of lame. When you have to like maybe something changed and you have to go figure out
Jeff Terrell: Okay, well I changed. I don't want to read the whole document from start to finish, again, hopefully I have some sort of depth that I can look at
Jeff Terrell: But even that is not a great way to sort of understand what the changes are because I have to like pick out which lines change within a product context, it's not a fun thing. So even if you're really disciplined and you're keeping that documentation up to date. It's just not
Jeff Terrell: Not the most helpful way to do things.
Jeff Terrell: Kind of like trying to be agile with the way to backpack on your back as a running back that's not going to help
Jeff Terrell: Documentation can can slow you down. If you're trying to keep it up to date.
Jeff Terrell: XP can be thought of the expert techniques can be thought of as a way to build and share institutional knowledge among the dev team.
Jeff Terrell: That's kind of one of the the goals of XP and have any software project is to get the requirements into all the developers heads. So these XP techniques are intended to to do that.
Jeff Terrell: The goal is to give all the developers a shared view of the system that matches the view held by the users.
Jeff Terrell: So get get the same vision in all of its detail and everybody's had every developer project manager clients and users, all having the same
Jeff Terrell: Same view of what the, what the system is
Jeff Terrell: So as a consequence of that XP favors simple designs, because those are easier to understand. Common metaphors, rather than, you know, sophisticated metaphors or jargon.
Jeff Terrell: Collaboration between users and programmers.
Jeff Terrell: Users maybe maybe a better word for that would be clients and programmers.
Jeff Terrell: Frequent verbal communication. It can be a lot easier to get on the same page or somebody if you can talk to them rather than if you're just reading something that they wrote
Jeff Terrell: And feedback.
Jeff Terrell: We'll talk more about feedback in a minute.
Jeff Terrell: So the developers goal is to try to see the world through the clients eyes and understand how they think.
Jeff Terrell: Client brings the what what is the idea, what is the vision. One of the goals of this project developer is the one that brings the how, how do we actually implement that vision.
Jeff Terrell: They have the skills and you have to collaborate, if one side brings up what the other side brings to how you have to collaborate. Right.
Jeff Terrell: This is kind of like using your phone to navigate through an unknown city.
Jeff Terrell: The example I thought of in class for the moment is say you want to go to. You're in Munich and you don't know Munich, but you know you want to go to the opera house and have a nice beer and soft pretzel.
Jeff Terrell: So you got to navigate their figure out how to get there.
Jeff Terrell: And you know, that's that can be hard to do. If you don't have something that brings the hell and your phone can do that right with the Maps app.
Jeff Terrell: Lets you navigate through the city so that collaboration that you have with your phone is similar to the collaboration that you need to have with the client and developer
Jeff Terrell: Relationship.
Jeff Terrell: Alright, so you're like, you're the executive of the clients, while you're making it so
Jeff Terrell: Okay value number two simplicity
Jeff Terrell: Only only code for the needs of today, not tomorrow. So focus on what's actually in front of you. Don't worry about what might need to happen tomorrow. Just focus on what do we need to do today.
Jeff Terrell: This really helps you maintain your focus because you limit what's currently in view and you don't get bogged down by like
Jeff Terrell: Oh gosh, you need to go. Understand that too and figure out how that relates to this and try to design something that meets all of these requirements and there's a lot of requirements and that's hard to think about
Jeff Terrell: Don't do any of that. Just focus on. You got one thing in front of you right now, just do that.
Jeff Terrell: Don't over engineer your solution.
Jeff Terrell: All right. I don't know if you've seen this acronym before. This is a Gagne short for ya. Ain't gonna need it.
Jeff Terrell: You ain't gonna need it. So you you're sitting in maybe your pair programming with somebody and and they start to think like okay well I see that we need to do this.
Jeff Terrell: But this seems kind of brittle. Like, shouldn't we do this and and make this flexible in this way and add a parameter here to let this be, you know, do anything here that it needs to do and
Jeff Terrell: You could say, yeah, I mean yeah ain't gonna need it. No, just do do what we need right now. And if we need it later. We'll do it then. Right now, we don't need it. So don't do it.
Jeff Terrell: And if you can maintain your focus on what you need to do now, then you can work your code to be optimized for the now and try to get your code to a place where it's actually simple
Jeff Terrell: So that it's easier for others, including yourself in the future when some other requirement comes up there requires you to extend this code to extend it, because you've spent some time making it as simple as you could. So it's easy to understand how it works.
Jeff Terrell: So you might ask, What if I know I'll need something tomorrow, and I'll need to undo this code then
Jeff Terrell: All right. Well, I mean, yeah, maybe. Okay. Be reasonable if you if you really already have it in mind what you need. You don't have to go off and
Jeff Terrell: Think about what that might be or how it might take shape but you know you have something in mind, like, yeah, I'm going to have to go a different way. With this, I already have a picture of how that's going to have to work.
Jeff Terrell: Okay, maybe, maybe you you bring that tomorrow consideration into today as well.
Jeff Terrell: But even, even if you have this kind of a situation. It might still be worth waiting on it and doing that later.
Jeff Terrell: So just try to think through kind of is it worth it to keep things simple. Don't over engineer things maintain your focus, that kind of thing.
Jeff Terrell: So that's the, that's the focus on simplicity core value XP number two.
Jeff Terrell: core value number three is feedback you get feedback from a number of different places.
Jeff Terrell: The one I've kind of been harping on, so far as you get feedback from your client. And the way this one should work out. Is every two to three weeks when you show them your system.
Jeff Terrell: Show them the code as it currently exists and how it works. When it's running. You're gonna get feedback from a client that says, Okay, that's great. Let's
Jeff Terrell: Let's focus on this next or these are the priorities or that's not quite what I wanted, I wanted it, and purple. Let's do this.
Jeff Terrell: So that's feedback and you can incorporate that feedback into your project to be agile and to respond to what the client needs. And that's sort of maximizing your ability to give value to the client when you can incorporate their feedback.
Jeff Terrell: You also get feedback from the system tests, as I said, our core activity of XP and remember this system is you're running code right your code is a nurse, but it has to be animated and that animated code is called the system.
But
Jeff Terrell: Anyway, you get feedback from tests and so that feedback is going to tell you everything working or did something break. That's a really valuable place to get feedback from as a developer
Jeff Terrell: You can also get feedback from the team during retrospectives I'll talk about this more later but briefly. This is like
Jeff Terrell: What went well, what didn't go well what can we learn from these things. How can we improve
Jeff Terrell: Okay.
Jeff Terrell: Iteration means less time planning more time doing
Jeff Terrell: So you have less overhead in terms of planning and you're just spending more of your time focused on doing stuff.
Jeff Terrell: And iteration is made possible through feedback.
Jeff Terrell: I love this quote optimism is an occupational hazard of programming feedback is the treatment.
Jeff Terrell: All right. How often have you looked at some homework assignment or maybe some hacker rank or leak code problem or something like that. And you said I was going to be easy. I bet I could do this in half an hour and you sit down, you know, five hours past and you're like,
Jeff Terrell: Oh my goodness, I, I was overly optimistic this there's more to this than I thought.
Jeff Terrell: I don't know if you're like me, you, you run into this a fair bit right so I relate to this optimism is an occupational hazard of programming.
Jeff Terrell: Sad, but true and feedback is the treatment.
Jeff Terrell: Remember can't back is kind of the founding father of XP and he says feedback is the treatment meaning like feedback is how you orient to what the truth actually as
Jeff Terrell: You can have all of your optimism. But when you have to subject it to reality. You realize that some of it survives that fire of reality. Some of it does not
Jeff Terrell: And feedback is the the channel through which you can connect your optimism to reality to temper it and figure out how reasonable is not realistic. It is
Jeff Terrell: Alright, so that's a core value XP value number four is courage, there's a number of ways that this can work out. But it's interesting to think about courage as a value here that's core to XP.
Jeff Terrell: If you have like your trailer board or something like that that you've captured your user stories and your requirements and
Jeff Terrell: You can trust that you'll be able to find out what you need to know tomorrow, so you don't need to worry about it now.
Jeff Terrell: Stay in the present. Again, this is related to simplicity. Don't worry about tomorrow stuff.
Jeff Terrell: That's on the trailer board, forget it. You'll, you'll figure it out when you need to get their focus on the now.
Jeff Terrell: And trust right trust that it's there, you'll be able to figure it out. So you can have courage in a moment to not worry about the future and courage is an interesting way to talk about that, that I think is pretty helpful.
Jeff Terrell: Be courageous.
Jeff Terrell: Be okay making mistakes because you can fix them later.
Jeff Terrell: So go ahead and try that code out, try to just make a stab at it. See if you can get something working, even if it turns out later that that was there were some there's a bug in that approach.
Jeff Terrell: That's okay, you can fix it. You can be agile later respond to the new information when it arises that there's a bug fix it. Move on.
Jeff Terrell: But, but if you can be courageous in the moment and not worry not let that worry about making a mistake, stop you from actually making progress.
Jeff Terrell: That will help you move forward.
Jeff Terrell: This can happen even in front of others, which we'll talk about pair programming later but um it's harder to be okay, making mistakes when somebody's watching you. Right.
Jeff Terrell: And so it's important to have courage to be okay with that and realizing that mistakes are just part of development right nobody understands it all from the beginning, you have to iterate and work at it to get their
Jeff Terrell: Tests are so important. There's such a key enabler of courage and agility because tests, give you, courage, they tell you if something
Jeff Terrell: Broke you're working on some future some feature and it can be really hard when you're in a big code paste that you are working on collaboratively. You didn't write all this code. You don't know how it all works.
Jeff Terrell: You don't know even what all the features are and you're just writing some future you're worried about am I going to break something else that somebody else wrote
Jeff Terrell: Test tool that you know so you can be bold to make your changes. And if you broke a test, then you can go fix that when it comes up, but in the moment, stay in the moment be courageous. Don't worry about that and just get it done. Make some changes and try it out.
Jeff Terrell: Right. You can also be okay with messy code, initially you should go back and change it and clean it up later. But initially, right, the coaches, get it working.
Jeff Terrell: Tests will also give you confidence when you're cleaning it up, including the tests that you write
Jeff Terrell: You can write some messy code, make it past the tests and go back and clean it up later and
Jeff Terrell: You don't need to worry about making it perfect the first time.
Jeff Terrell: Also throw away old code, don't leave that stuff commented in your code, you can always find it later with get if you need to get is another key enabler of agility, but just get rid of that don't leave that in your
Jeff Terrell: In your source code because that's just cluttering up your view and adding noise to what you're trying to focus on
Jeff Terrell: Okay value number five is respect this actually wasn't a core value and telling the second edition of the book came out in 2004 but can't back added this first of all respect, the time of your teammates by not committing broken code.
Jeff Terrell: Make sure that all the tests pass before you actually share your commits with your teammates a continuous integration server can help with this.
Jeff Terrell: Respect your own work. So take the time to polish the structure of what you wrote trying to make it organized and simple as much as you can.
Jeff Terrell: And all the other values as you're working with other people and you're trying to keep things simple and you're trying to be courageous.
Jeff Terrell: In your teammates are being courageous and keeping things simple and you're getting feedback, all these values tend to reinforce respect.
Jeff Terrell: And if you have respect among your development team, it tends to be a more satisfying work environment right when you feel like people are actually respecting what you're doing and the contributions that you're making
Jeff Terrell: And you respect the people that you work with, you tend to be a lot more satisfied at the end of the day, and you tend to be loyal to that team. So it's just good business practice to to kind of good good leadership to set up a project this way.
Jeff Terrell: I had a poll about. And actually, I think this is yeah this is as far as I got so there's a pole. But anyway, so that's the abridged version of the lecture, we talked about XP values.
Jeff Terrell: We talked about XP activities talked about XP. Alright, so
Jeff Terrell: Why and agility is important, as well as the last couple of skill sets for interpersonal effectiveness.
Jeff Terrell: That's all I got for now. Hopefully I'll remember to record next time.