Outsourcing a software development project can be a miracle that helps you avoid delayed delivery, reduce costs, tap into new technology and scale significantly faster than if you’d relied on local, in-house resources. It can also be a complete disaster that leads to project failure and an overblown budget. These are two drastically different outcomes following the same process — how is it even possible?
I managed outsourced projects for a good chunk of my career. I saw many of them turn into fantastic successes, and I saw some of them go nowhere. I have observed the process from both sides: using outsourced development to expedite my own projects, as well as providing outsourced product and project design and development services to clients. I am now the CEO of a sizable full-service software design and development firm, which means that I’ve continued to have an up-close view on the process. Very little pains me more than seeing people’s excellent intentions — and probability for achieving that “miraculous” success they seek — subverted by a simple lack of experience in working with outsourced teams.
Accordingly, in an effort to spare anyone planning to outsource a software development project from potential disappointment and disaster, I’m happy to share the insight I’ve gained over the years on the following basic principles that are crucial to successful software project outsourcing:
Let the Developers Do Their Jobs
I cannot possibly count how many times I saw fantastic clients who wanted to do their best for the project providing overly prescriptive recommendations to professional software engineers. The recommendations would include detailed descriptions of how some particular feature should be implemented, how to name variables and in what specific format to store data. See where I’m going with this? There’s no better way to drive developers crazy than by micromanaging. Instead, perform sprint planning, assign tasks to the team and check the results. It will save you a tremendous amount of time, as well as the developers’ sanity.
Set Up a Communication Schedule and Format
Daily standups are simply awesome. Adding weekly TGIF (thank god it’s Friday) meetings in the mix, as well as a monthly all-hands meeting, will do miracles for your communication flow with the outsourced team. Use video conference software like Zoom, Highfive or GoToMeeting to organize video calls with remote developers and Slack for quick real-time chats. Emails aren’t dead yet, but I’d recommend using them primarily for non-time-sensitive communications.
Measure Development Speed
Do you feel that your outsourced project is moving too slowly? Well, a feeling is not something that’s measurable. My recommendation is to use points per sprints to measure velocity. That way, you can easily gauge differences in speed among individual developers and understand if the project is moving quickly enough, giving you a better chance for successful on-time delivery.
Outsourced projects are still projects. They do require your attention. I’ve seen clients who end up on the opposite end of micromanagement, dedicating close to no time to a project or abandoning it altogether. If the outsourced team requires you to approve UX or design for a new feature in a couple of days’ time, please do so. Otherwise, development will be delayed and sprint velocity will be impacted.
If Possible, Have a Local Tech Team in Place
Or at least a CTO, CIO or technical co-founder. In my experience, having a technically inclined member of the client team highly involved for the duration of the project has often been the single most important factor in the success of an outsourcing project. If you don’t have someone who fits this bill, however, it doesn’t mean your project will fail. It just means you have to acknowledge your limitations and staff your outsourced team with those limitations in mind.
Which Brings Me to My Last Point: Acknowledge Your Limitations
If you aren’t technical enough and you don’t have a technical co-founder filling a CTO or CIO position, do yourself a favor: Instead of straight outsourcing, opt for a managed team. For non-technical clients, managed teams are a blessing; they are able to take the project on as their own, planning, designing, and executing with minimal client oversight. The major mistake I’ve seen people make is believing they can successfully manage an outsourced project themselves — even if they’re doing it for the first time and they also have a full-time job. Of course, statistically speaking, it is possible. But I’d rather put my money on a roulette table in Vegas and have a better chance at winning.
Having been on both sides of the table, I can absolutely assure you that following the principles above will significantly improve your chances of successfully outsourcing your project. The bottom line is that successful project outsourcing requires trust, ongoing communication, clear-sightedness, and clear metrics. If you follow these simple guidelines, there’s no reason all your outsourcing projects can’t feel like happy miracles.
A version of this post originally appeared here.