Lean applied to Software Development – Stop Wastes and Defects

December 6th, 2009

rightWhen one looks at all the , has to be the most obvious one. The cost and repercussions of finding varies depending on where in the cycle they’re found. found early on in the are way less costly to resolve than found later on in the cycle; the most expensive being when applications are already in-production.

Additionally, depending on when the are found, can and do trigger other like task switching, relearning etc.

can be very costly for an organization. So the trick with is that you need to 1) Prevent them from happening in the first place and 2) Find and fix them as early in the as possible.

So what can you do to prevent them from happening in the first place?

 

  • Keep your stories small, and unambiguous.
  • Ensure that each story has well defined acceptance test criteria (assisted by input from the customer).
  • Ensure that your code is well tested. Adopting good Test Driven habits will pay back in spades.
  • Pair programming and code reviews are excellent ways in which to prevent bugs from being created in the first place.
  • The more you automate the better. So automated functional testing is a good way to automate the functional test plan and get results fast and to ensure that new code changes aren’t breaking other parts of the code.
  • Ensure staging environments mimic production as closely as possible.
  • Make sure that as you find new , you add unit tests to your test suite to keep your unit testing current.
  • Finally, document your code well.

 

An interesting quote from Mary and Tom Poppendieck’s book called Implementing Lean Software ,

 

“If software routinely enters final verification with , then it is being produced by a defective process”

 

…. which needs to be fixed. So…

 

Step 1. Prevent the bugs from happening in the first place by “mistake proofing” your code
Step 2. Do whatever you can to find the bugs early on in the process while the code is fresh in the developers minds - i.e. ensure you have good functional test plans and test tools.
Step 3. Ensure a proper staging (or test environment) that mimics production environment as closely as possible
Step 4. Get the software into the hands of customers as quickly as possible, so good Agile practices help here.
Step 5. If you find , ensure they never happen again by keeping your unit tests current.

Gunther Gerlach

  1. December 26th, 2009 at 15:26 | #1

    I want to quote your post in my blog. It can?
    And you et an account on Twitter?

  2. January 24th, 2010 at 21:09 | #2

    The author of http://www.gunthergerlach.com has written an excellent article. You have made your point and there is not much to argue about. It is like the following universal truth that you can not argue with: When you need it, you can’t find it or its not available. Thanks for the info.

  1. No trackbacks yet.