Lean Software Development
Jim Holmes writes "Mary and Tom Poppendieck's Lean Software Development: An Agile Toolkit is a great read for anyone interested in agile software development. That includes developers, leads, and managers interested in speeding up development cycles, improving quality, and getting their customers the best value. This book's been out since May, 2003, but it's well worth picking up. The concepts within are absolutely applicable now, and will continue to be for quite a few years." Read on for the rest of Holmes' review.
Lean Software Development: An Agile Toolkit
author
Mary and Tom Poppendieck
pages
240
publisher
Addison Wesley
rating
9
reviewer
Jim Holmes
ISBN
0321150783
summary
Toolkit for getting agile development in your organization.
Lean Software Development is full of pertinent comparisons between the current state of software development and the massive changes in manufacturing over the last three decades, specifically demonstrated by the Toyota Production System, and 3M's innovative atmosphere for bringing products to life. The Poppendiecks make a great case as to how similar changes in software development can reap great benefits in the software production industry. Who It's For The book's very useful for anyone involved in or around the software development process: developers, leads, managers, and corner-office types. Corner-office types won't get as much out of the book as those in the trenches, but the Poppendiecks' arguments against overly-constraining process management systems may help high-level managers come to understand that such systems can actually hurt production.
Who It's Not For This book isn't for closed-minded folks who think the waterfall method and a preponderance of documentation and process control are the bee's knees. The book talks specifically about how Six Sigma, Capability Maturity Model (CMM), Capability Maturity Model Integration (CMMI), and Project Management Institute (PMI) certification can drag down development productivity and quality. Also, it's not for folks who are unwilling to consider that shorter delivery cycles improve feedback, quality, and lower cost.
(Note that the authors specifically point out that agile development does not mean tossing out all documentation and process.) What It Covers The book is labeled a "toolkit" for lean development, and it describes 22 "tools" -- that is, approaches which will help an organization move to a leaner development system. The authors start off with a great explanation of what lean practices are and how they can benefit software development. They then move on to more detailed coverage of important principles.
The book's broken into chapters covering the seven principles the Poppendiecks lay out as fundamental to agile practices: eliminating waste, amplifying learning, deciding as late as possible, delivering as fast as possible, empowering the team, building in integrity, and seeing the whole. Those seven principles may sound like marketing blabberspeak, but the Poppendiecks nail each section down with terrific discussions of applicability.
They've also got great examples tying the principles into how manufacturing has so drastically improved its processes. Each chapter concludes with a "Try This" section aimed at getting your group moving in a lean direction.
The second biggest benefit after the book's content is the extensive reference list. There's an impressive bibliography, and each chapter is loaded with footnotes referencing various books, articles, etc. This gives interested folks a great guide for further reading.
The book's summary chapter is especially good. It concisely wraps up the book in the somewhat tongue-in-cheek format of an instruction sheet for the tools the Poppendiecks have laid out. The "Caution - Use Only As Directed" section is particularly useful because it shows how one should not use the principles: "Eliminate waste does not mean throw away all documentation," and "Deliver as fast as possible does not mean rush and do sloppy work." The summary also breaks out high-level details for implementing in large and small companies. The authors are particularly helpful in pointing out strategies for dealing with difficult process improvement programs such as Six Sigma, CMM, and/or CMMI. They point out the political aspect of how to approach implementing agile methodologies in organizations constrained by such "helpful" policy systems.
There's also a note for folks working in safety-related fields where regulations and immense processes dictate how to do work: Shortening cycles in such environments can better ensure people aren't killed by software failure. What It Doesn't Cover Despite the great coverage of the principles and tools, this book isn't a detailed guide for implementing agile processes at your organization. The authors are very adamant that no two organizations function alike. Implementing agile processes requires some careful forethought before jumping in. The authors don't advocate any one methodology over another, so don't look to this book for help in deciding whether you want XP, FDD, SCRUM, or any one of the other alphabet-soup-of-the-day agile buzzwords.
Additionally, I thought a few items were given pretty cursory coverage. One example is in the chapter on late decisions where the authors breeze right over implementing a quick persistence layer to put off deciding on exact database implementation. I particularly would have liked more detail in that item. On the flip side of that; however, is the great detail given to value stream mapping, feature implementation burn rates, and several other very, very useful items - so my complaint is really that one particular item I'm working on right now wasn't covered as well as I'd have liked. Bottom Line This really is an important addition to your reading list if you're at all interested in learning how an agile environment can increase your speed, quality, and cost effectiveness. It's a great book if you're in need of guidance on how to look at and improve your current environment. It's also a great book if you need backup for convincing either your co-workers or management that a move to agile is necessary.
You can purchase Lean Software Development: An Agile Toolkit from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Lean Software Development is full of pertinent comparisons between the current state of software development and the massive changes in manufacturing over the last three decades, specifically demonstrated by the Toyota Production System, and 3M's innovative atmosphere for bringing products to life. The Poppendiecks make a great case as to how similar changes in software development can reap great benefits in the software production industry. Who It's For The book's very useful for anyone involved in or around the software development process: developers, leads, managers, and corner-office types. Corner-office types won't get as much out of the book as those in the trenches, but the Poppendiecks' arguments against overly-constraining process management systems may help high-level managers come to understand that such systems can actually hurt production.
Who It's Not For This book isn't for closed-minded folks who think the waterfall method and a preponderance of documentation and process control are the bee's knees. The book talks specifically about how Six Sigma, Capability Maturity Model (CMM), Capability Maturity Model Integration (CMMI), and Project Management Institute (PMI) certification can drag down development productivity and quality. Also, it's not for folks who are unwilling to consider that shorter delivery cycles improve feedback, quality, and lower cost.
(Note that the authors specifically point out that agile development does not mean tossing out all documentation and process.) What It Covers The book is labeled a "toolkit" for lean development, and it describes 22 "tools" -- that is, approaches which will help an organization move to a leaner development system. The authors start off with a great explanation of what lean practices are and how they can benefit software development. They then move on to more detailed coverage of important principles.
The book's broken into chapters covering the seven principles the Poppendiecks lay out as fundamental to agile practices: eliminating waste, amplifying learning, deciding as late as possible, delivering as fast as possible, empowering the team, building in integrity, and seeing the whole. Those seven principles may sound like marketing blabberspeak, but the Poppendiecks nail each section down with terrific discussions of applicability.
They've also got great examples tying the principles into how manufacturing has so drastically improved its processes. Each chapter concludes with a "Try This" section aimed at getting your group moving in a lean direction.
The second biggest benefit after the book's content is the extensive reference list. There's an impressive bibliography, and each chapter is loaded with footnotes referencing various books, articles, etc. This gives interested folks a great guide for further reading.
The book's summary chapter is especially good. It concisely wraps up the book in the somewhat tongue-in-cheek format of an instruction sheet for the tools the Poppendiecks have laid out. The "Caution - Use Only As Directed" section is particularly useful because it shows how one should not use the principles: "Eliminate waste does not mean throw away all documentation," and "Deliver as fast as possible does not mean rush and do sloppy work." The summary also breaks out high-level details for implementing in large and small companies. The authors are particularly helpful in pointing out strategies for dealing with difficult process improvement programs such as Six Sigma, CMM, and/or CMMI. They point out the political aspect of how to approach implementing agile methodologies in organizations constrained by such "helpful" policy systems.
There's also a note for folks working in safety-related fields where regulations and immense processes dictate how to do work: Shortening cycles in such environments can better ensure people aren't killed by software failure. What It Doesn't Cover Despite the great coverage of the principles and tools, this book isn't a detailed guide for implementing agile processes at your organization. The authors are very adamant that no two organizations function alike. Implementing agile processes requires some careful forethought before jumping in. The authors don't advocate any one methodology over another, so don't look to this book for help in deciding whether you want XP, FDD, SCRUM, or any one of the other alphabet-soup-of-the-day agile buzzwords.
Additionally, I thought a few items were given pretty cursory coverage. One example is in the chapter on late decisions where the authors breeze right over implementing a quick persistence layer to put off deciding on exact database implementation. I particularly would have liked more detail in that item. On the flip side of that; however, is the great detail given to value stream mapping, feature implementation burn rates, and several other very, very useful items - so my complaint is really that one particular item I'm working on right now wasn't covered as well as I'd have liked. Bottom Line This really is an important addition to your reading list if you're at all interested in learning how an agile environment can increase your speed, quality, and cost effectiveness. It's a great book if you're in need of guidance on how to look at and improve your current environment. It's also a great book if you need backup for convincing either your co-workers or management that a move to agile is necessary.
You can purchase Lean Software Development: An Agile Toolkit from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
A bee's "corbiculae", or pollen-baskets, are located on its tibiae (midsegments of its legs). The phrase "the bee's knees", meaning "the height of excellence", became popular in the U.S. in the 1920s, along with "the cat's whiskers" (possibly from the use of these in radio crystal sets), "the cat's pajamas" (pyjamas were still new enough to be daring), and similar phrases which made less sense and didn't endure: "the eel's ankle", "the elephant's instep", "the snake's hip". Stories in circulation about the phrase's origin include: "b's and e's", short for "be-alls and end-alls"; and a corruption of "business".
try { do() || do_not(); } catch (JediException err) { yoda(err); }
Is this a derivative of the methodologies behind Lean Six Sigma?
There's big money in that, my graduate software engineering course last semester had a speaker in from a NASA contractor that pushed LSS as a way to manage all kinds of different engineering and production variances e.g. misfiring rocket engines.
The president has been kidnapped by ninjas!
Are you a bad enough dude to rescue the president?
There are a lot of similarities to XP.
And there's no competition there. The Poppendiecks led several sessions at Agile 2005, the big XP conference in the US. XP is much more about what goes on at the team level, while the Poppeniecks are more interested in broader business and corporate culture issues.
One of the least considered, studied, and written about things is project methedology. It seems like all the books about the subject relate to automotive production, where the Japanese flooded the market with their philosophy. Afterward, automotive companies hoisted these philosophies on unsuspecting suppliers. The number of paradigm shifts that auto suppliers have endured as a result over the last 20 years is amazing.
Yet I have never had a large client try to push a project development methedology for software on us. There has never been discussion of any of these, and it seemed that for the most part, we as a group were on our own when it came to evaluating various options.
I've been waiting for someone to start talking about the various paradigms and structuring philosophies for a while. For projects as complicated as large software systems, it is frequently a lot of trial and error, followed by more of the same. Finding any comprehensive discussion has been impossible. Hopefully this will foster more books on the topic. Software is becomming such a critical part of corporations, government, and daily life, that not only are the tools that we use important, but so is the way that we use them.
I would also be interested in seeing some sort of discussion as to how various team-structuring philosopies fit with various classes of development tools. For example, database development lends itself to a different approach than web design, simply because of the design process, hurdles that have to be dealt with, degree of expertise, and expense of the individuals that participate in the project.
Friends help you move. Real friends help you move bodies.
Never forget: 2 + 2 = 5 for extremely large values of 2.
Now comes the question... why would anyone want such a level of bureaucracy? Well, in our case, we were responsible to the government, and from what i can tell, the government equates "paper trail" with "accountability and transparency." In other cases (commercial software), this would allow a company to switch contractors if the current contractor started acting nutsy or broke a contract in some way.
Think of the group paying for the contract as "the boss" and two contract groups called "Bob" and "Tim." The boss wants to pay someone to develop the MegaApp for him. Bob and Tim both make promises about how fast they can develop the MegaApp and how much it will cost and how much quality the MegaApp will contain after they work their respective voodoos. Bob makes some egregious claims, and the boss (because he's a manager) believes Bob and passes over Tim's more realistic promises. Bob, of course, fails to deliver on his promises, but the boss saw that some of what Bob did met some of the requirements. Since the boss made sure that Bob and Tim implemented CMMI level 3 before they could even be considered for contract, he has the option (or believes he has the option) to take the deliverables (including CMMI documents) to Tim. Tim, who is accustomed to using CMMI level 3, should theoretically be able to pick up the project in a short period of time and run with it due to the high level of documentation.
Just like communism, it can sound good in theory and look good on paper but will probably only work well in a perfect world.
Note: Carnegie Mellon developed CMMI.
Disclaimers:
There's nothing fundamental in Lean, XP, or Scrum that Brooks didn't manage to say 30 years ago(yes. 30. 3-0. Thirty. Near 1/3 of a decade. check the copyright).
I don't think that's entirely true. Test-driven development, for example, seems pretty new. Hardware cost had to be pretty low before each developer could compile and run all the project tests every few minutes of development. I also don't remember Brooks talking about weekly iterations.
That's not to knock "The Mythical Man Month", by the way. I completely agree that it's required reading.
I remember distinctly reading on some Agile XP whatever site that CRC cards (the documentation is the code and unit tests!) are used long enough to get the devs on board with what to do AND THEN THEY ARE DISCARDED.
Yeah, people often freak out about that. I tell them, "Ok, then you can keep the cards." They will happily put them in a box and then never look at them again. Myself, I don't use CRC cards much, I just sketch UML on the whiteboard. I do tend to leave the last few months of story cards up on the wall, though.
Note that the most important documentation on an XP project is the acceptance tests, which you can think of as either machine-verifiable specs or automated versions of what QA people often do manually. Those say what the product is supposed to do. One framework for this is FIT, which uses specially structured tables in HTML documents.
Unit tests, on the other hand, are where developers say what individual chunks of the code are supposed to do.
The software in the space shuttle cannot fail. billions of dollars and people's lives are on the line, so it cannot fail.
At CMM level 5, you don't fix the bug when you find it. You fix the process that let the bug happen in the first place.
CMM Level 1 is no process. anything goes, really.
CMM Level 2 is fixing the bug and documenting that you found it. That more or less boils down to using a bug tracking system, keeping good version control, and everyone following this process.
CMM Level 3 is the software engineering level. that basically means that everyone in your organization builds their software similarly (software design and documented use of design patterns is good here).
Levels 4 and 5 is all about keeping a database of your processes and fixing your processes. Process flaws cause bugs, not code errors. You don't fix your code, you fix your process.
It's important to note the budget for the team writing the space shuttle code. Lots and lots of money and lots and lots of time go into that software. Ordinary application writers like us don't get that luxury.