Thursday, November 6, 2014

Dig a Little Deeper

Be sure to separate symptoms of a problem from the problem itself.  This can sometimes be harder than it seems.  Sometimes the problem is a few layers below the surface.  For example, assume you get the following issue reports and feature requests:
1.     Please add a button to all list screens to export data to Excel.
2.     Whenever running a query that returns a lot of data (e.g. 10K rows) the list screens take a long time to return.
3.     We’d like to be able to run very basic (read-only) queries by linking to some tables through MS Access.  But in order to do that we need an Oracle client installed on our machine.  We also need a username/password for the database.
4.     Please add “week ending” and “month” to the return fields for all list screens.
On the surface these seem like simple, disparate problems to be solved.  So you might come up with solutions like this:
1.     “Sure – we can add an export button”.
2.     “Hmmm – we’ll have to look at the query – maybe it can be tuned.”
3.     “A little unorthodox.  We’ll have to get approval from IT management that this is ok but this is not technically challenging”.
4.     “Sure – easy enough”
But if we look a little deeper we can see that these are symptoms of a deeper problem: the users do not have an easy way to perform management reporting and data analysis.  Neither this system nor other systems (e.g. a data warehouse) are addressing these business needs.  Think about it.  Here is a different way of looking at each of the issues:
1.     Adding an export button is fairly harmless but the reason they need it is probably because they are doing analysis in Excel that the system is not helping them with.
2.     There’s no way they’re reading through 10K lines of data line-by-line.  The reason they’re doing this is probably because they’re analyzing the data in ways that the system does not support.
3.     There’s no way they’d be desperate enough to navigate the oddities of our back-end if the system better supported their analytical needs.
4.     Hmmm.  I am guessing they want those fields for time-trend reporting or filtering.  This suggests that they’re doing their analysis off of large report results which is another symptom of the fact that the system does not support their analytical needs.
Whenever possible focus on ideas to treat the problem not the symptoms.  Treating symptoms is ok as a short-term alternative but it is rarely the way to go in the long-term.  To use a medical analogy cough syrup is useful and may effectively treat the symptoms of an infection but antibiotics have the capability to address the root cause.  Dig a little deeper and be sure you get to the underlying problem.