In my last Blog I talked about “peeling back the onion” to find the root cause of an issue.It’s particularly helpful to rule out portions of the application or data as contributors to the issue in an effort to identify the true cause.But where do you start?What do you “rule out”, and how?
The best way to begin to Divide and Conquer when identifying a problem cause is to start at the highest level, where you can take out the largest components:
A user reports an issue when doing “X”.Your first determination should be if it’s due to Software or the data.Here’s your first division point: Does the issue occur in the same manner when using the Evaluation Database?
If Yes, then there may be an issue with the Software
If No, then you probably have an issue with the data (or the database)
Let’s say you've determined in is in your data or database since it doesn't occur in the Evaluation DB, and you suspect it has something to do with the groups.But there are over 5,000 groups in this database, where do you start?
The “Shotgun Approach” – remove ALL the custom groups (by replacing the plugin table with the one from the Evaluation DB).Does the issue go away?
After removing the groups the issue no longer occurs, so now what?This is where the true “Divide and Conquer” kicks in.Choose a dividing point, somewhere around the halfway mark of your groups.Remove one half. Does the issue still occur?If yes, find another dividing point around the halfway mark again, and remove half.Does the issue still occur?If yes remove yet another half of the remaining groups and test again.
Once the issue stops occurring, you'll have a smaller subset of the groups where you can begin your investigation to find the group or groups that are causing the issue.
This method can be applied to many different scenarios.