YTread Logo
YTread Logo

Clean Code - Uncle Bob / Lesson 6

May 31, 2021
Do you think those are LEDs and they probably are LEDs? They're pretty cool, they're just much more efficient than incandescent lights. How do LEDs work? Light emitting diodes How do they work? How does the light come out? So LEDs are just a semiconductor. Okay, so you have two pieces of silicon and one of the pieces of silicon is doped with some atoms that have an extra electron and the other half is doped with some atoms that are missing an electron and that means there are extra electrons. on one side and electrons are missing and on the other and electrons jump across the boundary to try to balance it and then a charge builds up across that and that's how a diode works and then when you bias a diode, when you pass current into through a diode You get this effect where the electrons fall into the holes on one side and there is an energy gap between the electrons in the holes and as they fall the electromagnetic field is shaken and the photon comes out and is that's why light emitting diodes emit light that maybe not What I know is that all diodes emit light, they don't have to be light emitting diodes, all diodes emit light because there is always a small energy gap between the electrons and the holes on each side when I was a kid I played a lot around a The lot with electronics and electronic equipment is relatively expensive so I would try to buy my equipment at surplus stores and there were surplus stores that sold old electronic components and I would buy a bag of a hundred points , no half of the diodes wouldn't work, so what I would have to do is get the hundred diodes and put them in a stack and then I would build myself a little circuit and the little circuit had a little place where I could put the diode and the circuit It was a simple circus battery and a light and two nails in a container to complete the circuit.
clean code   uncle bob lesson 6
I would put the diet through nails. The light would come on if the diode was forward biased and would not come on if it was reverse biased, so it would take the diet. and I would turn it over and I should see the light come on or the light not come on and then I could throw them in two piles, the ones that work and the ones that don't, but every once in a while I would do that. I got a die on a normal diode and I put it across the contacts and it lit up, glowed orange and I thought, well, that's very strange.
clean code   uncle bob lesson 6

More Interesting Facts About,

clean code uncle bob lesson 6...

