What It Takes to Outsource Your Project Successfully
Outsourcing your project can either be a great help or a great hinderance, depending on whether you follow some of the tips below.
Join the DZone community and get the full member experience.Join For Free
The blog below, written by Distillery CEO and Founder Andrey Kudievskiy, was originally published last year, but its sound advice is even more relevant in our increasingly outsourced world. We're sharing it again in the hopes that it can save you from unnecessary outsourcing headaches.
With AI assistants like Siri, Alexa, Google Assistant, and Cortana playing an exponentially growing role in helping us perform the tasks that make up our daily lives, nowadays, nearly ALL of us are outsourcing. In addition, it's projected that, by 2027, the majority of US workers will work on a contract, on-demand basis. Traditionally the province of businesses looking to offload work while conserving internal resources, outsourcing is now an everyman activity.
Similarly, today's technology-focused businesses increasingly embrace outsourcing to help them expedite development efforts and scale their tech teams. By outsourcing their software projects, they can reduce their risk while remaining internally lean. Of course, not all outsourcing engagements are created equal. Outcomes can vary based on the quality of your outsourcing partner, the quality of their developers, and their level of integration with your internal team. Regardless of these factors, the good news is that, by adhering to a few key guiding principles, you can give your own software outsourcing projects a much better chance at success.
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.
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).
Published at DZone with permission of Andrey Kudievskiy, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.