Becoming a contractor programmer in the UK
After delaying it for more than a year I have finally made the big move from a stable full time job to the dynamic world of contracting. One of the biggest reasons for delaying the move was not knowing the technicalities of getting all the machinery up and running. The main goal of this document is to provide an easily replicable process you can follow to become a contractor. I can not claim it is the best process to follow, but it has worked for me and other people who have advised me. Use my advice on your own responsibility.
I have made this a github repo with hope to receive community contributions to fix any inaccuracies, out of date information and typos. If you want to suggest any changes, please open a Pull Request, let me know on twitter or comment on Hacker News.
The post contains some affiliate links, they are denoted with
(aff.). I am not recommending these services because they have referral deals - any of their competitors do. I am recommending them because they worked really well for me. Moreover, some of them gives you a sign up bonus too.
When is the best time to transition?
There is no easy way to tell when is the best time to do it. However, there are some preconditions and concerns that may impact your decision.
You should have savings to cover at least 4 months of your usual expenses. You will spend some money establishing a company. It may take several weeks to find your first contract. Even if you're lucky enough to sign a contract immediately, you may need to wait a month to invoice your client and another month to get it paid. In short, most likely you'll not be able to withdraw any money from your business account until 2-3 months after you start looking for a contract position.
Also, you may have unexpected expenses, because life.
Am I ready?
One of the biggest concerns for me was confidence. Am I good enough to become a hired gun who creates value for the client even when hired for a short period of time? You will know when the time comes. I've spent 5 years accumulating valuable experience before I was confident I'm worth the money I'm aiming to charge.
When making the move I was confident I can understand and solve business problems by writing code, or sometimes suggesting alternatives. Besides that I can mentor junior team members, and build teams around projects. You may not wait this long, because, although harder to come across, there are also junior contract positions available.
Timing matters. The contracting market has its own trends over the year. Sometimes there are unpredictable droughts though. You can get a sense of the trends by looking at the number of recruiter emails you receive. Browsing through job boards and local meetup group mailing lists is also helpful. Just make sure to search for relevant terms like "contracting", "freelance" etc.
Obviously, you may need to align the move with your personal life. Moving a flat, getting a mortgage, and anything else that requires you to prove stable income may become more difficult after you switch. Needless to say events like this often require upfront payments. So plan accordingly.
Inevitably, there will be some research to do, some phone calls to make and some papers to fill before you can call yourself a business owner. By that I'm suggesting you incorporate and Ltd. You can consider becoming a sole trader, but if you're planning to earn £50,000 or more, go for an Ltd.
Incorporating a limited company
You can incorporate a company online. You can do it in advance, no extra work is required until you start trading.
A service like www.companiesmadesimple.com (aff.) will make the incorporation process easy. It usually takes up to three business hours. The most difficult thing will be choosing the company name :) I'd recommend getting the most popular "Privacy Package". You need the first three items in the "What You Get In Each Of Our Packages" table, and the Service Address. The Service Address helps to protect your name and address from identity fraud attempts. I will revisit this topic further below.
They also offer a lot of third-party service deals. The only valuable one is a business account with Barclay's that gives you £50 cash back. More information about setting up a business bank account is provided below.
Pay for the company incorporation from your personal bank account, you will expense it later.
Getting an accountant
You will need an accountant. Unless you know a trustworthy accountant who specialises in your industry, sign up with Crunch (aff. link that gives both of us an Amazon voucher). Crunch is an online accounting services provider for freelancers and contractors. They will provide you with a dedicated team of specialised accountants. Their teams are very responsive via email or phone during business hours.
Crunch also have a nice web-based accounting tool. It helps with tracking expenses, calculating taxes, invoicing your clients etc. It takes care of providing all required information to HMRC. It also notifies you about important things you need to do, such as tax payment deadlines.
After registering, your dedicated accountant will call at the time convenient to you. During the first call they will get to know you and your business. Then they will explain you how to pay yourself to remain tax efficient. They will also set you up with a VAT.
Registering for VAT
There are two types of VAT schemes you can register for: standard and flat rate VAT. The former allows you to reclaim VAT on all your purchases. You should only consider it if your business will have a lot of expenses that are subject to VAT.
On the flat rate scheme you can still claim back VAT for capital purchases over £2000, though -- like if you buy a top of the line new macbook pro.
The flat rate scheme does not let you reclaim VAT, but you pay a lower rate than you charge your clients.
As a company providing software development services you'll be adding 20% VAT to your client invoices. HMRC will take 14.5% of your flat rate turnover. For example, if you charge your client £1000, you'll add 20% VAT, totalling £1200. This is your flat rate turnover. You'll need to pay £1200 * 14.5% = £174 to HMRC. That leaves you with an extra 2.6% (£26.00 in this case) of income.
In short, you should choose the flat rate option, unless you're planning to subcontract to other VAT registered contractors. However, your Crunch team will be able to give you a more tailored advice. They will also register you for VAT without any extra cost.
A note on addresses
A UK limited company has two published addresses - a registered address and a service address.
The service address is the official contact address of the director. Personal statutory mail and notices from Companies House and HMRC will be sent there. Normally, this would be set to your office or residential address. Exposing your residential address increases risk of identity fraud. That's why you should get the Privacy Package provided by CompaniesMadeSimple. You can then set your service address to the one provided by the service.
The registered address is the official address of your company. This address is used by Companies House and HMRC to deliver statutory company mail and notices to the company. Crunch will become your agent and thus set the registered address to their address.
Both services will filter out junk mail and forward important letters to your personal address. If you use the setup above, your personal address will not be visible publicly.
Professional indemnity insurance
Most of the clients ask for professional Indemnity Insurance. This ensures that any loss incurred to their business as a cause of your negligence is insured. No need to rush with this one, your clients will let you know their liability requirements. Once you know the requirements, you can use SimplyBusiness (aff.) to compare the quotes and buy insurance online. Don't forget to expense it :)
Getting a bank account
Most UK banks offer business accounts with similar conditions. Some people advise using a different bank than the one you use for your personal finances. This is because some banks may freeze your personal account if your business account gets frozen.
You will need to call the bank and schedule an appointment. In case you chose the Barclay's offer by CompaniesMadeSimple - they will call you. It may take up to four weeks to get an appointment slot if you're in London. Do it as soon as you incorporate your company. During the appointment they will scan some documents, ask a few generic questions and try to sell you extra services you most likely don't need. It took 2 days after the appointment to open my account.
The services above will cost you some money. Pay for them from your personal account. Make sure to keep the (email) receipts. Once you sign up with Crunch, add all expenses to their system as 'Paid by director'. Once your client pays the first invoice, you can transfer the money back to your personal account.
Finding your first client
Finding your first client might be hard. The good news is: the first one is the hardest. What makes finding the first client hard, at least if you're a programmer, is the fact that most companies are looking for a contractor to start working immediately. Most likely you will not be able to secure a contract before giving in your notice at a full time job.
Two weeks before your desired start date is a good time to start looking. You'll want to squeeze in as many interviews as possible into a short period of time. You want to have many offers to choose from because the offers will not stand for long. You will have 2-3 days to decide whether you accept or reject the offer.
I employed a few techniques to improve my chances of landing a good contract. Even though demand in the market was low, I have managed to get several interviews. I got my first contract in two weeks time.
Mailing lists and communities
I'm putting it first, because my email to the LRUG mailing list has led to three promising reach-outs (I'm excluding emails from recruitment agents). One of them resulted in my first contract. If you've been programming for a while you should know about similar local professional communities, forums and mailing lists. If not, www.meetup.com is good place to discover them.
Make sure you read the rules before posting there. It's a good idea to browse the archives for good examples of other people looking for jobs and to better understand the culture, values, and standards within the community. Doing that you may also discover companies looking for contractors just like you :) Make sure your post is clear, concise. Provide only necessary information about your professional strengths and skills. Post a link to your website as the main way to contact and learn about you. You can update your website any time. Thus if someone finds your post a year later, following the link they will see up to date information on your website.
Do not put your phone number in your posts or the website. This will result in unwanted frequent calls from recruitment agents for years to come.
Reach out to your friends and ex-colleagues working for companies that may use your services. This is also a great chance to catch up with some great people you haven't seen in a while. I've worked for only three companies that use Ruby before, this approach has resulted in two interviews.
As much as I dislike LinkedIn as a company, I admire them for the value their data provides. You can use LinkedIn as a tool to identify potential leads in your network in the above approach. You can also gain a lot of insight about the industry as well.
For example, I peeked at career histories of people I found in London with terms "ruby freelancer", "rails freelancer", "ruby contractor", "rails consultant". I was able to identify a dozen of companies that don't advertise anywhere, but do consider contractors. I have also learned a lot about how different contractors present themselves on LinkedIn.
Based on the found position descriptions I have selected a few companies. Reaching out to them has landed me two interviews.
I gave it a try despite the bad reputation recruitment agencies have earned amongst developers. I've dealt with 6 different recruiters, 5 of them resulted in utter disappointment. However, many people have identified this strategy as the easiest one for getting some contract work. Perhaps I was not lucky to find the best recruitment agents to work with.
Here are a few pieces of advice for those who dare going down this route.
Recruiters will email you with vague information about positions for unidentifiable clients. Sometimes they will ask you to sign an agreement that you will not try to circumvent them and reach out to the client directly. Don't sign anything. Ask what companies are they recruiting for. If they are not willing to disclose the company names, chances are they've just conducted the "LinkedIn Crawling" step above and are not working for their "clients". They are merely forwarding your CV to random companies. Try to avoid this kind of recruitment agents if possible. Employers do not like dealing with this type of recruiters either.
I've had some friendly conversations with recruiters who would innocently ask general questions about my background. Then they would start gathering intel on my former employers so they can add them to their target list. Beware of questions about who was your boss, how the teams were structured and who were your colleagues - they'll try to poach them later. As soon as you notice that, politely tell them you know what they're doing and ask them to stop if they want to continue working with you.
This approach has resulted in no interviews for me.
Don't be surprised, it is common to be inquired about your rates during the first contact, be it an email or a phone call. Always charge for your work on a daily basis. Rate per project will lead to working much more than you anticipated, because the scope of the project will definitely grow. Hourly rates will lead to nonsensical time tracking minutia.
If you don't know any friends who could advise you on this topic, there are websites that help you calculate the contracting rates for the full time salary you're getting. A good rule of thumb is to multiply the equivalent daily rate by at least 1.5. You may need to adjust it depending on the current situation in the market. You may also need to ask for less for your first contract and then raise it as you gain confidence and grow your clientele.
IR35 is the United Kingdom tax legislation designed to tax "disguised employment" at a rate similar to employment. It means that if HMRC think you're contracting only to reduce your tax rate but qualify as a permanent employee, you will get a massive tax penalty.
I can not give you a reliable advice here, but please look it up online how to reduce the risk of "getting caught" by IR35. As far as I understand, the most important points in the contract are:
- Substitution and Exclusivity. You should be able to substitute yourself with another equally qualified person to meet your obligations to the client, at your own expense.
- Control. The client should not have control over you e.g. you should be able to have other clients at the same time; less importantly, you should not be restricted to working at a specified location on a specified schedule.
- Mutuality of obligation e.g. the client does not have to keep giving you work or pay you money when there is no work; likewise, you are not obliged to accept work from the client.
If the client insists otherwise, be ready to move on.
It also helps if your contract
- has specific, named deliverables or a project you'll be working on (rather than just joining a team and working on whatever is required to keep a software platform going, for example);
- has a short or no notice period.
There are a lot of myths and ambiguities around IR35 among contractors, so use your own judgement or consult a professional if you're in doubt. I have not used them myself, but a few people have recommended www.ipse.co.uk. Among other things, they provide IR35 compliant contract templates and tax investigations insurance, which is helpful if you get categorised as a disguised employee.
That's all the info that I can remember. If there are any missing steps or inaccuracies, once again, please open a pull request, let me know on twitter or comment on Hacker News. I may write more similar posts in future and the best way to stay up to date is on twitter. If you want to hire me for some ruby or Rails work, check out my website.
A special thanks goes to a friend and a great ruby developer Mo Baig who has taught me about a lot of the things above.