Product manager’s guide to outsourcing software development
Outsourcing software development is a great option for a business that lacks an in-house team with the time or resources to handle every element of a project, or doesn’t even have an in-house team and doesn’t want to spend time setting one up for a short-term purpose.
It does require some additional work at the managerial level, though, to make sure that the resources are allocated properly and a satisfactory outcome is reached.
If you find yourself in the position of managing an outsourced software development project, here’s how you should go about keeping everything on track:
Find the right partners
Since you’re heading the project, the product that results from it will be your baby, so it’s extremely important that you find the perfect software developers to deliver it. You don’t want to get halfway through a project and realize that you’ve chosen an unreliable business, after all.
Line up some potential candidates through whatever methods you prefer. You can ask for recommendations from colleagues, contacts, or industry peers, and/or take the standard method of Googling software development companies.
You want to be checking the following things for every candidate:
- Reviews from previous clients
- Their formal qualifications and credentials
- Their supported languages and platforms
- Their capacity (how much work can they handle?)
- Their vision of the project
- How well they come across
- How expensive they are
Additionally, if possible, you might want to select a business (or businesses) in your area— should something go wrong, having the ability to easily meet them in person would be a huge advantage. This depends on how your company operates, though. If most of your staff works remotely, you probably won’t consider location very important.
Project management is key
Some software development companies will handle much of the project management for you through appointing an internal manager and having them liaise with you. Others might need you to oversee things more closely. You need to discuss this with your development company to see what requirements they have and what concessions they can make to your preferences.
These days, you’ll most commonly find that they operate using some kind of agile methodology, which prioritizes the frequent delivery of (and iteration upon) small but meaningful chunks of output. This makes for a very flexible project but places more demand upon you to review those chunks and steer them in the right direction.
Alternatively, there’s the more traditional waterfall approach of planning out and signing off on the entire project during a discovery phase at the start, then letting the development team work down the flowchart until the final deliverable is ready to be assessed. This requires far less input from you but has the risk of breaking down halfway through and/or resulting in a solution that isn’t fit for purpose.
Be sure to get a comprehensive breakdown of specifically how they usually operate, and work with them to find an approach that suits all parties involved.
Communication is always key in business, but even more so in project management. Regardless of the development approach, you agree to take, you’re going to want to get consistent updates from them, especially if they’re overseas.
Schedule regular virtual meetings to check that everything is going according to plan and there isn’t anything holding up the project. They don’t need to be exhaustive or even particularly long, and you can play it by ear depending on how comfortable you feel dealing with them— just make sure you have a good idea of what’s going on at all times.
To facilitate this, find a communication tool (or set of tools) that can keep you connected and/or keep work output in a place you can both monitor. Common options include Slack, Basecamp (they’re a good combination), Google Drive, Dropbox, and regular chat platforms like Google Hangouts or Skype. Pick out a combination that keeps you satisfied with the correspondence but doesn’t introduce too much admin or slow the development process down.
Know where to invest
Before you agree to anything, be absolutely sure that every part of your budget is being spent sensibly. The developers will have suggestions for you, but don’t assume that they know what’s best for your needs. They might not have fully understood, or you might not have completely thought things through. Early estimates aren’t always very accurate.
For instance, you might have a large chunk of your budget set out for the complex design and development of a website, but you might be better served using a simpler site builder and investing the saved money in another part of the project — like backend or custom software.
Then there might be project elements that could easily work out as significantly more expensive. Suppose that a development company is confident that it can handle a certain tricky part but can’t be conclusive— if it can’t ultimately manage it, how will that damage the project?
You should leave some leeway in your budget to cover the most important elements in case complications like that arise (most common with agile methods that often demand pivoting).
Your success = customer success
Software development is an investment in the future. Whatever you make of the budget during the planning stage, don’t forget that a well-designed deliverable can end up saving you time and money for many years to come. Stay focused on how the project will make customers happier and solve their problems.
By carefully choosing the right development company (or companies) for the job, managing it effectively, communicating closely, and investing in the most important things, you can give yourself the best possible chance of delivering a fantastic solution.