At what point does having outside contractors on a team stop being worth the benefit?
The team I’m on at work currently has a remote developer. He’s very good, but he lives in another country, and is technically a contractor and not a full employee. That means there are restrictions on what he can and can’t have access to or do for us. These limits have started me wondering, at what point is a remote developer’s ability to contribute so limited that it limits their value to the organization as a whole?
The biggest limitation with this contractor is that he can’t log into any of our production boxes or databases. That means he can’t investigate production issues until we can come up with a way to replicate it on a dev box, and severely limits his ability to investigate any customer support tickets that come in. In short, we can use him as a code monkey, but we can’t use him to help support the apps we’re building. Personally, I think that’s a waste of the man’s skill and talent, but those are the rules we’re operating under.
And just so we’re clear, I don’t disagree with the rules and policies at play here – they’re good defaults for protecting customer privacy and data. The problem is these sane defaults keep this developer from completely taking ownership of some of the apps we want him to work on. This is frustrating because it means somebody else (right now, me) has to be able to cover for these limitations on top of their existing work.
Generally speaking, our team members essentially “own” certain apps completely. That means they not only handle all of the new work/bug fixes that come down the pipe, but they investigate whenever a support ticket comes down the pipe since they’re more likely to find any issue with the customer’s setup or find any bugs in the code before the other developers on the team. With this remote developer, he can’t “own” anything. Oh, he can be kind of like the primary leaseholder, but at the end of the day, you still need a second person to make sure all the work is covered, even if it’d only be 1 person’s job if you were exclusively hiring domestically.
The fact of the matter is, this guy is a good developer, but because of these rules, he’s limited. Given the rules that govern these remote contractors, hiring remote developers like this means we either have to hire 2 people instead of 1, or the people who aren’t contracted outside the country find extra work getting piled onto them. Neither of these options is particularly optimal, which sort of begs the question of why not just hire local only?
On another team, there’s a whole crew of contractors from the same country working on another service, with 1 developer working in our local office. That seems to be working out a lot better, which probably influenced the idea to hire the remote contractor for my team. That team has a different structure though. They’re all responsible for 1 service, with a single app that uses it, instead of several small apps that consume a variety of services like my team. As a result, on that team the remote developers can focus on pure coding and there’s still somebody who can focus on any tickets and bugs that come in.
Luckily, we happen to have a lot of back-burnered, coding heavy projects on our team, so our remote developer has plenty of work that he can do. My concern is for when that work runs out and we hit a general maintenance mode for everything. It’s also over the fact that even if make him the “owner” of our apps, we still have to have a second person covering the parts he can’t do. Even if he doesn’t own any of the apps we build, then he’s still relegated to being nothing more than just a random coder we throw at any project that could maybe use some extra manpower or that the main app owners don’t have time for themselves. That just seems like it’s a waste of this guy’s full potential.
It’s entirely possible to have remote contractors be a part of your development team and have everything work out, but it’s not the best possible solution for all situations. Generally, it works best when you have a single, long-running project where you know you’re constantly going to have pure coding work that needs doing. You also have to have a team setup that intentionally has a second group of people helping to investigate customer issues. Sadly, that’s not our current team structure, but I’m still hopeful we can find a way to make this work.