Rules to Better Bug Management and Feedback

​Since 1990, SSW has supported the developer community by publishing all our best practices and rules for everyone to see. 

If you still need help, visit SSW Consulting Services ​and book in a consultant.​

Hold on a second! How would you like to view this content?
Just the title! A brief blurb! Gimme everything!
  1. Do you know the best way to manage product feedback?

    ​​​How do you want customers to send you feedback? Phone calls? Emails? A website? 
    There are a number of web applications that do a great job on this:

    Figure: The UserVoice website allows user to enter suggestions (used here by SSW Code Auditor)
    Figure: UserVoice has an Administrator console to track feedback

    UserVoice is the most popular platform to collect, manage, and prioritize user feedback. It has a voting and tickets system out of the box.

    Many software houses use this for their products E​g. SSW Code Auditor, SSW Link Auditor

    Here are the google results as at 2014
    Figure: Google result of UserVoice
    Figure: Google result of GetSatisfaction
    Figure: Google result of UserEcho
  2. Do you provide details when reporting .NET Applications errors

    .NET applications can sometimes produce a stack trace of an error, these error messages are all we need to figure out what has happened.  Please do not send us this screen shot, instead, select the top section of what's within this box and paste it in an email that you can send back to us.

    The text within the 'Details' button is more useful for debugging and locating the problem.

    the bug happened
    Figure: Bug details window
    See the end of this message for details on invoking 
    just-in-time (JIT) debugging instead of this dialog box.

    We really want this part:
    ************** Exception Text **************
    System.ArgumentException: invalid sender parameter
    Parameter name: sender
    at WindowsApplication3.FormStart.button5_Click(Object sender, EventArgs e) in c:\datajohnliu\datavs7projects\windowsapplication3\formstart.cs:line 143
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    This part is quite useful sometimes too.
    ************** Loaded Assemblies **************
    Assembly Version: 1.0.3300.0
    Win32 Version: 1.0.3705.288
    CodeBase: file:///c:/windows/ v1.0.3705/mscorlib.dll
    Assembly Version: 1.0.1129.31301
    Win32 Version: 1.0.1129.31301
    CodeBase: file:///C:/DataJohnLiu/DataVS7Projects/ WindowsApplication3/bin/Debug/WindowsApplication3.exe
    Assembly Version: 1.0.3300.0
    Win32 Version: 1.0.3705.288
    CodeBase: file:///c:/windows/assembly/gac/ 1.0.3300.0__b77a5c561934e089/
    Assembly Version: 1.0.3300.0
    Win32 Version: 1.0.3705.288
    CodeBase: file:///c:/windows/assembly/gac/system/ 1.0.3300.0__b77a5c561934e089/system.dll
    Assembly Version: 1.0.3300.0
    Win32 Version: 1.0.3705.288
    CodeBase: file:///c:/windows/assembly/gac/system.drawing/ 1.0.3300.0__b03f5f7f11d50a3a/system.drawing.dll
    Assembly Version: 1.0.3300.0
    Win32 Version: 1.0.3705.288
    CodeBase: file:///c:/windows/assembly/gac/system.xml/ 1.0.3300.0__b77a5c561934e089/system.xml.dll

    These are not really useful
    ************** JIT Debugging **************
    To enable just in time (JIT) debugging, the config file for this
    application or machine (machine.config) must have the
    jitDebugging value set in the section.
    The application must also be compiled with debugging

    For example:

    < jitDebugging="true" />

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the machine
    rather than being handled by this dialog.​
  3. Efficiency - Do all your employees know the quickest way to fix small web errors?

    ​​​Imagine this scenario... Mary notices a small error on a page in her intranet. She is a good employee... She fires up an email and reports the spelling error to info@s* As she sends it she says to herself "That it took more time to report the error than it would have taken me to fix it".

    Small errors should be fixed by the person who found it. Text changes can be easily done in SharePoint or WordPress. If you know who is the culprit, it might be a good idea do inform that person, including the things you have fixed.

  4. Do you allow users to get up-to-date messages?

    Your software is deployed. How do you tell users months or years later, important information?

    This primarily affects Windows clients but even web clients shouldn't need a new version to give a new message.

    Most software is deployed without any mechanism to insert a message in older software.

    ​​Messages might range from helpful tips that are undiscovered that would help a user do their job better?
    Or helpful to remind old customers to get off their old version. 
    Eg. Sometimes customers are just not aware that their TFS or CRM installation is years old? ​

    Figure: Bad example
    Figure: Good​ example