Today, I was browsing the support forum of a software product I own a license for, and I suddenly realized something which is probably not obvious at all, especially if you're not yourself a computer scientist. For some time now, I've been noticing something I found rather odd in various threads on this forum. In many situations, one of the product developers (I guess), a very active, kind, and responsive person ends up replying "well, the product can't be perfect". This is a response I felt very uncomfortable with, right from the start. Why? Well, I don't think anyone expects any product (especially software) to be perfect. People on the forum just report bugs, and expect some form of acknowledgement that the bug is there, is reproducible, and that a workaround or a fix is on its way, or will be soon. But why does this developer feel the need for confessing that the product is "not perfect", and why so often? It almosts sounds like an embarassed apology.

The product in question is in fact a real-time audio signal analysis application. In order to remain not too specific, let's just say that you feed it with some music, and it spits out the notes as it recognizes them. With my CS background, I'm used to signal processing application using Fourier transforms and whatnot to perform deterministic computation on the processed signal. But recently, I found out that this product uses Deep Learning technologies, and then I suddenly understood what's going on.

Imagine you get a complaint that your "legacy" signal processing software is unable to recognize a C2 in a bunch of simultaneous notes. You could probably figure out (and reply) that there's a bug in your Fourier transform implementation, or that you got the amplitude computation wrong, and the note is below the activation threshold, or you have a low-cut filter that was not configured properly, or whatever.

But now imagine that your software is a (correct) gigantic neural net. What can you say? Not only there isn't a specific algorithm to debug. On top of that, you're also completely incapable of deciphering what's really going on in the net. So you need to re-train your system, probably. But what can you say to your customer? There is no specific bug to acknowledge, let alone a specific workaround or imminent "bugfix". Besides, who knows what previously fine situation could degrade after the new training? So yes, I suppose, you're a bit stuck on how and what exactly you can reply to your customer. Apart maybe from what computer scientists know very well about that kind of technology: it can never be perfect.

Now that I've come to realize this, it seems to me that as Deep technologies continue to spread to a variety of applications, the face of customer support may change drastically, in the sense that while users continue to experience very specific problems, it will no longer be possible to provide them with very specific answers.