One year ago, I left my full-time job at Ubisoft Montreal and became a freelance developer. In this article series, I share my experiences and a few concrete tips on how to switch to freelancing. It is, of course, targeted towards aspiring freelance programmers, but other freelance workers will hopefully also find a lot to learn. Some of the information presented is also specific to Montreal, but the overall step by step process can be applied elsewhere.
This series is composed of three articles. Each article covers a stage of your progress towards your goal of becoming a freelance developer. They are presented in a chronological order. Last week, we went through the preparation stage: before you left your current position and could position yourself as a freelance developer.
This week, we’re presenting the following stage we call transition. At that point, the switch to freelancing is done, but no contract has been signed yet. Finally, next week, the execution stage will help you keep your business healthy while working on your first contracts.
A career is something very personal, and it is very likely that people have different views about what becoming a freelance developer means. This series is not about answering all questions to everyone. It’s about sharing my experience with other newcomers so that they can benefit from it. Any question or remark is more than welcome, please share them in the comments at the bottom of this page.
At that point in your move to freelancing, you left your full-time job or occupation. Thus, you can advertise yourself as a freelance developer. It’s also a time when you generally don’t have any contract to work on yet. Because you’re ready to work on a project anytime, It is a great opportunity to use that free time to network with potential clients and sign your first contract.
It is very important to make your switch from employee to freelance clear to your professional network. Post on your Linkedin wall, twitter feed and any other network. Make it clear that you’re available for contract hire. Mention the skills you chose during your preparation.
You will also want to avoid receiving messages from recruiters about full-time job opportunities. Make it clear in your profile that you’re offering your skills as a contractor, and that you’re not looking for a job.
Now that you’re officially a freelance developer, it is much easier for your potential clients and your peers to understand how you position yourself. It will be much easier for them to see the value you can bring to their business. Other freelance developers will see you as a potential partner or collaborator, and potential clients will know that you’re available for contract work.
Montreal has a lot of events going on all year long where you can meet friendly and talented developers. Montreal Tech Watch has lots of information about next conferences, meetups and hackathons. I also invite you to subscribe to their calendar so that you can receive notifications before each event.
Notable events include the Confoo conference, MTL new tech, Big Data, JS Montreal, Montreal.rb and MontrealPython meetups. Some of these events are hosted at the Notman House, which is a hub for people interested in all things related to technology.
Conferences, meetups and hackathons are great to meet fellow developers, but some events are even better if you’re looking to meet potential clients. For instance the AQIII, for “Association Québécoise des Informaticiens et Informaticiennes Indépendants”, organizes monthly meetups where independent software development consultants can meet potential clients or recruiters. They also run a monthly newsletter with tons of interesting information about all things related to running your personal business like financial or legal tips. You can consult a directory of professionnals offering services to freelance developers, like independent insurance providers, accountants or financial counselors. Being independent themselves, they are more likely to understand your needs.
Recruiters are also very helpful to contact businesses you wouldn’t have access to otherwise. Feel free to connect with them on profesionnal networks like LinkedIn: it’s in their interest to connect with you, and they will send you contract opportunities sooner or later. As mentionned earlier, make it very clear that you’re a freelance developer and that you’re not looking to work as an employee. You should have enough recruiters in your professional network who hire for contract to that you receive contract opportunities that fit your skillset at least once every month or so.
Jobs posting websites can feel old, confusing and targetted exclusively towards full-time employees. Moreover, there is not much variety in the opportunities that are offered in terms of skills and industries. Often, you’ll find opportunites for developers with an expertise in established technological stacks, like Java or PHP. What if you’re looking for a part-time freelance gig to work on a cool Node.js back-end using Redis, all of that running on Amazon Web Services?
Smaller jobs posting platforms exist that have these opportunities. As an added bonus, their user experience is often much better than the other ones. I personnally use Gun.io and Authentic Jobs, but I’m sure that more exist out there.
Last but not least, you will need to plan your pricing strategy and working schedule before contacting your first potential clients. Their first questions will likely be: “When are you ready to work?” and “How much is it?”. Usually, they expect your answers to be “Right now!” and “A small amount of money.”. However, it doesn’t have to be that way.
The important thing here is to make up your mind regarding your availability and pricing before you meet a potential client. During the negotiation, it will be much easier if you know what you’re ready to give up and what you want to stand for than if you improvise on the spot.
The questions you’ll have to answer for yourself are:
Do I want to be paid by the hour or by projects? Unless you’re an expert with a few projects under your belt using a very similar technology and solving very similar problems, I recommend that you charge by the hour. Otherwise, you may end up working extra hours for nothing. It has also a lot of advantages for your client: if the project goes out of hand, or does not make sense for your client business anymore at some point in time, it can be cancelled very quickly without incurring any significant cost. If the project is executed quicker than expected, your client doesn’t have to pay you for hours not worked. More generally, it’s easier both for you and your client to stay agile when you’re paid by the hour.
How much do I charge? Weither you charge by the hour or by project, you should not price your work too low, or you will end up burned out and your work will suffer. In the end, your clients will end up not satisfied and nobody wins. In Montreal, a fair price can range from about 65$/hour to around 150$/hour, depending on the type of work and your expertise. Since you just started freelancing, chances are that your price will lean towards the lower end. However, don’t hesitate to charge what you feel is fair for your work: your potential clients will not accept it if it’s not in their price range, and that’s fine. Not getting a contract because your price is too high happens all the time. Other potential clients who are willing to pay the price for the value they get from your work will come around. Of course, it doesn’t mean overpricing your work. unless you’re truly an expert in your field, charging more than 100$/hour may not be a good idea.
How long do I work? This question is actually two questions in one: “How long do I work during the week?”, and “How long am I ready to work for a given contract?” Moving to freelancing is also a lifestyle choice. You are free to choose how long you want to work and the answer doesn’t have to be 40 hours a week every day for an unlimited amount of time. You should ask yourself what makes you most efficient for your clients, and what is compatible with your lifestyle. Personally, I enjoy working 40 hours/week and 5 days a week for periods of three months. This allows me to be efficient and get enough work done in a week to feel motivated by my progress. It also prevents me from getting bored and it helps me pick small sized projects that last for about three months before they’re done or they move to the next stage. I tried other types of schedules, like 3 days/week of 8 hours each, but I found out I was still thinking about my client’s project the rest of the week. I also ahd the feeling that I wasn’t progressing as fast as I could. You should try a schedule that you think is good for you. Don’t overthink this, pick a schedule, and see how it works. You should be able to communicate to your client if the schedule you picked doesn’t work as expected.
How many clients do I work for at the same time? A common mistake is to think that you have the time to work for more than one client if it fits in your schedule. I would strongly advise against it unless each client’s project takes one third of your weekly schedule or less (e.g slightly less than two days for a 5 days/week schedule). The reason is that a lot of unforeseen events and difficulties can happen during a software development project. Each project will likely take more of your time than expected, turning your 3 days/week schedule into a 5 days/week one, or your 5 days/week schedule into a nightmare. Instead, I recommend working for one client at a time, setting your price accordingly and using your free time to develop your skills.
This concludes the transition stage. This week’s article was a bit shorter than last week, but we presented some crucial topics:
Next week, we’ll present how to keep your business healthy while working on your first contracts. In the meantime, please feel free to share your thoughts in the comments section below.
See you next week!Julien Gilli 01 October 2013