Collaboration is the WD-40 of Software Development – It Fixes Everything
Collaboration is the solution most teams miss
Problem: Products release with critical defects
Cause: Lack of collaboration between Dev & Test
Result: Defects that are easily prevented
Let’s start with a common problem.
Developers don’t sit with the test group to explain what they’re doing, and discuss possible risk scenarios.
Both teams (along with customer support) could share their experience and come up with scenarios to uncover:
- unexpected user interaction
- abnormal system integration behavior
Here’s the goal: how do we keep bugs from escaping, just because there were no test cases for them – beyond requirements?
Especially for a hosted solution; you release and a week later – all of a sudden the bugs start appearing and the customers are complaining.
Your Customers have lost a month’s worth of data because it’s all corrupted…thanks to the defects.
Now they have to wait for the developers to research & fix the problem, and then rerun all their data – which forces the customer to lose both time & money.
When you consider how often this occurs you’ll realize typical requirements based testing – isn’t enough.
This is why, when you review FDA Reasons for Recall – it almost never lists a requirement-based defect; it’s typically something else.
So how can we resolve this industry wide problem?
It’s time to think out of the box.
As trite as this sounds “teamwork makes the dream work” (I can see you chuckling) there is merit to this.
Think of it this way; would you rather invest the time upfront – as a team – and collaboratively create reusable scenarios that find those critical defects early?
Or would you rather deal with the stink of important customers complaining about the lack of quality (ie reliability) of your product or system? Including the fallout which could include lost customers, bad publicity, and excess costs attributed to all the rework.
How much is customer confidence worth? How about their loyalty?
So – how is this done?
First, realize that everyone in their silo has work to do. Developers creatively code to solve problems and cover requirements and specifications – usually on their own.
Same with folks who test products and those who interact with the actual clients – or end users.
Typically, all in their own silo.
However, there is a way to collaborate which allows everyone to benefit, and – as a team – become far more effective, and productive.
- Create a reusable set of test data that includes all of the known scenarios:
- which can be used repeatedly
- which can be extended to encompass new or discovered scenarios
- which can be multiplied to use in performance and load testing
- which is produced through extensive collaboration with field experts for our Industry, (such as Clinicians, Nurses, Biomeds, Pharmacists)
- A reference guide for QA which provides step-by-step operating instructions to consistently generate all known user scenarios
Collaborative test cases based on code inspections:
- Branch coverage
- decision branches in code may likely be an opportunity to formulate a test case or series of test cases
- Statement coverage
- every line of code is tested at least once during the development cycle – it’s imperative Dev/QA work together to create these tests
Customer (Technical) Support
This is where customer support really comes in handy. They have seen almost every problem imaginable and many of them were non-requirement related. More often than not, the root cause was either unexpected user interaction or abnormal system behavior.
Which means it’s time to review critical customer support issues; even though they’re resolved – non-requirement-based defects continue to appear in future releases.
Working as a team will allow you to reveal the blind spots where those critical defects are hiding.
Now it’s time for Politics!
Here’s where serious attention needs to be made.
How do we sell this collaborative effort to upper management?
If you’re the manager of software engineering and someone suggests your developers should help QA come up with better scenarios to find critical defects – typically you’re going to say, “QA is supposed to do that – I’m not going to waste my developers time, we have a budget and a deadline.’ ‘Let this come out of QA’s budget!”
Conversely, if you’re the manager of QA and it’s suggested that your folks work with Dev to improve the effectiveness of their unit tests you’re most likely going to say, “No, that’s Dev’s job – we have our own limited funds and resources and we have a deadline.”
This is where “teamwork makes the dream work” comes into play.
Those same Dev & QA Managers will be the one’s in the hot seat, when the Director (or more likely the VP) wants to know why your biggest customer is upset…due to quality and/or timeline issues.
Here’s where you can beat the competition.
When the managers of both software engineering and software quality assurance work together – everyone wins.
Not only do you end up releasing Best of Breed Products, you can beat your competitors to the market with happy customers.
Added benefit: morale is greatly improved.
Everyone feels better about their accomplishments, because they trust their ability to build and deliver high quality products on a repeatable basis.
Collaboration is the time proven solution to your problems – I bet your team has been waiting for you to figure this out.
Maybe it’s time to ask them.
For more information about the benefits of team collaboration – set up a call with one of our process experts.