Posted in tSQL, tSQL Tuesday

Learn from… me!

This image has an empty alt attribute; its file name is T-SQL-Tuesday-Logo-e1518373137845.jpg

Kerry Tyler (b|t) asked us in this month’s t-SQL Tuesday topic to talk about a lesson we’ve learned, in order to help others learn FROM our mistakes without also making them! I’ve wanted to talk about this for a while, as I’ve now seen this behavior from both sides and I know how detrimental it can be to everyone involved.

What is this I speak of? Our fraught relationship with third-party software vendors. I know, I know, we all love to hate them. (Even those of us that ARE them – we also have third-party software, we completely get your pain.) In a couple former jobs, it was pretty clear: “Hey, Sales just sold software so we need the software to do this in a time frame that’s way too short, and just asking for pain all the way around.” Developers grumble, QA grumbles, shortcuts get taken, functionality and performance are very far from meeting expectations, and everyone – customers, developers, sales, PMs, account reps…. EVERYONE is pointing fingers at each other.

It’s at this point that everyone loses sight that we ALL have the same goal. It’s easy to do – each party feels like they’ve been strung along (which is probably true). No one is happy with the end result. Flashback to when I was on the phone with a customer, who had rolled out this wonderful new functionality and performance was so bad that literally no one could use one of the screens in the software. This was my first interaction with these customers, as my immediate supervisor had moved on to greener pastures a week earlier. It was Friday night (of course), and I had plans with my family and was a bit frustrated.

I was looking at the SQL (which, btw, was generated by the application and not in a stored procedure.) First of all, any SQL changes would require an application patch. Whoops one. Second of all, wow, was this SQL bad. Cartesian join of large tables, so many returned columns that indexing was really out of the question, and a poor plan. As I was looking at the code, I remember saying, “I don’t think I can fix this in an hour. I don’t think I can fix this in SIX hours.”

So, at this point I learned that teleportation is possible, because there is NO other explanation for how the account manager got to the spot standing next to my desk from his office upstairs in the timeframe of 1 second. He frantically motioned me to hit the mute button (which I did), and then followed with, “We can’t say that to the customer!”

My response: “I’m not going to lie, that’s going to be really obvious really fast that this isn’t anything we can fix RIGHT NOW.”

What we didn’t hear: the customer hit THEIR mute button, turned around and said, “Finally, someone is going to tell us the truth!”

That SQL didn’t get resolved that night. What ended up happening is that enough people on the customer’s end went home, so the remaining people could actually run the query. The next week the SQL was pulled out of the application and I wrote a performance-tuned stored procedure. However, something much more magical happened – we started trusting each other.

My new boss (since the previous one had left the week before) was also new to the company. He stepped in to work with this customer (who had very legitimate reasons to be frustrated.) A few other people who had been involved in these interactions were encouraged to step out and let us handle the problems. I started working very closely with the customer, and my boss started being very transparent with them. They were incredible testers; we started working together as partners when we had a release that we felt was ready, and would get excellent feedback from them. With the significant increase in communication, we could really focus on what was most important for them and they would help us get it right, before they rolled it out to production.

What did I learn from this? Shut up and start listening. Try to understand where folks’ frustration is coming from. BE HONEST. Remind everyone that you are all sharing the same goal: the customer being successful. Really focus on what you can do on your end to reach that goal. Encourage people around you to focus on what they can do to help reach that goal. No matter what your scenario, don’t think of people as customers – think of them as PARTNERS. Treat them as partners. Encourage them to BE partners.

I still have a relationship with a couple people from that customer – they have become friends. Real friends. I know I can reach out to them if I need help – hardware questions, home lab setup questions (one of them is a hardware guru). I am pretty sure they would reach out to me if they had a tSQL question as well. Some of them were going to join me at PASS Summit this year (partially because we know this awesome restaurant in Houston, but also because .. we’re friends.) They have brought a lot of value to my life 🙂 So… please take what you can from my learning, I hope it brings you the good things it’s brought me!