What’s software contracting and is it for me?
Software contracting is where you offer your software engineering skills and expertise as a service to companies
It’s also otherwise known as freelancing or consulting. Software contractors are independent and often offer their services through their own companies. Quite a few professional software engineers opt to contract instead of working as full-time employees: based on Stack Overflow’s annual survey, about one in ten professional developers are independent, freelance or self-employed. That’s not an insignificant amount!
9.5% identify as independent contractor, freelance or self-employed in Stack Overflow’s 2020 annual survey
There are many flavours of software contracting, however. Software engineering is a broad discipline and therefore you could be one of many types of contractor, if you choose to be one. Let’s look at a few.
Types of contracting
With so many programming languages (JavaScript, Python), web frameworks (React.js, Vue.js), databases (MySQL, PostgreSQL) and technologies, there’s naturally quite a range to software contracting. What it comes down to is how you position yourself as a contractor. Here are some ways in which you might position yourself:
- A generalist contractor helping set an organisation’s tech strategy or a specialist offering Node.js or machine learning expertise.
- Hands-on, building apps from scratch, or hands-off offering high-level advice and expertise.
- A startup expert with the ability to get products off the ground or an enterprise technology expert with the knowledge to implement long-term projects effectively.
In a discipline as broad as software, there are many ways to position yourself. The key thing is that you know what you’re strong at and make it part of your personal brand.
Is contracting for me?
Contracting is not for everyone, that’s for sure! But it can be an opportunity for certain software engineers. It depends on your experience and willingness to take on challenges in exchange for the benefits of contracting.
Your experience
Contracting is about selling a skillset or expertise to your clients. That means you’ll want to be in a good position to be able to sell your experiences and skillset you’ve accumulated over the years. You might be:
- An experienced engineer, outgrowing your current career path and looking for a new challenge
- A specialist software or ML engineer, with a skill that’s highly in demand
- A generalist engineer, with a skillset that can be highly beneficial to startups
- A self-starter and you’re seeking more flexibility or autonomy in how you work
- A former technical founder, looking to help other businesses with your experience
Contracting generally tends to be suited towards mid to senior level engineers, as you’re selling your expertise to clients. There are junior contracts available but you might find it easier (and more fun!) to have lots of prior technical experience to be able to consistently offer value to your clients.
Challenges
If you can relate to one or more of the above, contracting could be for you. But know that contracting also comes with some challenges. They’re not insurmountable but require some initial effort. Some of these challenges include:
- Being prepared to deliver — that means setting realistic goals with your client, occasionally working the extra hour to make sure projects get over the line and keeping your client happy 🙂
- You need to be ok with some admin work. This includes incorporating your company, maintaining a schedule with your clients and tax reporting (get an accountant to help you). It takes a bit of getting used to but it’ll come easy if you’re organised!
- You want to have some financial cushion. As your skills will be sold as a service to your clients, you’ll be invoicing them like a business. Clients don’t all pay you on time or have their own payment schedules (sometimes as long as 45 days after you issue an invoice). So it’s important that you don’t get stressed out by cashflow. If you’re thinking about applying for a mortgage in the near future, you might want to do some research into what your self-employed status might mean in terms of your credit worthiness.
Benefits
If you’re happy to take on some of the challenges above, there are some great benefits to contracting! Here are some of the benefits that I’ve personally enjoyed from software contracting:
- Flexibility: You define your own schedule (e.g. 2–3 days per week)
- Good pay: Of course, contracting comes with the risk of being out of work and/or waiting for client payments. But the pay can be very good. For example, the median React.js developer charged £525/day in 2019 according to ITJobsWatch. If you consider yourself above median, you can expect more.
- Personal life goals: The flexibility that contracting buys you can help you pursue goals outside of work. I enjoy working on my indie projects on days I don’t contract (including contracto.dev!).
The challenges might sound like a lot. But if you’re an organised and driven individual, the benefits of contracting can outweigh the challenges of contracting!
Thank you
Thanks for reading this blogpost.
If you have any thoughts or questions, please do share them with me at mario@contracto.dev. Every comment is important to me, as it will help improve my writing and give you a say in the topics I write about!