Johanna Rothman : Yes, and this is a great thing. This is why you want to monitor your velocity. Velocity is your way of saying: What did we do in the last iteration? What are we doing in the next iteration? And you use that to say: Are we pretty much on the same track? You look at your cumulative flow and look at if you are roughly spending the same amount of time as before on your throughput.
And while I want to say: What is our velocity so we can do a little bit of planning for the next iteration? I also want to look at velocity to say: Are we losing ground from iteration to iteration? Not to punish ourselves… but to see if we are growing Technical Debt, because this will determine if we are taking too many shortcuts. Give me features! When velocity goes down over time and it continues to go down… and we have more and more trouble getting the features out… now we have to take action! If you have proof in the form of velocity over time i.
And data trumps guts every single time. Carolyn Seaman : Some people have started talking a bit about automated static analysis that looks at the source code itself to find different types of anomaly-looking problems. And people have started playing with that in terms of finding particular kinds of Technical Debt. Do you have any experience with that or any thoughts on what role automated static analysis tools can play when trying to manage Technical Debt?
Or just using it to look at all of the code? I am a big fan of saying: Do we have a mess? And do we want to go in and clean it up? And when do we want to go in and clean it up? In my opinion, developers have to go in and look at every single defect. Developers have to go in and clean it up as they encounter it. If you look at it and it irritates you… then you should go in and fix it. How much analysis do we really have to do as we proceed?
I have very mixed feelings about this.
So can we do it on a really small piece of code? That would be great! So this is the opposite of a cascading effect. So I am not opposed to static analysis tools, I just want to know: When does it end? I want to get the features out as much as the product owner says. And I want to make sure that we are not falling into the trap of re-designing when we should be re-factoring.
Agile Book Reviews – Pragmatic Scrum
And you open it up and you realize it has been degrading while no one was looking. So, if you are going to use automated static analysis tools in a targeted way like you were describing, how can you be sure that you were targeting it at the right places? Johanna Rothman : Right, so no-one has a crystal ball. We need to swarm about this as a team and we have to apply static analysis tools. And in fact we are going to take this next iteration to clean up a bunch of stuff and deal with technical debt… Then I have no problem with this!
So I think you have to say:. Carolyn Seaman : You have started touching on my next question actually, so let me jump on that. Say that there is a team that has become aware of the big moose on the table. Like you said, everything benefits from a few more minutes of thinking.
During those few extra minutes before they go jump in and try to fix all the debt, what should they be asking themselves. Johanna Rothman : What is the value of fixing things versus letting it sit? And I am a big fan of fixing. So I am not saying to let it sit. But I do think we have to look at the value. So when we think about Technical Debt, we have to think about how we re-trigger our thinking to move to this more Agile approach so we can provide a thin-GUI API Application Programming Interface and provide end-to-end features through the system in order to make features that are testable by the testers, unit tests for the developers, and to keep our velocity high.
That allows our managers to make good portfolio management decisions. Let me rewind, let me pop back up the stack. I really like it when people encounter one of these big mooses on the table, or the after effects of the big moose on the table. You should make a card or you do a spike or bring it to the attention of the team, or somehow should do problem-solving around it. This is why I really like short iterations. Carolyn Seaman : Let me switch gears just a little bit and jump back to Technical Debt as a concept. The metaphor itself can sometimes seem large; and it is a growing definition too.
It seems like anything that can go wrong in the code or in the project can be called Technical Debt, and the closer you get to that, the more meaningless the definition becomes.
Amazon Price History
So let me ask you this: What is your working definition of Technical Debt? I referred earlier to Management Debt : that is decisions that managers did not make; decisions that management owes the teams. And so, the more postponement of decisions, the more you patch over things. And if those are decisions that you postpone for a short-cut then you have to make those decisions later. Now sometimes, especially in Agile, I think that a lot of these things are good. But I believe that this Architecture Debt is useful because I believe that if you evolve the architecture from those 3—5 features and see where that leads you, you will have a better architecture than if you tried to plan it from the beginning.
And my experience is that this actually works. But my experience says: if you try to plan this stuff out from the beginning, you will be wrong. I mean, every time I try to plan it out from the beginning, we would get most of the way through the project, something would happen, and boom! We would fall flat on our faces, and oh my goodness, we were wrong, now how do we recover? So I would rather have debt at the very beginning, where we can then refactor to patterns, then to have the debt in the end. Yes, I love The Pragmatic Bookshelf , they publish great sources of informations and inspirations!
- Unhealed Wounds: Medical Malpractice in the Twentieth Century.
- When God Speaks to My Heart: A Daybook of Personal Moments with God;
- Manage It!: Your Guide to Modern, Pragmatic Project Management potx.
- Wild Crop Relatives: Genomic and Breeding Resources: Forest Trees.
- The Company We Keep: Occupational Community in the High-Tech Network Society!
This one is a real page turner since it is a novel with management abstracts for the lessons learned - highly recommended! The Essential Drucker -the father of modern management and godfather of project management. I also recommend Getting Real and Rework. Both books, by 37Signals, are not directly PM-oriented but both contain the best ideas on gettng to the point and getting things done. Dynamics of Software Development - grew out of his famous presentations at PDCs in the early 90s, Jim give such sage advice as:.
My second selection is the logical follow-up and expansion of these ideas into a full training guide for teams. Software For Your Head. This book is so valuable because it builds out the concept that a good manager is all about building teams , not leading people. The simple truth is that each team needs to extract the best of each member, while limiting the exposure of the weaknesses of the members. A great manager shelters his team from distractions, guides the process and gets out of the way. Wow, great question.
Manage It!: Your Guide to Modern Pragmatic Project Management
The one that got me thinking about something besides whips and chains was Barry Boehm's Software Engineering Economics. I have a number of the others mentioned on my shelf downstairs. Steve Mcconnell. Not a PM book per se, but is a fantastic resource for the most important of PM skills, communication. I also must say that even though the Pragmatic Programmer is not a PM book, it drastically affected the way I managed software projects. It's also the book I most often recommend to programmers to read.