Outsourcing seems easy only to those who know little about it. Software outsourcing in particular is a very hands-on game. In a perfect world you could simply send a list of your problems to your partner (along with a cheque), and not think twice until delivery. Ask anyone who’s ever tried this, though – it works out poorly. If you want to get the most out of your outsourcing, you need to be active.
Don’t run howling for the door just yet. The intimidatingly vague phrase ‘be active’ can be expressed more helpfully in ten key points. Together they provide a practical guide to choosing the right software outsourcing partner for your needs.
1. Prefer Dedicated Resources
Short-term contracts for specific projects might have smaller individual price tags, but they’re not always an efficient or effective way to meet your company’s actual needs. It’s worth thinking about dedicated resources instead. With dedicated resources, you’ll have a team committed specifically to your projects for as long as you need. Over time, the team will get to know your business inside and out. They’ll have personal interests in the outcomes of your projects, which will be reflected in their performances. Think of it like having a third hand – with dedicated resources, you can keep more balls in the air.
2. Budget Accordingly
Smart and successful people look for ways to save money. They don’t become successful by spending lavishly for unnecessary frills. However, they also know there are times to open their wallets. Choosing your software outsourcing partner is a lot like choosing a surgeon – you want to seriously think about the level of quality you expect. Trusting your important projects to the lowest bidder seems like a great idea…until you realize they have no idea how to meet your needs and aren’t particularly interested in doing so. When it comes to software outsourcing, be willing to pay for the good stuff.
3. Prepare Before Engaging and Stay Involved
Your own business goals should be clear from the start. You need to know what you want before you can tell someone else. Having a list of specific needs and requirements makes planning with your vendor much easier. Get people on your end ready to communicate with the vendor, and give them the resources they need to be effective. It’s important to maintain an active role in the partnership even after your initial communications. For the best results you’ll want to be in touch almost daily. If you take your role seriously, it sends a clear message to your partner that you’re committed to success.
4. Forget Waterfalls, Get Agile
The old linear models of development are obsolete. It’s no longer practical to proceed rigidly in sequential order and postpone testing until the last minute. The waterfall method was first described formally in 1970, and today it seems as out of date as room-sized computers. Contemporary software development requires faster response times and greater adaptability. Modern, agile methodologies like scrum offer greater transparency and superior results. By breaking up projects into short, manageable chunks, agile methodologies offer more opportunities for testing, feedback, and adaptation.
5. Before Coding, Define Your Requirements
Before your team begins coding, your methodologies should be well conceived and documented. Agile methodologies are helpful for this – with their short iterations (generally 1-4 weeks), you only need to have concrete requirements for the current phase of the project. With traditional waterfall methods, you’d have to make a plan for the entire duration before starting anything. In any case, make sure your organization has the resources available to properly plan and record your requirements.
6. Visit Your Offshore Partner
You’ll want to do this as often as possible. Strictly speaking it’s not essential to see your business partners face-to-face anymore, but having an (occasional) physical presence has several advantages. First, it gives you a clearer idea of how your partner operates. What does the office look like? Are things organized and up to date? Do the employees look miserable, or are they doing yoga? These details can tell you a lot. Second, it demonstrates your engagement in the partnership. If you take the time to visit, it becomes clear that you care about getting things right. Third, and perhaps most importantly, it’s a great excuse for a quick holiday. Your partners are based near a beach, right?
7. Include Testing Resources on Your Team
Even the best developers occasionally make mistakes, which is to be expected. You’ll want to include at least one good tester on your offshore development team. On larger projects you may even want a separate testing team to ensure that all the bugs are worked out before release. Some companies only hire teams of developers, but this is a risky strategy that can cause headaches throughout the project. It’s easier to stop the problem before it starts by investing in testers in the first place.
8. Do Code Reviews
Your vendor should be conducting regular code reviews, and communicating with you about the results. This is a good way to stay aware of your project’s progress. However, when possible your company should also review the code. Ideally, you have your own opinions about what good code looks like, and how good software architecture is built. If you have in-house expertise, you can examine the code for yourself and make informed comments or suggestions for improvement. You’re your partners understand what you want, you can review less often. Doing your own code reviews gives you insight into your vendor’s methods, and helps you articulate your expectations. Still, it’s not unreasonable to insist that your vendor conducts code reviews as well to ensure top quality.
9. Schedule for Refactoring and Technical Debt
Software development is like alchemy – a complex and demanding craft. Over time, the code will deteriorate. Often developers are in a hurry to meet short deadlines, so there are little issues with the code. The code still works, but it’s more difficult to read and doesn’t perform as well. Eventually this raises the costs of maintenance. It’s called technical debt, and it can be avoided by refactoring regularly. Refactoring allows you to address issues with specific parts of your product. If you’ve been staying involved in your product’s development (by doing code reviews, for example), you’ll be able to fix the problems before they cause a technical debt hangover.
10. Use the Force (of Advanced Development Practices)
If you’re really determined to improve the quality of your product, you need an offshore development partner who’s willing to put in extra effort. There are two key software development practices your vendor should be using. The first is continuous integration - every modification to the source code is built and automatically tested for defects and regressions. This helps detect issues early. The second practice is automatic deployment. Deploying the software to the servers (usually a tedious manual process) can be automated to a single command: just click the deploy button. If you use these practices consistently, you’ll have a functional product after every improvement and added feature.
Software outsourcing can be an invaluable tool for your business. With the right partner you’ll be able to produce high quality products far more efficiently than you could alone. However, it’s important to choose a capable and committed partner with whom you can communicate clearly, and to commit the necessary resources for success. You’ll want to ensure that your partner follows up-to-date methods and takes quality control seriously; you’ll want to follow the same rigorous standards yourself. Most of all, you’ll need a clear idea of what you want and when you want it. If you can communicate that to your partner, and they can deliver, then software outsourcing suddenly looks easy.