It was a quiet afternoon in my office in Orlando, but my mind was anything but calm. My knees are weak, palms sweaty. No vomit though. I’m about to enter a call with my client – Meghan, Director of Sales. We’ve had 3 misses in 2 weeks. Broken promises. Bugs are not fixed. Way over budget. Miscommunications. We were behind 2 weeks ago, and now are even further behind. I have to tell her we need to push out the timeline – again. The last few calls were already contentious – we had promised to address them and we have not been able to.
This call is going to be a doozy. Am I about to get fired?
I start the call and just lay it on the line: “Sorry Meghan, I know we had planned for everything to be development-complete today but it’s not. Some of the changes you requested are going to take longer. We need more time. It’s not any major issues but there are more bugs and changes than anticipated. We…”
She cuts in before I can finish, “That’s what you told me weeks ago. I’ve been in the application since then; it seems more unstable than before. Some of the simple text changes I asked for weren’t even done yet.”
I tried to jump back in, “Yeah, we want to fix the bugs first but…”
She won’t have it, “It’s not just the bugs. It’s communication. Gina is a pencil pusher. She shuffles emails from me to your offshore team. She doesn’t respond to me quickly because she doesn’t have the answers. She doesn’t get my business and can’t manage the time zones. We’ve spent tens of thousands of dollars – maybe even 6 figures on this. And what we have now–it’s not something I can take to production. This isn’t working, Rajiv.”
There is a long pause. She’s trying to control her frustration and not make impulsive decisions. If I say the wrong thing here, the project is done. Heck, do I even want to fix this? It’s a crap ton of stress every week. Maybe I should cut our losses and walk away…
I start talking very slowly, “You’re right, Meghan.”
“This isn’t working. We have seriously underestimated this work. Gina is not technical, and although she is in your time zone, she can’t help you. The technical complexity of your project is too much for the developers we have assigned. I take full responsibility for that failure.”
Suddenly, it felt like a weight had lifted off my shoulders.
I could tell that Meghan felt it too. “Look Rajiv, I worked with you because I trusted you. You came across as someone who cared and wanted to understand our business. But like you said, your team just isn’t delivering for what our project has grown into.”
You could still tell she was disappointed, but the tone had shifted; it no longer felt like we were on opposite sides of the negotiating table.
It almost felt like we were fellow participants at a funeral – mourning the death of our failed project.
At that moment, I knew what I had to do. “Meghan, I know this is a lot to ask but I think what you need is a senior technical architect – onshore.”
She certainly wasn’t jumping at the idea.
“As we said, the current model is not working because your project complexity, responsiveness, and project cadence are mismatched with the resources we have currently assigned. BUT… if we had an onshore senior developer/architect – who took requirements directly from you and did the heavy lift of design and oversight – while the offshore team did the easy stuff, then we would have the results we want.”
Meghan was mulling it over, “What if we get further in the hole after you hire this person?”
I had to put up or shut up. “Then you don’t pay me,” I stated, “I will find the right person for this, AND we will fix all the bugs for free until we launch”
Meghan is definitely considering it, “Are you saying we should pause for a few weeks, and then this new resource comes in – wait, what is their hourly rate going to be?”
No way to sugarcoat this “So… this would have to be a senior resource, so 50% more than what we were paying Gina. Also, since this person would also be doing code and architecture, we would likely be increasing the monthly budget by 40% or so.”
“But here is the thing,” I continue, “I believe this is the right solution for you. If we get the right resources in place, you will get quality, responsiveness, and on-time project delivery”
Another pause. Was she going to go for it?
“Look Rajiv, we’ve worked together for more than a year now. I depend on your recommendation. But this is the last chance, if we cannot deliver this time – it’s over”
That’s all I needed. “Thanks, Meghan. As I said, you will not be billed anymore until we’ve resolved all the bugs.”
That phone call happened almost a decade ago. Over the years, we built their core systems, they grew tenfold, and we broke 7 figures in billing with them.
I’ve told this story to almost everyone on my team since then. Our team values can’t just be words on paper. They must be lived out. It’s incredible how, when the chips are down – 30 seconds of vulnerability, accepting reality, and just doing what it takes – can make things right.
The lessons from that experience continue to shape our trajectory. We can’t assume that every client will give us second or third chances. But it’s our job to do what our client really needs, and what is the best way to deliver for them.
For those in stressful client situations – don’t get defensive. Listen. Accept reality. Unlock what the client really values and give them that, empathy can take you farther than you think. But also be brave – stand up for what you believe you can do.
Remember: You can’t GO wrong if you are willing to acknowledge that you WERE wrong.
Names changed for privacy.