Hiring Software Contractors

Posted on
software contracting client software engineering

Over on HackerNews was a question about “Best practices for hiring software contractors. As I have been a contractor for about 10 years now, I will give you some insights in my approach when it comes to clients and getting hired for a job. I am living in Germany, not everything I write might apply to the situation in your country.

Context

There are many contractors out there with varying skill levels. Some are good, some are bad, others are good in their niche, but suck at everything else. I consider myself a good one. At the core I am a generalist and have done a lot from embedded to web and frontend to backend. But I have my preferred niches in manufacturing systems engineering and I love Software Architecture. By principle, I do not offer my services on fiverr or upwork, as they are budget driven and are for the most part not in my price and project size class. Instead, I prefer direct customer acquisition as it offers the highest rates or recruiting agencies if I am lazy on the marketing front but want a customer with a big name. The Projects I am involved in have usually a length of one to three years.

Principles

Contracting is something different from hiring an employee. Let’s lay some groundwork to help you understand the nature of contracting.

  1. Contract work is by definition always time-bombed. A relationship with a contractor will end at some point in time well before retirement, usually at the end of the project. Handle them accordingly.

  2. Good contractors have their price. Good contractors know their skills and charge accordingly. The more specific and exotic the skill the higher the price. Usually you can talk to them, but they have a very clear understanding of what they will do to which conditions and what they won’t. Good contractors also have more Job offers than they need and a financial cushion to live for at least 6 months without a contract. This also means they will walk away if no consensus is found.

  3. Contractors have more freedom in when and how they do their work. Do not try to micromanage. Contractors usually chose that career path for a reason. But you can set reasonable deadlines and demand excellence in their work. Measure them by their results instead of time sitting in a chair.

Best practices

In this section I try to give you some best practices for working with contractors. This contains mostly experiences from my own projects. Most of it is not specific to hiring but extends to the whole extent of the collaboration. I tried to sort them according to the chronology of a collaboration with a contractor from hiring until off-boarding.

Good contractors do only very rarely advertise, as they have more than enough work to choose from. They mostly operate by word of mouth or have one or two partners with whom they work together for project acquisition. They might have a Xing or LinkedIn profile, but the default answer on these platforms is a clear “NO”. This can be because they are involved in another project, or the approach was made by volume without upfront research to match the skills of the contractor with the project requirements or a too vague description of the task to be done. This all leads to wrong expectations and confusion between both parties. As I will mention it again later: The currency of a good contractor is trust and it has to be earned. So please try to be as clear and concise as possible when approaching a potential contractor if you use platforms like Xing or LinkedIn.

Once you have made first contact it is time to get additional information about skills and past projects from the contractor and to match them up with your tasks. There should be a clear overlap, but do not require a perfect match. Also look for experience in the field. A good contractor will have the experience or if he doesn’t he will clearly tell you what he can and cannot do. If the contractor wants into the field but lacks some skills he will usually offer you a better rate and make it up to you for learning really fast.

Good contractors will have a track record of relatively long projects. Be cautious if the contractor has a lot of really short contracts in his resume, that are too short for the general project length in the industry. I for example only provide a CV with a customer and project list and a description what exactly I have done during a project. I do by principle do not give direct references to people from my previous projects, as I value their privacy above potential future clients.

Once you have a first impression, it’s time to get to know each other. Avoid too long interviews and unpaid upfront work. A few hours, maybe a day is reasonable, everything above will either be paid or the contractor may walk away. So cut the bullshit.

I made the experience that there is first a phone interview, then a face to face meeting. After that there is usually a test drive in the form of a one to three month contract. If you are happy with the contractors work, let them know early and extend the contract for a longer time. Also let them know early if you have to let them go at some point. Contractors will thank you for the advance notice.

Now to the contract itself. I do not like liability clauses in contracts, as they impose risks to me as a contractor. Expect to be charged extra for the additional risk. If the risk is too high especially in research projects with a lot of uncertainty expect the contractor to walk away if the clause isn’t removed.

By default, most of my contracts are billed by the hour. Usually this means the contractor has to deliver a detailed time sheet when and on what he has worked. Fixed price contracts are rare. I will only accept them, if I know exactly what has to be done and how long it will take to complete. If there are a lot of unclear requirements or research and development tasks I, as a contractor, will refuse fixed price contracts.

Now that you have hired a contractor it is time to define some rules for the work at hand. Ideally they should be known upfront.

First of all you should prefer team players. As contractors are gone at some point in time, they have to document or transfer their Knowledge verbally to the other team members. This should be an ongoing process from the beginning. Contractors that refuse to do so should be avoided, as they leave a legacy no one understands and is hard to clean up. Even worse, if you as a client do not know what your contractor is working on, you have no chance of verifying any incoming bills.

Trust is Key. As a contractor I have to earn my trust. But I also demand it if I perform well on the assigned tasks. Trust also gives both sides some leeway when the shit hits the fan. A contractor will give you some slack if you are late with a payment or will work in advance, even though the follow up contract isn’t signed yet.

Define clearly the tasks and obligations the contractor has to fulfill. This gives both parties the opportunity to assess if they are happy with the arrangement. In my experience it helps to allow remote work but demand on site as the project demands it. This gives my as a contractor some flexibility. This is often necessary as contractors will be far away from home if they are on site.

Lastly, do not micromanage, but measure them by the work results of the contractor. Good contractors are fast learners and will be productive within one to two days. Communication is also very important. Overcommunicate especially when you are a remote worker. Let each other know as early as possible if something will change regarding the contract. This gives both parties the opportunity to plan months ahead in order to find a replacement or a contract with another client.

Conclusion

As you see, working with contractors is easy if you clearly set the expectations, communicate openly and accept some specific rules to contract work. I hope this post gave you some insights into the world of contract work. If you have questions, or would like to work with me, please send me an email.