The technical activity of Debugging and Troubleshooting is an art, in much the same way as painting, whether by natural ability or by numbers. One either has the knack, goes madly off in all direction or has methods in their madness. As artists go, I have acquired a method.
Many problems of the digital variety are breaks in the planned sequence of events from the beginning to the very end of a process. Obvious? Yes, in word but not in deed.
It’s much like a simple electric circuit: Why after flicking the switch is it still lights out?
It’s all in the mind … :
The psychology of debugging is both extremely interesting and instructive….
I discovered it on a collaboration programming listserv group focused on troubleshooting. One type of programmer would succinctly and logically set out the details of how the problem arose, a description of the environment in which it occurred, the precise spot where it occurred and question being asked. The 2nd group’s emails were even more succinct: ‘HELP!!!’
In working with and mentoring programmers one-on-one, and being one, I also learned that programmers’ regular personalities had little connection with their debugging personality. The most logical, methodical programmers fell randomly into either debugging personality group and vice versa.
But how can this “National Enquirer”-level psycho-thesis help us troubleshoot anything?
Well, by amazing grace, it helped a wretch like me recognize that I belonged in the ‘HELP!!!’ Anonymous Group, acknowledge it and change my ways.
If you are in the sober group, you need not attend ‘HELP!!!’ Anonymous meetings, but you will benefit from being conscious of the approach that comes naturally to you.
It’s all about the sequence of events.
Psychologically, follow the 5-step HA program. After Acknowledgment comes Step Back, Settle Down (if necessary, with a whiskey), Know The Sequence and Focus on The Sequence of Events.
Ask where on that continuum can the problem can occur. It might be easier to ask where in the sequence can it not occur.
If one cannot do that, one needs to know more about the sequence. If one does not have the time to do it, it’s probably more necessary than ever to do so. Do you have the time to not do it?
I won’t foam at the mouth soap-boxing against hacking … on one condition: hacking attempts, by definition, don’t always work but they must, at least, contribute to determining the sequence and where the problem might lie within it. If not, hacking will blow the budget going around in circles. Despite our analogy, the sequence is generally not a circuit but a straight line.
Some examples:
- If you’re getting a Server error (E.g. HTTP 500) — if you are pointing to the correct server, it is not a connection problem — you must have already connected to the server to get the server error.
- If, in GA, you see the goal page in the top content report, it’s not an include or exclude filter problem preventing the goal from being recorded
- Check out Quick Diagnostics for different type of problem but with a similar approach. There, the problem is the creation of a 2nd set of cookies during a visit and the sequence is the visit.
- I’d like to make my posts more engaging so please leave a comment if you didn’t get to this paragraph in the post!
Sample Sequence:
As regards GA, here is a sequence of events that will help troubleshoot many problems.
- The first page of a visit loads
- Ga.js is downloaded
- The _gat object is instantiated with the Web Property ID (‘UA-NNNNNN-NN’) (var pageTracker = _gat._getTracker(“UA-NNNNNN-N”);
- _trackPageview() is called
- GA cookies are created or those that already exist are updated as required
- _trackPageview() completes by sending the _gif request to GA
- GA receives the data
- For each profile:
- GA strips the profile’s unwanted query parameters
- GA processes internal search terms
- Applies the profile’s filters in order, determining whether to include or exclude the gif request’s data from the profile
- GA reports the page level data (which could be a pageView, transaction, item or event)
- GA processes the visit level data after the end of the visit (I suspect some visit based data may be processed during the visit, e.g. goal pages — it should not need to wait for the end of a visit to know a goal has been achieved)
Here’s to Happy Debugging
It takes some practice but the results are almost always rewarding. I’ve been debugging dry for some years now.