The 7 Software Development Wastes - Lean series Part 7 - Defects
Introduction
When one looks at all the wastes, defects has to be the most obvious one. The cost and repercussions of finding defects varies depending on where in the cycle they're found. Defects found early on in the development life-cycle are way less costly to resolve than defects found later on in the cycle; the most expensive being when applications are already in-production.
Additionally, depending on when the defects are found, defects can and do trigger other wastes like task switching, relearning etc.
Defects can be very costly for an organization. So the trick with defects is that you need to 1) Prevent them from happening in the first place and 2) Find and fix them as early in the development life-cycle 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 Development 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 defects, 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 Development,
"If software routinely enters final verification with defects, 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 defects, ensure they never happen again by keeping your unit tests current.
Here's the rest of the series: Part 1, Part 2, Part 3, Part 4, Part 5, Part 6
Written by Jack Milunksy - COO at Brightspark, certified ScrumMaster and Co-founder of Agilebuddy (Agile project management software that lets you easily Create, Estimate, Plan and Track your software development projects). For great Agile tips follow Jack at: www.twitter.com/agilebuddy. To get more info on Agilebuddy please visit: www.agilebuddy.com





I have received many requests to assist with Agile training and deployment. I am humbled by your interest and, being a huge proponent of Agile, want to help any way I can by providing consulting where I am able to.





October 2, 2009
Good article over lean wastes and the focus on the issues in software development. However, i may not agree on all the points listed above.
Most of the issues come from user stories / requirements. Things are not clear and concrete always. Moreover, the stories focus only on the functional aspects. Non functional needs are always implicit and not clearly defined.
Finally Lean focuses more on the people and the better communication over the stake holders rather than the process.
Venkat.
Posted by: Venkat Reddy Chintalapudi | 10/03/2009 at 10:54 AM
not understanding requirements is a big source of waste. I don't think anyone will argue with that. Thanks for your comments
Jack
Posted by: Jack Milunsky | 10/03/2009 at 09:57 PM
Jack,
Thanks for your view. The requirements focuses mostly on the functional aspects and leave the non functional aspects. It's really tough to capture all the minute details into your requirements document.
But when the application goes into production mode, lot of non functional requirements and behavioral patterns comes into light. This will lead to issues.
My two cents.
Venkat.
Posted by: Venkat Reddy Chintalapudi | 10/05/2009 at 05:28 AM
For sure. I would suggest trying to identify those up-front as well as trying to get your staging environment as close to production as possible so you can catch these issues early.
Jack
Posted by: Jack Milunsky | 10/07/2009 at 02:00 PM
Its really good information about software development.We know that every company has their own way of managing work flow and projects, with their own objectives and desired results. Web-based project management software allows you
to save time and reduce costs at implementation and throughout the project life cycles. Project management reports are key to any sound project management practice. Each company have different needs for using and analyzing their project's data.
Posted by: Web Based Project Management Software | 10/08/2009 at 06:13 AM
Its really good information about software development.We know that every company has their own way of managing work flow and projects, with their own objectives and desired results. Web-based project management software allows you
to save time and reduce costs at implementation and throughout the project life cycles. Project management reports are key to any sound project management practice. Each company have different needs for using and analyzing their project's data.
Posted by: Web Based Project Management Software | 10/08/2009 at 06:13 AM