Sometimes a complex undertaking can be avoided by asking the right questions. The best example of this for me was when a client asked me to meet with the head of operations to discuss a potential project; he wanted a GUI interface on one of his department’s batch processes.
So the head of operations takes me to his office to show me the problem. He fires off the batch process from a command line, then tells me “Now I wait 2 hours for it to finish. For those 2 hours the operations team has no idea what stage it’s at, how far it’s progressed, how much longer it might take, etc. Plus, people drive us crazy for those 2 hours stopping by and asking how far the batch job has progressed, why is it taking so long, when will it be done, etc. and we have nothing to show them.”
The request made a lot of sense to me, but I also knew how much work it would be to create such a GUI interface or dashboard, as well as the new complexity it would add to the system. So I asked the head of operations the following questions…
Me: Would you need this GUI solution if the batch completed in 2 minutes instead of 2 hours?
Ops: No, I wouldn’t need anything else!
Me: What if it completed in 10 minutes?
Ops: No, that would be fine.
Me: How about if it completed in 15 minutes?
Ops: Hmmm, I’d have to think about that, maybe, I’m not sure.
Now I knew the pain threshold. So I asked if I could have a week to try getting the batch completion time down to 10 minutes just by performance tuning the database operations. I got the go-ahead to try performance tuning since the client had been anticipating a month of work to build the GUI interface.
Of course, it took very little time to find a frightening query that was consuming most of the 2 hours. After a couple of days I got the batch completion time to under 10 minutes just by tuning some SQL.
I know it annoys people when I ask questions and push back on their ideas, but it can pay off!