There are a lot of different ways to outsource, the kind I'm talking about in this post is usually called "Staff Augmentation". When you use a staff augmentation model, you hire team members who will be 100% dedicated to your projects as opposed to hiring at an hourly rate or hire at a flat rate for a specific project.
When you outsource development there are things you need to ensure are covered in your contract. If you don't cover them, you might have a lot of misunderstandings early on in your project.
Top 5 Staff Augmentation Contract Requirements:
- Job duties: Be sure you outline the details of exactly what kind of development you expect to have your team doing. If you need PLSQL coders with at least 5 years of experience who can do data analysis and are capable of doing their own implementations, be sure you state that in your contract. It may seem obvious, but unfortunately it's not - if you aren't sure what kind of developers you are going to need, you must figure that out before you start up a team. If you need Java programmers and get .NET developers, you could spend a lot of time teaching them basic skills with a language that's new to them on your time. Be sure you are not providing on the job training. That's fine for direct hires but not really what you want when setting up for staff augmentation.
- Team hours: I can't say how important this is; be sure you state up front exactly when you expect your team members to be available and be sure you have it documented in your contract. If you want to have the least impact to your own hours be sure you have plenty of overlap with your team to work out any issues with your requirements or other collaboration that will be required. I suggest you try to have at least half of each day as an overlap. Be sure the people you are hiring will work when you need them to. It doesn't help you if you have to wait a day for emails to go back and forth to get questions worked out. It's a lot easier to have a quick phone call and less time gets wasted that way, too. How many hours per week/month/etc. are required? What, if any, holidays will be paid? Don't forget that holidays are completely different in other countries than the US (sometimes much more numerous too!).
- Management responsibilities: This is another one that should be obvious. If you don't express what you expect from your contracting company's management, you might get little useful involvement. When using a staff augmentation model, the contracting company doesn't have as much incentive to put in extra time helping to get good performance from the team like they would if you had hired them for a flat rate for the project. Yes, they will know they need to keep you happy but typically they will take a hands off approach unless you ensure they have clearly outlined duties. Without having this covered you might need to complain repeatedly to get any responsiveness. If your expectations aren't covered clearly, they could come back asking for more money to cover management work that wasn't in the contract.
- Performance: Be sure you state in as much detail as possible what you consider good performance and get your contracting company to agree to the same definition. If you aren't comparing apples to apples, you will be disappointed in your teams performance. For example, if you expect a typical ETL process to take three days from start to finish, you can outline the details of what constitutes a typical ETL process and the timelines expected. One thing that's sure, if you don't provide some expectation as a starting point, you are not likely to have the same expectations as the contracting company.
- On-boarding: Another item that is often overlooked is the on-boarding process. Usually, when you are doing staff augmentation, you don't expect to need a set amount of people on the team but that the team size will fluctuate based on your business needs. You need to clearly cover how you will bring people on to the team and take them off. If you plan to have a certain amount of permanent team members be sure to state that number in the contract. If you have to provide two months notice to take someone off the team that probably isn't a great idea. You need to ensure that whatever flexibility you need is covered in the contract.
There are many other things you need to cover. For example, I'm sure you noted that I didn't mention the pay rate. These are just some of the ones I feel are more likely to be forgotten but still critical. What other important items would you say need to be covered? Please comment below!