tags:

views:

161

answers:

8

I've developed an automated crash reporting system that sends in realtime (via email) any issues that happens to the end users application, I get all the details (eg which user, which class/method etc)

This is great, and even the crash reporting system has a secondary crash report system for its self (in case it fails) which writes to a log file.

Now the problem is, on the plus side, I'm alerted to bugs faster than clients/users can call in, in some cases I've resolved bugs before they have even called in.

My problem is when to pass this informaion back to the client and how much to pass back, on the one hand its great that it exposes the bugs, but at the same time thats just the problem! are we shooting ourself in the foot?

If we tell them we might get a negative responsive, if we don't tell them we might get a negative response!

please advise!

+5  A: 

I think you should tell them. Communication of bad news (e.g. "the bug will be fixed in the next release in 3 months' time") is better than no communication whatsoever.

Adamski
+2  A: 

If your application has a "status messages" type feature... just update that when a major issue is resolved... or you want to inform them that a major issue exists...

e.g.

"Billing system is being rebooted - est. downtime: 15min"

"Billing system is back up - 13:54 July 17,2009"

The end user will often not care why something isn't working, just that "IT" is aware of it, and there is an estimated time when it will be fixed.

so "null pointer exception in Client Module fixed" is pretty meaningless... but a note like:

"The 9:30am Issue with the Client search screen has been fixed. - 9:47am"

scunliffe
This ia a good suggestion, I think if I was to incoprorate this into the existing system, I'd probably want to make it automatic (or semi-automated) but then I would need to develop some clever mappings between errors and human friendly messages, I guess this will still leave the problem of which ones to actually display etc.
Darknight
+1  A: 

Be honest about your bugs, and honest about how and when they've been fixed.

Being honest about your bugs will be an incentive to you to keep your product stable by improving your QA process. This should result in a more stable product, and clients thinking of your product as more stable.

Being honest about how and when bugs have been fixed will improve your image with regard to client service and responsiveness.

Dominic Rodger
yes I totally agree on the honest part, the only thing that I worry is when the users turn against the developers, and accuse them of the bugs, for sure we are responsible, but bugs will always occurs, perhaps its explaingin this part thats the hardest
Darknight
+3  A: 

Fixing bugs before the client notices is a very good thing. And even if you can't fix a bug that fast, answering your client that you are already aware of it and working on it is good.

And remember that what matters most is to have software that "sucks less at every release".

Altherac
I agree with this alot!
Darknight
How does this really help?
IPX Ares
Knowing that stability increases over time helps both the developer and end user
Darknight
A: 

The usual solution is to let the user decide. Instead of sending the mail automatically, just ask: "Sorry that I just crashed. I've collected all the information about the problem and I could send it now to the developer so the issue can be fixed. Send? Yes/No"

Also prominently display the data that is being sent so that the user can make an educated guess what he should do.

[EDIT] You should be aware that most users will be very unhappy when they find out that your application calls home without telling them, especially when it sends a lot of data that the user might not want to see go out.

If your error message contains private data, you can be sued for computer fraud.

Aaron Digulla
I hear what your saying, my own concern would be that some critial information could be lost, something which the user may not even consider an issue could be an issue. But I see were your comming from, perhaps if I was collecting other forms of metric other than errors this would be the way to go.
Darknight
See my edits. "Calling home" is a really bad idea without written consent by the user.
Aaron Digulla
+2  A: 

I am hoping you informed them that the application sends external emails in that way, since not informing of that commuication mechanism existing would be dubious at best.

In terms of informing the client, you can adopt a statisical approach, since they can be lent to support any case, e.g. how many bugs were fixed prior to the support call etc. But ultimately a pro-active approach with open communication can be a better policy than telling them as little as possible etc.

That then goes into non programming related matters, about client relationships, establishing a relationship of trust and respect, expectation management etc.

Andrew
yes the the clients are aware, but sadly I don't think they fully understand how it all works, as sometimes they are explaning issues directly to me, issues which I already know about, this suprises them sometimes, but then they remember the crash reports feature.Its the challenge of balance thats the hard part, sometimes, some bugs are 'silent' bugs, eg they continue gracefully and the user doesn't notice, (usually null values, etc) the applications continues fine in their eyes. But its something that we take seriously as developers. Sometimes its the users abusing the system, how to deal
Darknight
with this is also tricky, users get very defensive, although I always try to make helpful suggestions. How to you deal with this situation (when you have the evidence at hand)?
Darknight
+2  A: 

The altruistic thing to do would be to tell them everything. But honestly, that isn't always what the best thing to do is, in terms of making your job easier and keeping people happy.

From my time in IT, generally the best rule was to give them the information if they ask for it, but not to volunteer it otherwise unless it will negatively impact them in the near future(i.e. downtime). That way you don't upset anyone who wouldn't care otherwise, and those who are already upset you can offer the information as a peace offering.

The general rule of thumb is to basically keep a low profile and don't go poking things/users that don't need poking.

cyberconte
+1  A: 

The way that my company handled it, is that we had for all of our raise errors in stored procs, validations and such... error codes. These were mapped to a table in our database via the PK. Then we had two text fields, the user friendly version, and the technical side.

You could do something similar, or have your exception handling wrap a more friendly message, log it to the database, and give the user a reference code if they need to refer to it.

In the end, I think you are doing better now than just not having anything happen.

IPX Ares
As above, I do like the idea of mapping, techincal babble > human sentences.
Darknight