I was like 18 years old, but the reason that was happening is because of the manufacturing of those diodes. It wasn't really very refined, it wasn't very precise, so every once in a while they would build a diode that only had a noisy life energy gap to get out. I didn't know it, but I thought I was great in those. At first they didn't want the light to go off because it was a waste of energy and then someone realized that it might be a really good idea for the light to go off, so they figured out ways to increase the energy gap so that it came on a red light, does anyone remember when red LEDs first appeared?
clean code   uncle bob lesson 6
Yeah, that was great, right? Because suddenly we had these new ways of lighting panels and things like that and we had red LEDs everywhere. Do you remember the first digital watch? It would have been 1975 1975 the first digital watch, the Motorola Pulsar, and it was black like that, but you could touch the button and a red 7-segment LED display would light up to tell you the time and then, of course, go back to sleep. just like my current watch, some things don't change, it didn't take long for green LEDs to appear, it was about 10 or 15 years before green LEDs appeared and the reason it took so long is because researchers were trying to figure out what chemicals They could use in the diode that would widen the energy gap enough to emit green photons, which was not an easy problem to solve, but they finally got the green night to turn out to be reliable and reliable, and what you have here.
clean code   uncle bob lesson 6
It's actually two LEDs, one red and one green, and when you mix them together you get this nice orange color. Well, what we started to see then were all these red and green signals that alternated between red, green and orange because they could turn on both. colors at the same time, so you saw a lot of displays in stores that had red and green letters and then they mixed them together and got orange, which was very common. It took a lot longer to get blue LEDs since the power gap is really big. and research has struggled for a long time to figure out what materials they could use and what chemicals they could use to make that energy gap grow to a blue photon, but they finally got blue photons and suddenly we had the three primary colors and we could do LED panels and LED screens and looking at that thing, you know, my watch only has red, green and blue LEDs, my screen, my iPads have red, green and blue LEDs, and these LEDs are so efficient, so you turn on all those lights, There have to be thousand watt lights, well, maybe they're LEDs, no, they're not.
I already said no. I looked at them with the diffraction grating, they are not LEDs, so it's probably a thousand watt bulb in there, how many watts would it take to light an equivalent LED and the answer would be about 10 watts, no, no, about 100 watts, about 10 times more efficient and that's why I can walk up to these things and I touch them and they're not very warm because they don't use a lot of energy. I have equipped my house with nothing but LED bulbs. All the light bulbs in my house or LED bulbs in it make me smile.
You know, I turn on the lights and they're all LEDs and they light up, yeah, it's really cool, it's all quantum mechanics that now lights up my house, yeah, and my God-loving wife grew up in a house where the father always said that They will turn off the lights and Now I tell you honey, no, no energy is used here, it is not difficult to turn off the lights. Ah well, what can we say? Uh, so our last talk of the day is supposed to be two talks, but I. I'm mixing them into one because why the hell not?
You know, the last talk of the day is about agile, let's talk about agile, maybe hmm, yeah, okay, that looks good, are we good? Yeah, we're okay, okay, how many of you were? doing agile, uh-huh, that's everybody pretty much okay, what kind of agile is it and by the way, I noticed that there were hands in the air, but they were like yeah, so okay, what kind of agile is it? ? This is scrum or scrum. butt or scrum fail or XP then you do an XP XP flow programming what is the size of your iteration I think I asked you that well two weeks all in in two weeks well well well then why do we do agile what is the reason what is agile What does it mean to be agile?
So before we can answer those questions, we have to look at some of the external reasoning. How is a software project managed? Now I've put some answers on the board and I'm imagining some. Some of you have experienced some of these answers and those are the wrong slides, so let me show the correct slide. Now it's the first. Probably everyone has experienced how we mismanage the software project. Another very common approach is hope. In prayer you know this is the approach in use if you can see two parallel lines carved into the carpet next to the manager's desk as he prays to God.
I hope this project really works and one of the really common techniques is to dictate and motivate. telling everyone how bad it will be if we don't deliver this project and then motivating everyone by hanging pictures of people climbing rocks and seagulls flying over the ocean now we'll finish the project now the reason we need to have a way to manage software projects is because Mismanagement has some severe costs, so for example, if you mismanaged a software project, you'll create the wrong product. Who has done this job for six months? Will deliver a product. Have the customer look at it and tell you which one it is.
Damn, what good is bad management? The project has been poorly managed correctly. The managers failed to manage the project correctly. They delivered the wrong product. Another way is another symptom of poor management. It is producing a product of inferior quality. Who made this? You worked for six months. and handing over a bunch of crap is okay, that's bad, that's bad management, the project has been mismanaged, has anyone ever been late? You know it always works, that's poor management, right, a software system is if a software system is late, it's been mismanaged, it's management. The problem is not a development problem, it is a management problem.
The last one may not apply here. I don't know if you guys work stupid overtime like we do in the United States. In the United States it is considered a badge of honor to have worked 80-hour weeks showing your dedication to the cause. I don't know if you guys do that, but it's certainly a problem of poor management. If they are forced to run a software system by working tons and tons of overtime, now there is a management problem, why? It is very difficult to manage software projects, what is the root cause of this and the answer is known for a long time and it is actually a very simple problem, good, fast, cheap, done, pick three, you won't get the fourth.
This is called the iron cross of a kind of project management. Every project manager in the room knows it. Any project you do can be good, fast and cheap, but it won't get done, or it can be done cheap and fast, but it won't. be a good choice, any of the three you want, the fourth, you can't achieve it, by the way, this is just a fundamental law of any project you do, you can't take all those things and get them all, so a good manager has to look, look at that square in the Eye and decide how to adjust the knobs, how good, how fast, how cheap, how it's done and a good manager will do it by adjusting the knobs with a lot of feedback to bring the project to the best possible outcome, that outcome may not be what was originally intended. starting a project with all kinds of dreams and hopes, when the project ends you might end up in a very different place, but at least it's a good result and that would be a successful project now if you're going to push a project forward. to achieve a successful outcome, to get the best possible outcome, what you need is data, you are a manager, you need to know what the heck is going on there, what's going on, have you ever had a manager come into the team room and tell you?
Will you ask the team how this project is going? Which is the answer? Pretty good, you think there's data in that. I think the managers got some idea of ​​how these projects are actually going and everyone on the team is sitting, yeah, yeah, pretty good, pretty good, don't tell them anything, so no data comes out. that we need to find a way to get data, how do you get data well, what kind of data do we need, wouldn't that be great? This is a graph on the wall and the graph shows how much was made each week and what it means.
Let's say if there are only story points, well, what are those? Don't know. some number doesn't matter and if you believed it, now this team got 45 points that first week and the next week it was like 42, maybe in the week. after that it was 50 points the next week it was 40 points and if you look at that type of study for ten seconds to say, well you know this team is getting about 45 points a week, next week they're probably going to get about 45 points achieved over the next ten weeks. I think they'll probably get 450 points. This is really useful information if you're a manager because now if you're a manager you could start predicting things that you can look into the future.
Let's say, hey, this team is doing all this every week, okay, and then there's another piece of data that would be really useful, which is a burnup chart. The burndown chart says there are 400 and for 500, aren't there about 500 points until the next one? important deliverable in the next release and every week we see that number go down a little bit, you would expect it to go down 45 points per week, although maybe it is, maybe it isn't, but at least you can look at that graph and notice that the graph has a slope and that slope allows you to project and say, "This is going to be done," Minmei, now you don't know if it's good news or bad news, the manager does the right thing if he's supposed to deliver. in June it's really good news, if you're supposed to deliver in April, it's really bad news, but at least you know it well, at least you're a manager, you know, oh, now, what happened on February 17, we ended up working for a week with there is more to do and you said that scope changes are certainly possible maybe there was a change in requirements.
Do the requirements change? Of course they changed. It's a software. Remember that we want the requirements to change first. Any software team that freezes requirements is making a terrible mistake. Requirements are not frozen. We never want requirements to be frozen, we want customers to change requirements as soon as they know the requirements need to change, so okay, maybe that's what happened there and we want to know about it as soon as possible so we can put it in. appears on the chart and everyone resets what their expectations are, but the other possible reason the bars are a little higher is that the developers re-looked at theproject and realized that their estimates had been wrong, so they rested, which is perfectly acceptable because their estimates are not promises and therefore we want to know about it as soon as the developers realize and you know our estimates original for ignite.
We are a bit optimistic, we want to know as soon as possible so that everyone understands what is happening with this project. put these two graphs on the wall, anyone can walk into the room where those two graphs are, look at those graphs for 10 seconds and say, "hey, this team is scoring about 45 points a week." I think they will be finished in May, that's really powerful. of course maybe not maybe not a big number maybe maybe I wanted it done sooner, well that tells you that you're not going to make it. This is Angela. The reason we are agile is to have these two charts on the wall.
You have these two charts on the wall. Hmm, some of you do the same. The rest of you, if you don't have those charts on the wall, you're not producing the data that managers need to know how screwed they are. The purpose of agile is to destroy hope. Some people say they know we're doing agile. you can go fast agile doesn't make you go fast it doesn't slow you down it doesn't change anything about how fast you go agile is just a way of producing data so you know how messed up things are and then we can manage we want to know asap how messed up we are to be able to manage because there is a thing that managers do called managing we want to be able to manage the project to get a good result there is a question right here, whoo- hoo, can I throw this again No, no, no, no, okay , ready, yes, okay, for the first one I think the team is responsible, but for the second it is the product owner or manager.
I mean, the team doesn't know that the team needs to be. fed with all the stories made in my environment, they still don't know, no, don't wait two months on the phones, but not five months, so is it the team you are responsible for? So this is the second graph there. It is the evolution graph that tells us the number of points until the next important deliverable, okay, so that deliverable has been planned. Did you know that in Agile you plan about three or four months? What you are seeing in all the iterations and thinking. well these torch stories in this iteration and those stories in that iteration and we think maybe it will take another five iterations for these stories all of that planning is done the way planning is done in pretty much every iteration so in each iteration we select another one like three or four months, we look into the future, yeah, where will we be in three months?
All of that is very variable, but we do it and does that mean that we are not going to introduce new requirements in the middle? No, we do, you can see it. right there new requirements appeared and new stories were added to this in the schedule okay this is agile this is the purpose of agile the purpose of agile is to have these two charts on the wall if you don't have these two charts on the wall wall you're not doing something agile you're doing something else now the charts have to be on the wall they could be on some spreadsheet somewhere it's better to have them on the wall because then everyone can see them and everyone can know how screwed they are and that's something good, so I would like to see those graphs on the wall, what are those points before we talk about the points, let's talk about projects, what is the first thing you know about a project, before the project is named, before the requirements exist.
There's one piece of information that you have about the project, it's always the first thing you know, yeah, thank you, the date, and that's for very good business reasons because there's a group of people that sit in the room and say, man, we have to to have something for November I don't know what it is, but it has to be in November because there is a trade fair in November, we have to be at that trade fair or there is a shareholders meeting in September, in November we have to be at that shareholders meeting. the project has to be done something has to be done or and this is good we ran out of money in November this is a good business reason and engineers and developers often scoff at this idea that business people create these arbitrary deadlines and force them to meet with arbitrary deadlines what you don't understand is that those deadlines are actually real and there are real consequences behind them, so you can't make fun of business deadlines, they are real business deadlines, they have real reasons behind them yes, sometimes there are managers who set false deadlines that is immoral but the majority don't do it the majority are setting real business deadlines there are real teeth now the date is frozen there is no point arguing about the date it is a difficult business date the requirements are not the requirements are changing at the same time At first we don't even know what the requirements are later, we'll have an idea of ​​what they are, but they're going to change all the time and why they're going to change all the time, because customers don't really know what they want and the more they talk about what they want a better idea, they kind of understand what they want, but they don't really know what they want until they see something executed that is not what they want and then they say oh no, that's not what I wanted, so We'll have to present things to customers very early so they can tell us.
Oh, that's not what I wanted. I know that's what I said I wanted, but now that I look at it, that's not what I want at all. We need to be able to carry out that cycle very, very quickly, this is the environment of software developers, it is an environment where the dates are fixed, the requirements are not and somehow we have to bring the project to a good result. This is an old problem that has existed since then. Software has been around and there was a guy who wrote about it in 1970, his name was Winston Royce and what he said was that he wrote a very famous article on managing the development of large software systems and in that article he said: wouldn't it be great Yes We could divide the project into three main phases and in the first phase we would analyze all the requirements and put a date at the end and when we reached that date and we had analyzed all the requirements we knew we were 1/3 done and then we would design the implementation and we would spend the time designing the implementation and put a date at the end of that and when we would get to that date and when the design would be completed.
We'd know we're two-thirds done, wouldn't that be great? Now Winston Royce wrote that in an article many people agreed with him to sit down. Yeah, that would be cool, so here's the image that appeared in Winston Royce's article on the first page the first page of the Winston Roses paper in which he made this case, wouldn't that be cool? In fact, the case he made was this is how it's usually done, this is how software is usually made. Now notice the flow of arrows. Those blocks look like water rolling down the rocks. It is called the waterfall model.
What Winston Royce went on to say in his article is that that doesn't work because as soon as you get to the testing phase you realize that the design phase is screwed. and as soon as you try to touch the design you realize that the requirements weren't analyzed properly and you really have to go through that cycle over and over again and really the only way to do anything is to just do it all at the same time apparently Nobody read that document because the image that appears in the process documents of the time that companies and countries adopted is only the one that took the first page, assumed that they knew what it said and copied it, their documents said that this is how it should be done. making the software this was 1970 now I was a young programmer in 1970 I had been a programmer for a year or two, a professional programmer for a year or two, professional in quotes and I remember when Articles started appearing in trade magazines about this new idea of ​​splitting the project into a new analysis phase into a design phase and an implementation phase and I remember thinking, "Oh well, some way to get a resolution on how to build a software project." For the idea, I was a young man and I was excited by this idea.
Somehow, some way to control a software project, a lot of other people apparently felt the same way and we started creating software that way, so now I'm going to take you to a meeting this is a meeting that would have happened in the 1980s and 1990 the big boss calls us into a conference room and says okay, we have a new project to do, you no longer have your old projects that you will be in This new project we don't have a name for it yet, we still don't have any requirement. It should be done first in November.
Now, how long will it take you to do the analysis? We don't have any requirements yet. Wait, no, no. If they are professionals, they have been through this before. I don't need an exact number, just a date to include in the schedule. Please note that if it takes more than two months, it is better that we do not do this project. Two months good. That's what I also thought about how long it will take them to do the Hayley Evan analyzer design. Now I know they are professionals, they have been through this before. Keep in mind that if it takes us more than two months we are not going to do the project, what do you say?
Two months okay, that leaves us two months for implementation. Thank you for coming to my meeting. Who was at that meeting? Many of you, the rest, consider yourself lucky because this is how software was programmed in the 80s and 90s and unfortunately they have already moved on to the 2000s and many companies, so now you leave the conference room and go back to your desk. What are you doing? We are analyzing. What is that something? Now the good thing about analysis is that you can read books on analysis there are a lot of books on analysis and you can get all those books on your read them and you will find that they all say different things people disagree on which analysis is the best definition of analysis is that's what analysts do, but that's what we're going to do for two months, we're going to do it for two months, so this is a good time in the project because you know you can spend your time negotiating and talking to some clients, writing some notes and finding out. requirements and playing little games about what if I did this and what if I did that and I have to do all this kind of hectic work and suddenly it's July 1st and what's the status of this project, we're done with the analysis. why it's July 1st we don't want to be late so we better get this over with.
This great thing about analysis is that you never know when you're done, there's no way to know when you're done, there are no closing criteria, there's no definition. so you better finish by July 1st because you certainly don't want to be late and you will have a big celebration with balloons and speeches as you go through the phase gate into the design phase, everyone is on time, these projects are on track, This is the first big lie that the process tells you right now what we are doing now we are doing design now we know what design is design is pretty well defined, we are going to divide the requirements into modules and we are going to We will be designing the interfaces of those modules and we'll break down the organization into teams and figure out the workforce of those teams and how they're going to communicate and how the modules are going to communicate and all this very interesting work during the design phase.
In the meantime, of course, the requirements are changing and we would like to go back and re-analyze them, but we don't really have much time here because there are only two months, so we incorporate those new requirements into the design, but that's okay. because the design keeps coming up and we're drawing diagrams and breaking things down and doing some really fancy work and then it's September 1st and we're done with the design because it's September 1st because the design is one of those things that you can't finish No I know when you are done with the design analysis and the design are not boolean deliverables, they don't have two states done and not done, they are just open, so now we are done with the design, what are we doing now?
Other speech bubbles and speeches happy day the project is still going if we could just do it one more time if we could just say we're done with deployment and I know many of you have tried but there's something about deployment that really should be done now we start the implementation phase what are we doing in the implementation phase? implementation phase it is completely clear what we are doing in the implementation phase we are coding and we better be coding like crazy too because we have wasted four months of this project so now we are there writing

