In my last blog post, I discussed the features that were renamed in ANTS Memory Profiler 7.0. In this post, I present another aspect that I worked on in the same product: the 'Filter help panel'.
Like many of the changes we make in our products, user feedback strongly influenced our decision to include additional embedded user assistance in the profiler. Throughout the lifetime of ANTS Memory Profiler 5 and 6, we had learnt that the optimal way to use the profiler depended on the specific problem being investigated, but a substantial number of users did not have sufficient understanding of .NET memory to work out how they should use the tool in their circumstances. Sometime after watching another usability test in which someone who was unfamiliar with the profiler failed to locate the source of his memory leak, my colleague Stephen Chambers (the usability engineer for ANTS Memory Profiler) and I decided that we needed to do more to assist.
We already knew from speaking to customers that they often use the memory profiler for the first time when they need to solve an immediate problem. The software isn't generally investigated in case it is needed later on. In turn, this means that users want to get to the cause as quickly as possible, and don't want to read the help to find it.
So, we had a dilemma: on the one hand, there are users who don't want to read help, and who are probably under pressure to solve an issue. On the other, whilst we strive to make our software as easy-to-use as possible, .NET memory is complex. To be able to use the profiler, the fundamentals need to be understood and the results need to be interpreted.
How could we help?
Our idea was to include in the product a series of hyperlinks to guide users through the profiling process. Together with the developers, we created a decision tree defining the main types of memory problem likely to be encountered and how best to go about fixing them.
It was very detailed, to say the least:

Decision tree for guiding users through a memory profiling problem
Stephen and I decided to add this information to the recently-redesigned panel which contains the filtering options for the memory profiler. The rationale was that our testing had shown the filters to be something that novice users look at while trying to work out what the next step should be.

Implementation of the Filter help panel in ANTS Memory Profiler 7.0.0.521
As with all innovations at Red Gate, the new user assistance immediately went for user experience testing. Three times, we sat a novice user in front of the latest build and three times we hoped that they would solve their problem quickly by being led straight to the solution by the new help. On each occasion, we were disappointed to learn that the user's problem was one of the cases we hadn't accounted for, and so our work hindered, rather than helped, their investigation.
Back to the drawing board.
I decided that we'd have to get the user to read the online help, because one small text box clearly wasn't sufficient space to give enough detail. Because the user was likely to be under pressure, however, they would have to go to exactly the right page, and that page would need to contain just the information they needed. Any background information would have to be somewhere else.
Together with Andrew Hunter, our resident memory guru and the lead developer on ANTS Memory Profiler, I created a list of the five main types of memory problem, in order of likelihood:
- Large object heap fragmentation
- An application using too much memory
- Managed code memory leaks
- Unmanaged code memory leaks
- Wanting to know what class uses the most memory
We decided that each of these would become a single page in the web help, and that the Filter help panel would point to the relevant page. Additionally, we would need a background article on how .NET memory works, to provide the necessary domain knowledge to use this information.
The result was a whole new chapter in the help, and a much-simplified Filter help panel in the final release:

Implementation of the Filter help panel in ANTS Memory Profiler 7.0.0.731 (Released version)
The final, and most important, question is what users think. We've had regrettably little feedback about this feature, but what little we have received indicates that the new help has been highly appreciated. A strong indication of success comes from Google Analytics, which indicates a phenomenal amount of hits on the linked pages ('I do not know which kind I have' was hit over 1100 times in August 2011 alone!) and the fact that, anecdotally, our Support team seem to have received fewer calls from confused customers since the launch of version 7.
So, if you've used the Feature help panel, I'd love to hear what you thought of it, and whether we should do something similar in other products that need a certain amount of domain knowledge.
Incidentally, if you're interested in hearing more about our approach to embedded user assistance, I'm presenting a three-hour workshop on just that topic with my colleague Roger Hart at the Technical Communication UK conference in Oxford later in September.