Contracting software development can be beneficial to small startup companies and companies for which software development is not the core business. For a client, the benefits of contracting software development are:
- It gives more time to focus on its core competencies.
- It avoids having to deal with HR (human resources), PM (program management), training and other issues.
- It provides instant access to seasoned professionals.
- It provides flexibility with cash. At DMMD we are interested in lowering development costs by designing a “sharing of technology” agreement. In other words, by lowering development costs, the IP developed as part of the project is shared by DMMD and the client. This can have a significant impact on the development costs.
- It increases speed of development and provides more flexibility.
- It can help shift risk, by paying for deliverables rather than hours worked.
When setting up a contract with a software development company, there are several factors that are good to keep in mind and to address in the agreement. Some of these factors are:
- Performance monitoring. There should be a clear way that performance is monitored. This can be based on specific tasks being completed in a certain time frame. An agreement on how reviews and sign-off points are conducted is important.
- Termination rights. It is important to assume the worst case scenario and to have a clear exit strategy.
- Source code rights. These should be clearly defined in the contract. If the project is based on source code that was developed earlier, who and how does the client have access to this code. Will there be access to this code or not? More importantly than the source code, sometimes is the source control tree. Will the client have access only to the latest version of the code, or the entire development tree? (Having access to the entire development tree can be useful when the client decides to switch developers.)
- IP ownership and exclusivity. This is a critical component of the agreement. In general, higher development costs should be associated with more IP ownership, while lower development costs should be correlated with less IP ownership.
- Payment schedules. Having a clear understanding of when money exchanges hands is important. It helps both parties plan their finances appropriately.
If the client seeks to outsource different components of their product development to different companies, it is important to set up one company as the principal. The principal company is in charge of the final delivery. This avoids running into a situation where the client has to start making important technical decisions by keeping track of multiple contractors. Inadvertently, a project with multiple control points is more likely to fail than a project with a single control point.
– Darian Muresan
no comments