Outsourcing development: trust vs accountability
I have written about outsourcing or offshoring development teams before. If your endeavour requires an aspect or your technology to be excellent, and you don’t have team to do it, it can be worth outsourcing. This decision becomes clearer if there are other important areas of the business that need focus and energy; and those areas are more core to your business at that point than augmenting your in-house development capabilities.
The inevitable talent gap
So let’s say you find an agency, run by some great people with good credibility, and you contract them to provide you a team. It's mission critical stuff, so you demand a mix of seniour resources and intermediate resources for which you allocate the appropriate budget. They agree to provide a complete team that will interface with your team to take on a project that everyone agrees is doable. About two to three weeks later, however, you start to get the feeling that all you did was pay someone to get you bodies. You get nervous when you start to see evidence that developers on the outsourced team don't seem to be principled about how the work gets done. You hear about day-to-day decisions that seem to lack professional judgement: Things that should take an hour take ten, code is checked in late with gross mistakes or lazy looking decisions. They also don't seem to communicate like experienced developers and your in-house staff is now starting to freak out. You know enough to spot a junior developer from a senior one; and it seems to you that these folks are struggling with simple tasks and not admitting it. The senior principle from the agency who told you he would personally stay on top of the team does not show up enough, and the project manager they provided is easy to reach but does not fill the leadership gap either. It's only the start of the project and you have not even got to the hard stuff yet, but you feel like you need to act, or you will start losing the confidence of your own team. You now have a problem. Do you work with the agency leaders (the ones who sold you) to fix things? Do you get stuck in the middle between your team (who says the other guys are hacks) and the agency team that says your folks are the ones off-process? Do you redouble your commitment to the agreed upon methodology, even though you secretly feel it’s mostly a talent and experience gap? Do you fire the agency because you feel lied to?
The model always had problems
I know some very principled and very talented people that run outsourced dev shops / agencies. Watching them over the years has taught me that no agency can survive, let alone flourish, without selling intermediate quality people as if they are seniour resources. And no agency can scale without using a lot of juniors and then awkwardly hammering those efforts somehow into cogent value for the client. No one has a roster of seniour developers on staff waiting for your project to start. More likely, the agency has two or three very good principal directors/founders and a few reliable or loyal intermediate folks. This talent gets spread thin as soon as they have multiple projects; and having multiple projects is a requirement for running a good business. Invariably there will be a considerable gap and the only way to fill it is with less than perfectly experienced people. They hope those juniors will learn and scale fast. They mean to work closely with them and put them on the right projects. They know this approach adds risk for the client, but they tell themselves that project-risk is nothing new and that is what we have methodologies for. So they rely on their methodology to shield them and the client from poor decision making by less experienced developers - the ones who will be billing most of the hours. This is the agency model used by both large and small consultancies. If a couple of otherwise fantastic and knowledgeable professionals pitched you their dev shop by trotting out their methodology rather than profiling the exact team, then you are dealing with a typical agency model. Having said that, if you get frustrated and switch to another agency, you will likely encounter the same thing. It’s hard to run an agency, but it’s just as hard to be client and trust your agency when they initially fail to staff the project the way they said they would. Do you start to regret your decision to outsource? Every choice you make will have problems and most agencies will have the same problem. So should you keep trying new agencies until you find one that doesn't break your trust?
What about trust?
Trust is important in business. As a practical matter, trust is something I maintain with my board , my staff, and my customers. But with my vendors, it’s more clarifying to focus on accountability. We pay them to take on our problems while also trying to run their own business in the process. The alignment of interests will never be as perfect as it would be if you had built the team internally. The best you can shoot for is that the agency leaders and their brain trust will step-up and take responsibility for all the failures on the project (theirs and yours). After all, they are the experts, not you. Naturally I want to work with an agency who will make my problems go away and not give me new ones in the process, but that never happens. So, I will settle for one that is run by people who will stay awake at night trying to solve the issues as much as I would. If we can't be perfectly aligned because we each have our own businesses to run, at least we can all understand, very deeply, that failure is not an option of either of us. Trust is nice, but I can't rely on it, mutual assured destruction is better.
the key principle
It's super important to point out that there is no value in this accountability if the people you seek to hold accountable are not also believable. Believable means they are bone fide experts at what they do, they have done this kind of work before (multiple times), and they know what success for the client looks like. Without believability, they can't really be held responsible for anything. Being accountable means they will keep at it until they get the right people on the project, it means they will do the work themselves if they must, it means they will eat their margins until the project is back on-track. Being believable means they will do a better job in the end than you could have. I don't know why it seems so many projects must go through this initial pit of despair and why otherwise experienced people on both sides keep finding themselves in this situation. But I do know it's common and that it happens no matter how much you pay or how much effort you put into your pre-project vendor selection. I know a lot of leaders who swear they will never outsource. I think they have a ton of problems keeping an internal team up and running too and they sometimes dream of holding someone else accountable. Both approaches are hard and generate high visibility failures, bad feelings, and stress. If you do decide to offshore/outsource/team source and you have high expectations - then choose the agency you think is run by people who are the most believable and whom you can hold the most accountable.
The Elephants (Spanish: Los Elefantes) is a 1948 painting by the Spanish surrealist artist Salvador Dalí.[1]. They are often viewed as symbols of strength, dominance and power due to their bulk and weight.[3] Dalí contrasts these typical associations by giving the elephants long, spindly, almost arachnid-like legs, once described as "multi-jointed, almost invisible legs of desire