Outsourcing a software development project can be a miracle that helps you avoid delayed delivery, reduce costs, tap into a new technology, and scale significantly faster than if you’d relied on local resources. It can also be a complete disaster that leads to project failure and an overblown budget. 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 observed the process from both sides: using outsourced development to expedite my own projects, as well as providing product and project design and development services to clients. Over the years, I’ve learned that the following principles are crucial to successful software project outsourcing:
Have a local tech team in place. Or at least a CTO, CIO, or technical co-founder. This is the single most important factor for project success. If you don’t have a technical team in place, however, it’s okay — read on.
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 outsourcing, opt for a managed team. For your project to succeed, you need a project manager and a team of expert engineers who can work independently on your project, enabling you to continue focusing on the other pressing tasks you have at hand.
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.
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 them. 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, thus giving you a better chance for successful on-time delivery.
Pay attention. Last but not least, 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.
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.
Disclosure: I currently run a software development company which, among other services, offers clients the option of integrating our software developers and engineers into their Agile teams (co-sourcing). If you’d like to learn more about how my company, Distillery, can help you address your outsourcing needs, please let us know.
Author: Andrey Kudievskiy: CEO and founder Andrey Kudievskiy started his career in tech at the age of 19 while working on his degree in computer science. Within five years, Andrey had established his first company and played a key role in creating a successful cloud synchronization startup that was sold to a Fortune 500 company. A serial entrepreneur and talented developer in his own right, he is currently focused on enabling other entrepreneurs to build businesses and continuing Distillery’s expansion in the U.S. and international markets.