Starting point
The software controlled industrial machines used in electronics manufacturing: a C# desktop application talking to motion controllers, sensors, conveyors and other hardware. It had more than 300 open defects, and at least 50 were critical or at risk of losing a customer.
How I decided what to fix
I was the only engineer in the code. A long-serving staff engineer handled customer communication and determined what the correct result should be, and we ranked issues together in a deliberate order:
- Customer pain. What was making customers most unhappy.
- Safety and production failures. Anything that could stop a customer’s line.
- Efficiency and everything else.
Many of the issues were things the machine simply wasn’t doing that were critical to production, so fixing them changed customers’ day-to-day immediately.
The fix that made the biggest difference
On a line with several stages, a board is passed from one stage to the next. Occasionally one stage tried to hand a board over and the next failed to receive it, leaving the board stuck in the machine and stopping production. I worked out exactly how the handoff was being done, where it could fail, and made it reliable. Production stops from that cause were a major source of customer complaints.
What changed
- Most of the critical issues were resolved within about six months.
- Over my time on the software I worked through the whole backlog, all 300+ defects, then moved on to implementing requested features.
- Customer satisfaction increased, and new issue reports almost completely stopped.
What this means for you
If your software has a long list of problems and nobody can say what to fix first, the answer is usually not to start over. It’s to rank by what costs you most and work down. That’s what Software Rescue does.
