When implementing staff augmentation outsourcing, what are the key considerations in sizing your internal team?
First some clarifications: By staff augmentation, I am referring to a long-term contracting relationship where the provider supplies labor and manages the environment, recruitment, training. I am not referring to outsourced developers working on-site, which may be a transitional phase to allow the client to build its experience with the provider and transfer knowledge.
1. Ensure production support. If the internal team is responsible for production support, ensure enough staff to cover production related matters such as:
- Assisting systems/IT in diagnosing problems
- Working with operations or customer support in diagnostic or emergency cases
2. Backups of #1. Depending on one senior developer to support production is precarious, incase she’s ill or on vacation. Also, developers who have production responsibilities are less available for new work. It’s a common problem: you want your most experienced developers to lead new features, but they’re also the most capable for production support. Encourage them to train their less experienced colleagues. It’s not easy when seniors can do it in a fraction of the time. But they must delegate production issues if you ever hope to staff properly.
3. Outsourcing leadership overhead. In an optimized staff augmentation scenario, the remote team is highly independent. Projects are sliced vertically, enabling remote teams to be as autonomous as possible, taking on as many tasks and roles as they can, to minimize communication time with internal leads. However, leadership overhead is still unavoidable. So those hard-working internal developers, who, as we’ve been discussing, support production issues, mentor others, lead projects, and code, now have the added responsibility of guiding remote teams. Their work includes regular meetings, answering questions, validating specs, and steering the technology. This is part of the overhead of staff augmentation. Typically 20 – 30% of an internal lead’s time is enough to support a 2-3 person remote team.
4. Analyst/PM. If the team is larger, consider supplementing with an internal analyst or project manager. Good software analysts have broad technical and communication skills, and can handle most of the communication, spec writing/reviews, and project management, for your remote team.
In a situation where the remote team functions independently and is in full control of the code, you will not need an internal developer. An analyst or project manager would suffice.
I hope these points offer a useful perspective to your remote team management and internal resource planning.