Software Development Contracting


  1. Personal and business relationships are determined by power; and the struggle for power to satisfy ones needs.
    • Marketing personnel earn bonus points for dominating, squeezing, and economically destroying vendors.
    • Small businesses generally do not have, or have a limited, marketing budget and by necessity squeeze vendors.

  2. Trust in a business relationship is a non-recourse agreement.

  3. Trusting developers are subservient to the client.
    • Trusting developers assume a formal contract is too much bother or it may make the client suspicious.
    • Trusting developers have oral agreements, not contracts.
    • Trusting developers agree to start a project with the promise of a contract.
    • Trusting developers agree to leave-out terms from a contract such as amount of payment and payment deadlines.

  4. Seasoned developers have a equal and fair relationship with their clients.

  5. Seasoned developers have contracts with their clients before start of the project.
    • Seasoned developers know that clients find reassurance in having project details specified in a contract.
    • Seasoned developers know that a client who is suspicious of contracts, or delays contract signing, is the worst type of client and should be avoided.
    • Seasoned developers do not agree to a deadline without a contract or contract modification.
    • Seasoned developers do not rely upon the good intentions (e.g., verbal promise) of the client representative. They wait for approval in writing.
    • Seasoned developers use lawyers to review contracts.
    • A $300 per contract cost is nothing compared to thousands of dollars of losses due to client layoff, project feature creep, new designer, etc.
    • Lawyers make money for the professional developer.

  6. Contracts keep a level, fair, playing field thereby eliminating power-quest factors in a project.

  7. Key elements of a developer contract:
    • Intellectual Property (copyright and trademarks) are not transferred to client until full payment.
    • Project termination requires full payment of current project phase (usually 1/3 of budget).
    • Clearly stated warranty or liability limitations.

  8. Project Negotiation Protocol
    • Start with a project survey and fill in details from a generic contract. Once general terms have been agreed upon, client will have their client-lawyer approve the contract.
    • Do not discuss contract terms with the client-lawyer. Not knowing contract law gives the client-lawyer the advantage to legally bind the developer in a conversation.
    • Based upon discussion(s) with client representative, resolve contract details or modifications with your developer-lawyer.
    • Developer-lawyer then negotiates contract language with client-lawyer.

  9. Negotiation strategy:
    • Decide on labor costs before seeing client. Have hourly labor rate(s) and costs memorized.
    • Calculate project cost based on project survey details. Usually triple anticipated costs.
    • State project cost with specifics and with confidence.

  10. For any given project:
    • Have contract signed before project kick-off.
    • If possible, develop allies in the client business that can provide background and foreshadow political intrigue.
    • If possible, find advisors that know the ins and outs of the client's business.