Understanding Employment Contracts for Software Engineers
Learn how to read your employment contract and how to protect yourself and avoid getting locked into a bad situation.
First off — I am not a lawyer, and this is not legal advice. I may be wrong in any of this. Use this for entertainment purposes only, and get an actual lawyer if you need one.
Over my career as a software engineer, I’ve signed a handful of employment contracts. I used to sign them without thinking, but as I grew in my professional career, I became more and more aware of the limitations (and benefits) contracts provided.
It led me to believe that all software engineers should be aware of what they are signing. In the US, provisions in contracts like non-competition agreements and non-disclosure sections, can easily take away your ability to compete within the market place.
Some provisions impact software engineers more than others. While the totality of the contract should be carefully examined, in particular, be sure to keep an eye out for provisions related to the following:
- Work Product Ownership
Non-competition provisions are contractual obligations to not compete against your employer. There’s many forms of it, but in general, they typically restrict you from joining companies defined as “competitors”.
For a period of 24 months following termination, Employee shall not directly or indirectly perform engineering services for, or be hired by, companies operating within the on-demand food delivery industry.
The wording of this prevent me from joining Oohber Eats if I was an employee of food delivery company DoreDosh. That’s not quite the end of the story though.
You can’t be prohibited from operating within your chosen profession, or using skills you’ve obtained at another company.
Employee rights matter
Turns out employees have rights that can’t be signed away, regardless of what the contract says.
Courts generally don’t like employers prohibiting legitimate competition, even via contract. Unreasonably restrictive non-competition agreements get in the way of employee mobility, and often interferes with the rights of employees to make a living.
You see, the courts have had many cases that have determined that the rights of employees to work within their chosen profession overrule the protection of a company’s interests. This means that provisions that prevent you from doing your job at all might actually be determined to be completely unreasonable and unenforceable if it was attempted to be enforced.
Regardless of whether you signed a contract or not, an employer generally can’t prevent you from:
- Joining a non-competitor
- Working within your industry as a software engineer
The law of the land
It’s especially important to know the laws in your area. Some states, such as California and Hawaii, have banned non-compete agreements outright. This means if a company there were to attempt to enforce a signed non-compete against you, the courts would tell them to “pound sand”.
Let’s look at Washington’s laws. As of 2020, the law H.B. 1450 provides significant protections:
- If you make less than $100,000 as a full-time employee, or less than $250,000 as a contractor, you cannot be held to a non-competition agreement.
- If you are fired or let go, the company cannot enforce a non-compete against you unless they are paying you your salary for the duration they are forcing you to not compete. This is especially relevant during COVID-19 — many companies have reduced employee salaries significantly, which might potentially be considered a constructive dismissal.
- There is a maximum duration of 18 months. Anything longer is unenforceable.
- If a court has to rewrite or modify a non-competition agreement, the employee will be entitled to a reward of $5,000, plus reasonable attorney fees.
- Employers must provide “consideration” (aka. $) for existing employees to sign non-competes, or they must disclose mandatory non-competes prior to the employee accepting the job.
Knowing about these protections can save you a great deal of trouble from a company that is over-reaching or attempting to intimidate you into not legitimately competing.
Non-solicitation (of customers)
Employee agrees to not solicit Company’s current customers for a directly competitive service, or to perform any action that causes a customer to reduce the extent of their business with the Company.
Contracts may have a clause specifically mentioning that you aren’t allowed to solicit a company’s customers. It’s a protection built in to provide the company a protection: they don’t want you taking their customers away.
Chances are you’re not doing very much sales, so this shouldn’t be a big deal. However, some customer non-solicitation agreements also include provisions that prevent you from contacting the customer for ANY reason, even if it is about a completely unrelated line of business.
This may not be what you want, so tread carefully.
Non-solicitation (of employees)
Employee will not solicit or cause to be hired Company's employees for a period 18 months following termination.
Businesses don’t want employees poaching other employees, so they may add a clause prohibiting such solicitation.
If you move companies later on and want to bring your friends, these clauses make it difficult to do so without raising eyebrows.
As a tip: look at the wording. It may not prevent you from recommending people, or putting them in touch with the actual hiring managers. Perhaps it is only restricted to people who the organization considers “key contributors”. It may even limit the scope to just current employees. Whatever the case, definitions matter.
Work product ownership
The Employer shall own all Work Product arising during the course of the Employee's employment with the company, and that Employee's work is considered "Work for Hire". “Work Product” shall mean all code, documents, inventions, copyrights, and other intellectual property developed during the Employee's working hours with the Company, or developed using the Company's resources.
Also known as an invention assignment agreement or work for hire provision, this clause basically ensures anything you do or create for the company belongs to them.
This makes sense — companies want to ensure that they have all rights to the code you write. They don’t want to pay you tons of money to write their new technology only for you to turn around and claim it is yours.
Where it gets tricky
While employers can absolutely claim ownership of code you wrote for the job, it becomes quite murky when a company’s claims to ownership extend beyond that to ownership of code or projects you’ve created outside of work.
Some companies I have interacted with have even attempted to extend ownership claims to know-how, ideas, or industry practices.
To protect yourself, always make sure that your work and personal projects are separate — use different computers, don’t use company time or resources, and make sure to keep a strict barrier between the two.
If possible, get it in writing that they won’t claim ownership of side projects. Some companies allow you to list your side projects as being excluded from the ownership clause, while others simply state that as long as it isn’t a part of the company’s business you’re automatically in the clear.
Also know your local laws — some provisions limit work product ownership to only projects worked on within the context of company’s business.
For the purposes of this Agreement, “Confidential Information” shall include all information or material that has or could reasonably have commercial value or other utility to the Disclosing Party that was provided to the Receiving Party, including but not limited to source code, software projects, business strategies, documentation in any medium, customer lists, and financial information. Receiving Party shall hold and maintain the Confidential Information in strictest confidence for the sole and exclusive benefit of the Disclosing Party.
The confidentiality agreement / non-disclosure agreement is designed to protect the company’s secret information from being shared outside of its desired usage.
Note that even if a company claims something is “confidential information”, it might not be. Certain things can be falls into the employee’s general knowledge, which the employee can’t be prohibited from using. Other things can be reasonable held to not be confidential, such as industry practices, or prior knowledge that was derived independently of the company
Some contracts may have a carve-out for residual knowledge, protecting general knowledge you obtain:
Nothing contained in this agreement shall restrict Employee from using for any purpose, any general ideas, concepts, know-how, technologies, algorithms, or techniques retained in unaided memory relating to the Services that are covered by this agreement.
While Employee is Employed by the Company, Employee will not render services or engage in any other employment, including consulting or contracting, without the written consent of the Company.
Some employers don’t want you moonlighting — taking on other jobs except their own. This is intended to ensure you are focused and the outside work does not disrupt your normal duties.
You may have a bunch of side hustles — I certainly do. Make sure your contract allows for them. Some companies allow for you to list your pre-existing contracts or projects as excluded from the terms of the contract.
As always — check local laws. Some laws prohibit provisions against limiting moonlighting.
Any dispute or claim arising out of or relating to this contract, or actions by the parties in relation to any of the subjects in this contract, shall be settled by arbitration administered by a neutral 3rd-party arbitrator chosen by the Company, whose decision shall be fully binding and final.
Some agreements explicitly prevent you from going to court against the company and instead must settle disputes via an arbiter. It’s supposed to be a less expensive and faster process than going to trial, but may result in decisions against you that you can’t appeal, or decisions made by a 3rd-party that you don’t necessarily agree with.
There’s a lot of aspects of arbitration clauses, such as:
- Who selects the arbitrator
- Discovery rules
- Ability to appeal
- Fees and expenses
- Arbitrator qualifications, and neutrality
Read these carefully before signing.
Questions to ask yourself
Let’s suppose you have an employment contract in front of you, and you want to ascertain the validity of it. You can ask yourself some questions (or just talk to a real lawyer).
Is it too broad?
Sometimes these clauses are too broad.
For example, for a non-solictation agreement — if a company works with people across the country, and you never had access to a customer list, then you might potentially be allowed to solicit customers you never had access to regardless of what the wording says.
How is it defined?
Words matter in a contract. A company may have a hard time claiming the contract says something it doesn’t.
Suppose, for example, a non-competition agreement states the following:
Employee will not provide computer programming services to a competitor for 12 months after termination.
What exactly constitutes a competitor? If you are an engineer for a B2C food delivery company, and then later want to be an engineer for a B2B catering company, does that count as a competitor? The employer might say yes, but that might be an over-reaching interpretation of the contract.
What constitutes programming services? If you were to join as an engineering manager, does that count as providing programming service? It might not, depending on the responsibilities.
It’s important to ensure that ambiguity is removed in contracts. It’s very easy to add definitions:
"Competitor" is defined as any U.S. entity whose primary source of revenue is on-demand food-delivery requested through a mobile app or web application."Programming services" is defined as coding, code reviews, programming, development, engineering, architecture, or software design services.
The ease with which language can be added also works in your favor. If a company that drafted an agreement claims later that expands beyond wording in the contract, the ease of which it was easy to add the extra term could lead to a judge dismissing their claim.
How exact is it?
Sometimes, we assume behaviors are allowed by a contract when they actually are prohibited, or vice versa.
For example, if a customer non-solicitation clause says that you can’t take any actions that leads a customer to reduce their business with the company, you might still be able to solicit their customers provided they do not reduce their business with them.
How do courts react?
When a court identifies a provision in a provision that is overly broad or unfairly restrictive, they may strike the agreement down, strike the provision itself down, or rewrite it to be more restrictive. Knowing how courts in your area respond to such violations is important.
Can you change it?
If an employment agreement you are being presented concerns you, there’s a very easy step you can take: ask for adjustments. I’ve had success inserting things like residual knowledge clauses or better definitions for terms.
Companies often exhibit a willingness to change the wording if requested, provided you are both attempting to achieve a mutually beneficial outcome.
Will the company care?
In many cases, the company will simply not care, provided you do not do anything harmful to their business. Litigation is expensive, and it has to be worth pursuing.
Of course, you may get unlucky and find a company with a personal vendetta against you, in which case cost is not the issue.
What do local laws say?
Sometimes your area may have additional laws that provide protections for you regardless of what the contract says. Washington state, for example, has many laws on the books that protect employee rights and also prevent other states’ laws from taking precedence.
Ask a real lawyer
Finally remember — I’m a software engineer, not a lawyer. None of this is legal advice. This is all for general informational purposes only, and might even be completely wrong. Get an actual lawyer to help you understand a real contract.