I'm the tech lead of a project that involves 4 companies. In the interest of anonymity, let's call them A (my company), B, C and D. A and B are fairly large companies, but C and D are giants.
So far, companies A, B and C have worked pretty well. Not everything went according to plan, of course, but the teams from A, B and C help each other whenever there's a problem and progress is pretty good.
Company D, on the other hand, has proven quite problematic:
- until we realized and stopped them (they were in charge of project management), they kept silently shifting the goalposts for company A, hence putting us in permanent failure position, also delaying the project by at least 6 months;
- whenever we have agreed on something, they keep trying to renegotiate it;
- so far, every time we asked D to do something, I ended up doing it;
- so far, they haven't delivered on their main contribution, which is running 5 months late (they estimated it would take them about 3 weeks);
- their tech team basically ignores most of our questions;
- on the rare occasion in which the they do answer questions, the process is interesting – "Hey, I answered orally your technical questions to one of your managers I met by accident, I'm sure you got the answer";
- company A spent several months attempting to solve an open problem, until company D claimed "you can stop searching, we found a solution" – except they wouldn't tell us how, and it took them 5 weeks to share the solution, 4 weeks to promise that they would benchmark the solution, until I finally took matters in my hand, wrote that test and determined that their solution was actually (slightly) worse than ours, but by then it was too late, because they had spent the last 9 weeks adapting their entire project to their solution, before testing;
- a few days ago, I was blocked by a bug in their code, and their team's answer to the bug report was "We're doing it right, we're not interested in fixing the bugs, look, you have bugs in your code, too" (or we could, I don't know, all fix our bugs?);
Now, we can't fire any of the companies as partners. But by now, we have 4 managers whose main role in the project is watching over company D and keep them on track, plus me. In most meetings, I feel that I spend my time asking company D to please do what they promised to do, and please stop trying to expand the scope.
That's not sustainable.
Is there any right way to handle this problem?
edit Still going on. "D: Hey, this consensus didn't involve me. – Well, I'm sorry you don't talk to each other at D, but your tech lead said your team was good with this."