code

like crazy writing

code

while the requirements change and you would like to reanalyze them and redesign them, but you don't really have time for that, so you add them to the code and in the meantime you look at the code that is coming out and compare it with all those design documents and you realize that you were smoking things very heavy when you made that design becausethe code that comes out looks nothing like that, but you don't have time to deal with it because you have crazy code, go, go, go, sometime around October 15, a developer pokes his head over the cubicle and says, hey, what's the date?
Oh man, you mean we have to deliver this in two weeks? There's no way we're going to deliver this in two weeks and someone goes and tells the stakeholders and you think the stakeholders are happy. Can you imagine the state? Imagine, you can imagine the reactions of the stakeholders. You've probably experienced the reactions of stakeholders. What is it referring to? You can't turn it in, there are only two weeks left until the deadline. Couldn't you have told us during the analysis phase? Couldn't you have told us then that you were going to be late? Weren't you trying to figure out how long it was going to take?
Once you're making estimates during the analysis phase, what happens to the design phase? Couldn't you have told a system during the design phase if you weren't sizing modules and doing labor analysis? Why did you have to wait until two weeks before the deadline and they're right, so now the project enters the death march phase and morale goes down the toilet and everyone is trying to do something and no one is happy and executives throw their hands up and customers are upset, no one is happy and sometime in March you deliver something lame that does half of what customers want, everyone is upset about it. you come off the end of that and you, Jesus, I never want to go through that again next time, we'll have to do it right, we'll do more analysis and more design.
Now I call this rampant process inflation, right? what didn't work and you do a lot more, so here's agile, agile comes along and turns us upside down, wait a minute, here's an agile project, that bottom right corner is a date, let's say it's the first of November. What you know about a project is the date that doesn't change. What do we do well? We take the project and, as best we can, chop it up into a bunch of sixth time boxes. Those vertical slices are all fixed time boxes. Let's say they last two weeks, so we know what the end date is, we know what today's date is, we can calculate how many of these boxes we have, how many iterations or sprints we have, let me tell you that's okay.
Well, that will be our project now, what are we going to do in that first sprint, that first iteration, the first two weeks? Some people call this zero iteration and what we're doing there is we're gathering some requirements, not all because we can. I won't understand all of them, but we will talk to the client a little. This is when we write use cases or nowadays we call them user stories. We are writing user stories. We use and I'll talk to you a little bit. We'll talk about user stories later, but a user story is usually just one or two words on a card.
I don't need a lot, I certainly don't want a lot of details, but the details come later, so we just want to have a reminder, a little card that reminds us what this feature is and the features should be relatively small, then we will talk to customers and write cards and we'll write stories and what will make our source control system work and we'll play around with some design and architecture ideas we'll go to whiteboards and draw diagrams and try to figure out what the overall architecture of the system is. We don't want too many details yet because we haven't actually written any code, but I kind of want to get an idea of ​​the shape of the system and the module breakdown, etc.
We're doing traditional type of design, architecture, and analysis work for one iteration and at the end of that iteration we've done it for maybe a week or two. then we start the actual implementation. Now we may have done some real implementation in that first sprint, but very often you don't have time to do that, so okay, in the second sprint we start doing some real implementation. What are we doing right? of guessing how much we can do in that sprint, then we say you know we can get feature one if it's the eighth and feature twelve in that sprint, okay, then we start working and we're coding and of course, there are requirements that are changing for us, but those requirements are getting mixed up in this deck of cards that we're creating, so okay, we're writing code and writing code at the end of the sprint until the first sprint we're coding.
Finished? everything we said we would finish no, we are programmers, we never finished everything we said we would finish, how could we not, snow? We didn't do that, we missed we just misestimated everything, we only did a little, but it's okay, now I know we did a little, we did a little, now we know how much we can do in a sprint and we write it down and we do a little math and a little math says we're screwed, oh yeah. It looks like we'll be done sometime in March, that's not good news, but you see those brackets, those are the error bars, the statistical error bars, now they don't give us much hope either, but you know, maybe next one.
The sprint will go better, so we start the next sprint when things go better. Yes, the source code control system was working a little better. The architectural idea we had is actually working. We refined it a little bit because we're always on the board. refining the designer or finding the architecture diagrams on the board and the diagrams on the walls and things like that, we're always doing that kind of work, we're also coding, you know, making more things work and when we're done with the next sprint in We actually did a little more than we did in that first coding sprint, maybe we'll do it a few more times and by the time we're done three or four sprints, we'll be able to do those calculations again. and now there's no point in hoping that we just won't make it to November, we won't have it now, by the way, this is early in the project, it's only been about five sprints for the five Sprint Sprints, something like that, maybe a month and a half .
It already happened, we already know, no, I'm sorry, it's not going to happen. We will have to manage this project somehow. So what can we do? How is the project managed well? There are a lot of options. Remember the iron cross of project management. There are four things you can do. manipulate, so let's take a look at those four things that we could go to the top, the schedule knob, go to the stakeholders like stakeholders, do you mind if we don't deliver until March? They may not like it because they had a very good business reason why November was today, so it's very possible that stakeholders will say no, we need this in November, not March, it can't be that brands have to It being November, however, I will say that if there is a time to change the schedule, this is the time because it is still early, they may not have made promises, but they may not have made plans, if they are going to a trade show in November, they may not have bought the booth space yet, if they go to a shareholder meeting in November, they may have made no promises to shareholders yet and if they are going to run out of money in November, well, I have a little time to get a bridging loan, maybe this early is a good time to tell everyone you're going to be late, I won't let them know. a story about this I once led a group that delivered a product to phone company executives it was a long project, we were going to do it for a long time and we started and told him that we had given him a date by which we thought we would do it. finish, we came back a few months later and said, we're not going to finish, so we'll do it six months later and this group of phone company executives stood up and gave us a standing ovation for telling them that it would be late, but giving them enough time to prepare , you shouldn't expect that, but it didn't happen to us now, maybe the schedule can't change, okay, the schedule can't change, well, there's another knob there, the staff knob, everyone knows we can go. twice as fast by doubling the staff, what twice as many people can we do twice as much work that always works, right?
Of course it doesn't work, because doubling staff doesn't have the effect of doubling performance. What really happens is that when you add new people to the project, the old people slow down enormously, the whole schedule starts to break down because the new people suck the life out of the old people and you hope that after a month or so two, new people people get smart enough to start getting faster and even if that is true it is very risky and also if you add more people to the project it will cost more money so maybe there is no budget for that, so let's assume we can't change personnel. now I changed staff, I ran a project and we realized early on in that project that there was no way we could meet the deadline and the deadline was really important, it had legal consequences and because it was early enough, I was able to add a few more people to the project and yes, we slowed down for a while, but we did speed up and were able to meet deadlines a little faster.
It works if you can do it early enough. It works, but it's risky. expensive, so let's assume we can't change personnel, okay, there's that knob at the bottom, the quality knob, everyone knows you can go a lot faster producing crap, so you know what guys, I know you want to write tests and everything, but we are here. really under pressure so you have to scrap all that testing stuff you're doing, you're spending too much time reviewing code, scrap that because we just don't have time for that and I don't want anyone you know following you around.
There isn't any kind of process anymore because it takes too long, I just want you to code, that's a really good way to make everything slow down like crazy. I've already talked to you about how you go fast, you go fast if you go well, this is a little bit in your head it's just one bit a little bit is in your brain if I could find it in your brain I would change it for you but you'll have to do it yourself and this bit tells you the only way to go fast is to go good when you turn that bit in your head from hard experience you will usually find that that knob should be as high as possible all the time quality is the only way to go fast, so come on I'm not going to touch that knob and that leaves another knob to turn whatever you reach, maybe just some of those requirements that we were planning really didn't need to be there for November, maybe the client could live without some of those requirements for a while, so let's talk to stakeholders about that and see if we can live without some of these requirements.
Interested parties, we cannot deliver all of this by November. We can deliver something by November. Not everything, so it is necessary to take some. No, no, I can't get anything out of those, we need it all for November, well, yes, but we can't give it all to you for November, look, here's our math. I don't want to see the math I just learned. all by November, yes, but no, there is no way we can all agree on how this argument can continue for a long time, and while the interested parties have the moral high ground and pure righteousness, the developers have the data and if you work in a rational organization.
I leave it in your hands. If you do, the data must win, so at some point in a rational organization the stakeholders will say, "Okay. I should have hired a bunch of different people, but I'll stick with you." You don't need that with a second left, you can get rid of that one, you're going to give it to me later, okay, yeah, yeah, I'll give it to you in December, but we can't give it to you in November, okay. and get rid of that one and the one in the middle, you can get rid of that one too.
You know a second from the beginning, it's a real shame you did that because we sure don't need it, that's bad, yeah, we need it. I don't want to hear that again, we never wanted to, you know, invest in work that we don't need to deliver before the date, so from now on, every time we start a new sprint, we will go to the interested party and tell them which of these, Do you want us to start next? We don't care, you know we're programmers, we can deal with all the weird stuff, like if you want to log out before you log in.
Okay, we can do it because we are programmers, we can figure it out. just tell us what you want first so we never give you something you don't need agile be agile at the 30,000 foot level agile is a simple technique take a project that is subdivided into time frames measure how much gets done in those time frames you use that measure to project the completion date and then you manage and manage and manage because every software project is always a horror scene, everyone will need some kind of management because we don't know how long it will last.
It will really takeget 30 done, no, why just say 30? Well, you wanted a number we don't know, 30, so now interested parties choose cards that add up to 30. Log in, that's a three, yeah, that's pretty important, but three is expensive, it's like 10% of the budget . let's wait for him to log out cheap one do it yes deposit for ooh that's expensive leave that one aside withdraw that's very expensive five but I want to see the money come out to shoot you're going to do it this is the process Stakeholders take advantage of this card and make a cost-benefit comparison.
How much value do they get for the cost? They don't need to know what the real cost is. They don't need to know what three means. I need to look and say oh, okay, that's a little expensive, that's ten percent of the budget, okay, am I getting value for it? Hmm look anyway, it's a pretty simple ROI calculation. Good product owners review the platform and select the highest one. value cards that have the lowest cost and that's great and they will rise, they choose 30 of them, points that add up to 30, okay, the rest of the deck just stays here now we have cards that add up to 30 and now we start the process of implementation of those cards.
I'll talk about that process later maybe because we don't have much time, but generally the process looks like this, one by one, the cards are moved from the ready pile to the finished pile. Now let's say we have a two-week sprint. We start it on Monday, so the following Monday is the midpoint of the Sprint. How many points should be in the finished stack? 15 yes, to carry out this process you must be able to divide by two on Monday morning. we have a little meeting how many points are there in the fact stack there are only eight in there and we're not going to finish 30 we're lucky we'll do 16 better call the interested parties stay calling we blew it man we said 30 but I don't think that's more than 16, why don't you drink?
You know that you will have to remove 14 points from the stack. What do you mean you said you would do 30? Yes, but we're halfway there. Through this sprint we have only completed eight, we are not going to accomplish more than another 8, you have to leave us eight, leave us the most important eight and of course the stakeholders are very upset about this because it has been a full week. and man, that's a lot of time wasted, but okay, they go through the stack and leave you with eight and by some miracle you end up with those eight and you get 16 points and now you put in a little bar. graph on your velocity chart you say 16, okay, we know how much we can do in a sprint and what you do is the next sprint starts, the next sprint starts, there's a nice little iteration planning meeting that should take about a half hour, everyone sits down in that meeting and the stakeholders say how many are going to do this sprint 16, that's what we did last sprint, they will do 60, well you said you could do 30, yes, but we got sick.
Okay, They get 16, 16 highest value points they can get. Now we begin development and on Monday, the halfway point. On Monday there are 12 points. Things have been better. If we tell them that they will come to the meeting, it is the middle ground. On Monday they will come to the meeting, they will search the garbage dump. I'm like, hey man, you've got 12 points there, you're going to get 24 points in this iteration and they're going to come and give us some more cards and Friday comes and yeah, we didn't get the 20 for them, then we did 20 of them, kind of disappointing, but okay, so we start the next iteration, we start the next iteration, what do we say, stakeholders, how many points do you want? 20, so you did it last time give us 20 now this is the process this is how it goes around and around in the cycle you only measure how much you did in each sprint that's what you say you're going to finish next time it's not a promise it's It's not a guarantee, it's just a little bit, you know, it helps, yeah, where's that thing?
Who has that thing? Throw it away. So why don't you take for the third sprint 20 plus 16 divided by true instead of another estimate? Well, if you want to do that, you can do it. If you want to do some kind of complicated numerical analysis and calculation, you know, do it. The point here is that there is a lot of noise in this signal. Well, you'll partially paint these bars on the velocity graph and see. as you know, a 16 and then a 20 and then a 12 and then you know that 18 will go up and down a lot, you'll have to go through several iterations to really see what the signal is, but the signal will be there, so I mean, it's possible It doesn't pay to do a really deep calculation there, but you can try, if you want, what's happening with this deck grows, grows because every day we add more cards to it.
Stakeholders say, hey, we should do this. should do that, programmers go to stakeholders and say hey, did you think about that? Oh, that's a good idea, put that in the deck too to make the deck grow. What comes out of the deck. High value cards. Cards that have a high value for a low value. cost high ROI cards that's what comes out of the deck what goes into the deck all kinds of cards some of them have a really high ROI some Beverly low ROI we're not doing that calculation from the beginning so you start the shuffle to reduce the ROI the more time goes by the more the ROI starts to decrease, this magic moment comes, you start the next iteration, stakeholders to your stakeholders, look at the deck, There is nothing here worth making projects again.
Projects don't end when everything is done Projects end when there is nothing else worth doing and the stakeholders recognize that yes, there is nothing else worth doing, it's remarkable what cards are left in the deck. I once worked on a project where the first card wrote the card that gave the project, his name was never played, it just stayed in the deck. There were always more urgent things to do and when the project ended, this had lost all importance. It is remarkable what is left behind. Can an iteration fail? Without iterations, it does not fail. It is impossible for an iteration to fail because the job of an iteration is to produce data and even if it produces nothing, it has produced data.
An iteration that doesn't deliver points is good information for managers, because something went wrong. It is better to solve it. Iterations don't fail if you say and we think we're going to get 12 points in this iteration, but you only get 6 in a theater at the end since the iteration failed. No, iteration simply gives you data. Iterations don't fail. The number of points in the iteration is. It's not a goal, you're simply trying to measure how much you can do in each iteration. Now let's look at that velocity graph for a minute. What should be the slope of the velocity graph over time?
Slow and steady. Totally flat, we don't do it. we want it to go up, we don't want it to fall, but if you're a project manager, what would you like to see go up the slope? It would be nice, wouldn't it? If you're a project manager, you want to see that. The slope goes up, that means you are achieving more over time, how can you make that slope go up? Guys, we got 20 points in the last sprint, but I think we can do 22. I know that with a little extra effort you can do 22 points. Think of it as a stretch goal, the guys get 22 points.
Here's what will happen: They will get 22 points, but how will they get 22 points by putting slightly different numbers on the cards? Because remember that these points are not anchored to anything. absolute so we'll be in Dutch and no one does this intentionally well, it's not an intentional thing, you just know you're supposed to do 22, so you're writing numbers on the cards and humans are what humans are, they'll write numbers. that will fit the first one, the next sprint might not be 22, the next sprint might not be 22, but the next sprint will be 22 and the project manager will go, yeah, I have the formula, I know how to do this guys, it made 22, can you give me 24?
Now this generates a spiral of inflation. They will return to that team a year later. They will be making a million points per sprint. They don't want to see a positive slope on the speed curve unless they can. explain it with something like yes, we added three people to the team now, that would be a reasonable explanation, you know or you know, Jim finally figured out how to make the database work, that would probably be a reasonable explanation, but you don't want to see a positive trend , it's a positive trend, it probably means that someone is putting pressure on the team and the pressure on the team is going to change all the numbers, so I don't want to see pressure on the team, especially that. type of pressure what would it mean if the velocity chart goes down sprint after sprint after sprint it gets less and less there is a mess someone is making a mess the engineering practices are not being followed there is not enough testing there is not enough designs and refactoring architecture starts to fail and you want to detect that very early, however, one is complicated by the other effect because when the developers start making a mess and they realize that they are going slower or they don't realize it but they feel it, they start changing the numbers on the cards to flatten that speed, so the way we fight is this, it's very simple that login card that was a three, you keep it and you're always comparing it with that golden login card, whatever whatever that letter is. what you said was a three, you're always comparing to that saying, okay, how does this compare to the login which was a three?
You try to anchor it against that card, you try to do it for as long as you can. It's 3:30. I have half an hour left in that half hour. I want you to ask me questions. Oh, I've been here for two days. I've been speaking my heart out, um, yes, mister microphone, so every time we deal with this scrum process, I constantly start. Hearing that at some point it's okay, we have to put on the cards the acceptance criteria and the definition of done and then it stops being a card and of course because in most cases there is a jury, then It's very easy to write a lot of things in JIRA, so it's very easy to write a lot of things here, right?
And it's great because no one reads it, so it was a good question. Let me answer the question for you. What we actually write initially on the cards is just a couple of right words, just enough to remind us of a story, it may be a sentence or a small phrase and we deliberately ignore the details from the beginning, but what happens in the planning meeting? of iterations? That half hour meeting at the beginning of each sprint that at the end The journey is not half an hour, it's usually about an hour or hour and a half, it depends on how long the Sprint is.
Two weeks of Sprint. Two hours, probably for the iteration planning meeting. During that meeting, now the details are discussed, who provides the details correctly. The business product owner is talking to people and business analysts, if he has them, but what really comes out of QA. QA are the people who specify how this system should behave in a discussion with the business analysts in a discussion with the product owner. QA is the one who writes the acceptance criteria, the definition of done now, they don't write it in some detail on the card, they may write a couple of notes on the card, but then the QA people go off and start to write acceptance tests. executable automated acceptance tests written in some language that QA staff can handle and that doesn't have to be.
You know a programming language, if your QA people are programmers then make it a programming language, that's fine, but your job is to write the acceptance test that will define what is done for each story, the programmers will know that You are done with a story when you pass the acceptance test for that story, that is how you know you are done with a story, acceptance tests should be written during the sprint, sometimes they can. It will be written a little early, but I don't want to get there yet. They wrote during the sprint. We want all acceptance to be tense.
All acceptance tests are finished at the midpoint of the sprint so that programmers have enough time to finish. your stories and making sure they all pass the only stories that can accumulate points in velocity are the points that pass the acceptance tests, so that's the basic flow, if at the midpoint you don't have all the acceptance tests written, It means you don't have them. You either have enough QA people or you have too many programmers, one from the other, so it tells you that you have a staffing imbalance now, if it's a temporary staffing imbalance, a couple of programmers can jump the line and help finish the acceptance test. that should take about half a day if that happens repeatedly then you should probably add a QA person or maybe make one of the programmers a permanent QA person or something, but it helps youcase study and this is where I sit or or some other people sit down and write code and the code that we are writing is quite significant so it takes us several hours to see us write this code, but what you will find in those case studies is how we break the rules because we always break the rules, the case studies show a pragmatic application of the rules and we try to abide by those rules as much as we can, but in each of those video streams there are moments where we just look at each other and We say "okay, well." I can't, I can't follow the rules here, we're going to have to play with it and judge it.
We will get back to the rules as soon as we can. This happens all the time, so I've been preaching to them for two. days about all these rules and I never did everything right and the best way to go fast is to win well and then you always have to remember that this is engineering and there are always trade-offs, there are always no, I don't want anyone to do it. use that or to get a license to say oh, Uncle Bob just said we can make a mess because you try as hard as you can, but the rules sometimes just can't be kept all the time, so he breaks the rules.
There was one more question here and then I'll be done, yes, heights, well, hello, okay, apparently that's my question, earlier you mentioned that analysis is what analysts do. Yes, you just mentioned business analysts and I have a lot of business analysts in my department and I was wondering how they would relate or how they should relate. to an agile team or maybe face if they finally can or shoot work on an agile team business analysts are one of the hardest jobs out there to be a business analyst you have to be a business analyst you have to be technically astute enough to talk to the programmers and you have to be personally astute enough to talk to the business side.
There are many people who are like that and who can swing in both directions and communicate well across that boundary. You don't just have to communicate well across that boundary. You also have to be precise, you have to be able to put yourself in the customer's position and understand what the customer needs so you can communicate the requirements to the software development team, but then you have to be able to put yourself in the programmers' shoes. position yourself and understand what they're fighting against and how they need design and then you need architecture and they need testing and they need rigid specifications, so it's an extremely difficult role, every sprint team needs someone who can fill that role in small sprint teams, i.e. the product owner in larger teams is in larger organizations, the product owner will generally have many teams that he or she serves and will delegate that function to the product analysts, to the business analysts, that's how I define the business analyst, that's how I would say it, that's how I responded. your question, thank you, okay, in two days and it's not often that I have an experience like this, this has been unique, a lot of work has been done here, a lot of work has been done, the videos, you know, and the end was the appearance . you notice how well everything worked correctly and the schedule of things and how you know the breaks and lunch and the timing of things were set up and it arrived and everything worked and it was an easy and enjoyable flight that takes a lot of time. effort to make something work like that and then you have me and I'm a complete prima donna because I wander around the stage and I break all the rules about you know you're supposed to stay in one place when you speak I know and I do all these things and all those who have been so kind about this may be.
I feel as welcome as I have felt anywhere else. You have been an excellent audience. I just want to say thank you all and thank you all. You guys did a great job and you've told me that beyond the recognition that everyone else here has received, someone here deserves a little extra recognition for being the key person in all of this. Can I have Kim up here? She here. These are not. I for one wish they were, but it's your associates who really value you, so let's all do it again, hey, thanks everyone, it's been a great time, take a break, now you know it's hard to sit in a seat During two days.
Listen to a guy who talks forever, thank you all.

If you have any copyright issue, please Contact