By Tim Landgrave
A corporation that provides services in a very specific vertical market engaged my firm to evaluate the code that a local software development company was writing for them. The corporation had hired the software development company over a year ago to develop software that managed the corporation's service delivery process and provided automated record keeping, auditing, and reporting functions. The original programming estimate assumed six months of development time would be required until the project was ready for field testing; the corporation was very concerned that the project was taking longer and costing more than the estimate anticipated.
After reviewing the development process, design document, and requested changes (all done with well-documented change orders), I assured the corporation that the software development company had good reason for being behind schedule based on the volume of changes that had been requested to the original design. As the corporation began trying to sell its services, it found that it needed significant system changes to provide the level of service its customers expected. It wasn’t until we reviewed the software development contract that I uncovered the corporation’s real exposure.
It sounded like a good idea at the time
At the time the contract was signed, the corporation consisted of three business people with a good understanding of their market and a substantial financial investment but very limited experience developing or deploying software. To preserve capital, they entered into a joint venture of sorts with the software development company. Their agreement allowed both parties to share ownership of the source code to the application. The software development company gave the corporation a reduced hourly rate in exchange for co-ownership of the code, under the assumption that it would be able to reuse the code in other applications. This also gave the software development company the ability to develop an application framework that would make modifications to this system and future systems easier to create and modify. Then it could apply the corporation’s specific domain expertise to the framework to create an application for its customers.
Unfortunately, the corporation didn’t limit the markets or systems in which the software company could reuse either the common framework or the industry-specific domain expertise it had developed during the project. So when one of the corporation’s competitors approached the software company about developing a similar system, the corporation had no legal recourse when informed that the software company intended to take a development contract with its competitor. In fact, the software company estimated the time to develop the competitor’s system at less than three months based on a year of development time and the associated domain expertise it had captured while working for the corporation. Fortunately for the corporation, it was able to negotiate a noncompetition amendment to the contract to keep its competitor from entering the market quickly. But it had to pay a healthy sum to get the software company to agree to the amendment.
Protecting your company
So how do you ensure that you get the best price on a software development engagement while protecting your company? The best possible scenario is to hire or use your own internal consultants to design your system and only use outside consultants to write discrete pieces of code. Consultants should develop all code in-house on your own equipment, and source code should never leave the building with the contractors. Make sure that the consulting firm or placement company signs a standard “work for hire” agreement that gives your company the rights to all intellectual property generated by the engagement.
Using an existing code base
In many cases, you won’t have the internal expertise to manage, design, and deliver a large-scale software project. Moreover, using external consultants who have demonstrated expertise in your market can dramatically reduce your time to market. So how do you balance your need to accelerate development with your responsibility to protect the company’s intellectual assets?
First, understand that many consulting contracts specifically allow the consulting company to use their existing code assets to reduce cost and accelerate development. If the contract allows using shared code, insist that you get the rights to the entire code base (including the shared code) and that you have the right to modify the code for internal use but not for resale. This protects the consultants' interest and gives them no reason to deny you the source code to the shared components.
Developing new code
When code is developed from scratch for your engagement, avoid contracts that specify source code will be shared after the engagement. The consultant should own and update any code considered a core utility or framework, which multiple unrelated systems can use. If consultants are using your software system to help develop a core code base, they should do this work at a reduced rate since they will reuse the code in future engagements. The consultant should give you an unlimited license to use and extend the code for internal systems as long as the source code is never resold. You should, however, retain the right to sell the code as part of any industry-specific software that you develop as long as the software is delivered only as compiled code.
Once you’ve determined which code is horizontal in nature, be very specific about what you consider to be vertical code. By vertical, I mean code developed using your company’s internal domain expertise. This knowledge, captured in code, represents a key element of your company’s intellectual property. You cannot afford to give up the right to keep this knowledge in your company and out of the hands of your competitors. So how do you protect it? First, make sure that you own the rights to all of this code and that the consultant may not keep a copy of the source code once the project is completed.
If the knowledge gained by consultants would allow them to assist your competitors in quickly developing a similar system, consider asking the consulting company and any individual participating in the project to sign a noncompetition agreement that would limit their ability to develop a similar system or work as a consultant for your competitors.
When lawyers are worth their money
Here’s a case where lawyers are worth every penny you pay them. Creating binding noncompetition agreements and drafting documents that protect your interest in intellectual property created outside of your company are just two of the areas in which the right lawyer can save you thousands of dollars by creating a firm, but mutually beneficial, development contract. Know what rights you expect to maintain from the systems you develop, and make sure you have a lawyer who knows how to create a document that protects them.