Feature selection strategies for NH Prof

time to read 9 min | 1716 words

Originally posted at 12/3/2010

I recently had a discussion on how I select features for NH Prof.  The simple answer is that I started with features that would appeal to me.  My dirty little secret is that the only reason NH Prof even exists is that I wanted it so much and no one else did it already.

But while that lasted for a good while, I eventually got to the point where NH Prof does everything that I need it to do. So, what next… ?

Feature selection is a complex topic, and it is usually performed in the dark, because you have to guess at what people are using. A while ago I setup NH Prof so I can get usage reports (they are fully anonymous, and were covered on this blog previously). Those usage reports come in very handily when I need to understand how people are using NH Prof. Think about it like a users study, but without the cost, and without the artificial environment.

Here are the (real) numbers for NH Prof:

Action % What it means
Selection 62.76% Selecting a statement
Session-Statements 20.58% Looking at a particular session statements
Recent-Statements 8.67% The recent statements (default view)
Unique-Queries 2.73% The unique queries report
Listening-Toggle 1.10% Stop / Start listening to connections
Session-Usage 0.91% Showing the session usage tab for a session
Session-Entities 0.54% Looking at the loaded entities in a session
Query-Execute 0.50% Show the results of a query
Connections-Edit 0.38% Editing a connection string
Queries-By-Method 0.34% The queries by method report
Queries-By-Url 0.27% The queries by URL report
Overall-Usage 0.25% The overall usage report
Show-Settings 0.23% Show settings
Aggregate-Sessions 0.21% Selecting more than 1 session
Reports-Queries-Expensive 0.16% The expensive queries report
Session-Remove 0.13% Remove a session
Queries-By-Isolation-Level 0.08% The queries by isolation level report
File-Load 0.04% Load a saved session
File-Save 0.03% Save a session
Html-Export 0.02% Exporting to HTML
Sessions-Diff 0.01% Diffing two sessions
Sort-By-ShortSql 0.01% Sort by SQL
Session-Rename 0.01% Rename a session
Sort-By-Duration 0.01% Sort by duration
Sort-By-RowCount > 0.00% Sort by row count
GoToSession > 0.00% Go from report to statement’s session
Sort-By-AvgDuration > 0.00% Sort by duration (in reports)
Production-Connect > 0.00% (Not publically available) Connect to production server
Sort-By-QueryCount > 0.00% Sort by query count (in reports)
Sort-By-Alerts > 0.00% Sort by alerts (for statements)
Sort-By-Count > 0.00% Sort by row count

There is nothing really earth shattering here, by far, people are using NH Prof as a tool to show them the SQL. Note how most of the other features are used much more rarely. This doesn’t mean that they are not valuable, but it does represent that a feature that isn’t immediately available on the “show me the SQL” usage path is going to be used very rarely.

There is another aspect for feature selection, will this feature increase my software sales?

Some features are Must Have, your users won’t buy the product without them. Some features are Nice To Have, but have no impact on the sale/no sale. Some features are very effective in driving sales.

In general, there is a balancing act between how complex a feature is, how often people will use it and how useful would it be in marketing.

I learned quickly that having better analysis (alerts) is a good competitive advantage, which is why I optimized the hell out of this development process. In contrast to that, things like reports are much less interesting, because once you got the Must Have ones, adding more doesn’t seem to be an effective way of going about things.

And then, of course, there are the features whose absence annoys me…