John Gallagher
👤 PersonAppearances Over Time
Podcast Appearances
I was like, what's this? How's this supposed to be useful? People are like, oh, we don't really look at that. It's not very useful. I said, so how do you figure out bugs? And they're like, well, we just, we just figure it out. Well, yes, but we're not figuring it out. So all of this was born through frustration.
I was like, what's this? How's this supposed to be useful? People are like, oh, we don't really look at that. It's not very useful. I said, so how do you figure out bugs? And they're like, well, we just, we just figure it out. Well, yes, but we're not figuring it out. So all of this was born through frustration.
And so what I did back then is what I recommend everybody does now to answer your question. Come back to the point, John. Yeah. which is take a question that you wish you knew the answer to, a very specific question, not why is our app not performing as we want? Not as in like, why do our, you know, a very, very specific question. So take your big, big question. And the time this was,
And so what I did back then is what I recommend everybody does now to answer your question. Come back to the point, John. Yeah. which is take a question that you wish you knew the answer to, a very specific question, not why is our app not performing as we want? Not as in like, why do our, you know, a very, very specific question. So take your big, big question. And the time this was,
Why are people being locked out of the app? Why can they not reset their password? They're clicking on this password link and they're saying it's expired or it goes nowhere or it doesn't work. Okay. Why are those people, like, why is that happening? So that's quite a general question, and you want to break it down into some hypotheses. So that's the first thing.
Why are people being locked out of the app? Why can they not reset their password? They're clicking on this password link and they're saying it's expired or it goes nowhere or it doesn't work. Okay. Why are those people, like, why is that happening? So that's quite a general question, and you want to break it down into some hypotheses. So that's the first thing.
I have a five-step process, and this is step one. I'll go through the five-step process in a minute. So step one is think of a specific question. So a specific question in this case might be, Okay, I've got one customer here. There's many, many different types of defects. So this one customer here is saying it was expired. I went to the webpage and the link said it had expired.
I have a five-step process, and this is step one. I'll go through the five-step process in a minute. So step one is think of a specific question. So a specific question in this case might be, Okay, I've got one customer here. There's many, many different types of defects. So this one customer here is saying it was expired. I went to the webpage and the link said it had expired.
Okay, when did they click on that link? What response did the app give to them? And when did the token timeout? So those are three questions. Now they're not going to get us to the answer directly, but there are three questions, very specific questions that we can add instrumentation for. So I would take one of those questions. When did the token timeout? Great question.
Okay, when did they click on that link? What response did the app give to them? And when did the token timeout? So those are three questions. Now they're not going to get us to the answer directly, but there are three questions, very specific questions that we can add instrumentation for. So I would take one of those questions. When did the token timeout? Great question.
So in order to do that, we need to know when the token was created and what the expiry of the token was. This is just a random example off the top of my head. So you'd be like, okay, well, we need to know the customer ID. We need to know the token. We don't actually need to know the exact token, but we need to know the customer ID.
So in order to do that, we need to know when the token was created and what the expiry of the token was. This is just a random example off the top of my head. So you'd be like, okay, well, we need to know the customer ID. We need to know the token. We don't actually need to know the exact token, but we need to know the customer ID.
We need to know the time that the token was created and the expiry time of that token. Is it 15 minutes? Is it two hours? Whatever. So I would then look into the code. So we've done step two. Step two is define the data that you want to collect. User ID, token expiry, and an event saying the token has been created now for this user ID. Okay, so that's the second step.
We need to know the time that the token was created and the expiry time of that token. Is it 15 minutes? Is it two hours? Whatever. So I would then look into the code. So we've done step two. Step two is define the data that you want to collect. User ID, token expiry, and an event saying the token has been created now for this user ID. Okay, so that's the second step.
The third step is build the instrumentation to do that. So whatever you have to do, maybe it's you need to actually add structured logging to your entire app. I don't know. Maybe it's that you've got the structured logging fine, but there's nothing listening to it. Maybe. Maybe the tool just can't actually measure what you want it to measure.
The third step is build the instrumentation to do that. So whatever you have to do, maybe it's you need to actually add structured logging to your entire app. I don't know. Maybe it's that you've got the structured logging fine, but there's nothing listening to it. Maybe. Maybe the tool just can't actually measure what you want it to measure.
So maybe you need to invest in a new tool, whatever it is. And then you build some code to instrument just that very small piece of functionality. And then once you've done that, you wait for it to deploy. And then you look at the graphs, you look at the logs, you look at the charts, whatever output you've got.
So maybe you need to invest in a new tool, whatever it is. And then you build some code to instrument just that very small piece of functionality. And then once you've done that, you wait for it to deploy. And then you look at the graphs, you look at the logs, you look at the charts, whatever output you've got.
And what normally happens is, for me, I look at the charts and I say, that is not what I wanted at all, actually. I've misunderstood the problem. I've misunderstood the data I want. Now that I see it, ah! Just like you would with agility, true agility, not agile, because agile means something else now.
And what normally happens is, for me, I look at the charts and I say, that is not what I wanted at all, actually. I've misunderstood the problem. I've misunderstood the data I want. Now that I see it, ah! Just like you would with agility, true agility, not agile, because agile means something else now.