Working With 3rd Party Vendors
Originally published 29 April 2015
In agile software development, self-direction and control is key. As teams we write stories, estimate them, and play them. What we do, when we do it, and how we implement it is all up to us. In contrast, a 3rd party vendor is something you have very, very little control over. Because of this, agile software teams are typically awful at working with vendors, particularly those with different software delivery processes than our own. When we can’t directly control a piece of our process and alter those that aren’t working, the process can easily break down.
Have you ever had a burn up chart look like this?
That inflection point is when your vendor delivered something and it sucked. Like, really really sucked to the point where your entire team got blocked until the vendor’s next delivery. And then that delivery sucked too.
So how do we keep our product owners and project managers from crying themselves to sleep at night? Here are a few things I’ve learned the hard way.
1. Know what you want
Imagine sitting down for dinner at a fancy Italian restaurant. The waiter comes over and asks you for your order. “Hmm, I’m not sure. Surprise me!” When the waiter puts down a plate of something you hate in front of you, you don’t now get to scream at the poor guy. If you don’t know what you want, you’re going to get someone’s best guess instead. You might get the best damn lasagna ever made but if you were deep-down craving spaghetti you’re probably not going to be happy.
Finding out what you want is going to take some work. If you’re working with anything customer-facing, hardware or software, prototype it (and prototype, and prototype some more). Then test your prototypes with actual, real-life customers before even googling a potential vendor. If instead your vendor deliverable is something a development team will be working with, then ask developers what their ideal deliverable would look like. It sounds obvious, but team leads (who are often non-technical) are not the best people to ask what their team needs from a piece of software.
It might take some time to do this iterative design and testing upfront but it will save you quite a bit of time and money compared to having to re-do the whole project later with a new vendor.
2. Ask for what you want
So you know what you want, now you have to ask for it. When searching for vendors be up front and explicit about what you’re looking for. Find out what products they sell that are closest to what you need. If you have the budget you can ask if they can alter an existing offering or create something custom for you.
If your vendor can’t meet every need you have (and they probably won’t be able to), try to prioritize what you want and be prepared to kill your darlings. Also think about what kind of delivery cycles and responsiveness you’ll need from your vendor. If you have to sacrifice a few desirable features to work with a responsive, continuously-delivering vendor, do it.
3. Have a single point of contact with your vendor
If you have multiple points of contact with your vendor they will both a) not be able to make meetings at the same time and b) not catch up with each other about the meetings/emails they have each received and missed. This will end up with you having a testy phone call with one or the other about why they’re pushing back the delivery deadline or the functionality doesn’t match what you’d asked one of them for. It will be unpleasant.
Avoid this situation by having a single person to communicate your needs to and to inform you of their delivery expectations. Caveat: if you have multiple projects or products ongoing with this vendor, ask for one point of contact per project. An overwhelmed and overworked vendor representative is only going to end up disappointing both parties.
4. Make them a part of your team
People like working with nice people; they like to feel needed and included. Liking your coworkers not only makes you more satisfied with your job, it can actually affect how you feel about life in general (source). Research also shows that the more satisfied people are with their jobs, the better they do them (source).
Knowing this, it makes sense to ensure your vendor’s point of contact feels, as much as possible, that they are a valuable and liked member of your team. If they’re local, hold your meetings with them in person as frequently as makes sense. If they’re too far to visit regularly, make sure to get at least a few days of face time with them early on. Ask them to join your daily standups, your HipChat or Slack group, and any other forms of continuous casual communication your team uses. And be nice — say thank you when they help you out and let them know you appreciate the work they’re doing to develop your tool.
6. Push for small, continuous improvements to your deliverable
Big product releases are scary. They’re even scarier knowing that when (not if) you find bugs it’ll take a month or more to get a fix for them. They also require your team to sink a lot of valuable time at once into getting the damn thing integrated and working.
Getting your vendor to deliver small but frequent iterations of a product as it develops is probably the hardest thing on this list to accomplish (and as such I don’t really have any concrete advice on how to do it reliably). This is especially true the larger (and more waterfall-happy) your vendor is. Expect it to be downright impossible for some companies.
If you can’t get frequent deliveries at least get frequent updates — remember how your vendor point of contact should be attending your daily standups? Ask them to update your team on progress their team has made, and keep a running log of issues and features they’re working on. It’s better to get a huge delivery of something you’re expecting and know what to do with than to get a big unknown dropped into your lap. It will also help your vendor to be more upfront about the challenges and potential date changes they’re facing.
5. Go ahead and bitch, but keep it private
Bitch about your vendor — at some point in your project you’ll have to if you don’t want to tear all your hair out in frustration. It’s the nature of working with something so wholly out of your control. But be careful! Complain to your roommate, or your spouse, or your cat as much as you want (unless they tell you to shut up). Try not to gripe too much in your project area; grumble about it a bit with your coworkers and then move on for morale’s sake. If you really must bitch about it at work, check that your vendor isn’t dialed into a call being held in the room. They will hear you. It will be super awkward. Trust me.
How do you feel about working with 3rd party vendors? Any totally awesome vendor experiences to share? Any hilarious horror stories?