After 6 months on the Toptal core team, I recently went back into full time freelancing - doing PHP development. My experience on the Toptal core team was amazing, however I missed the freelancing lifestyle and found working around meetings and schedules at times very stressful. While being a freelancer does comes with risks and certainly isn't for everyone - I would love to take the time to highlight what I love about freelancing and how I like to work!
This one is the most obvious. Being a freelancer allows you to set your own schedule and work when you like. While this sounds fantastic, for many, this has a huge side effect. What I've learned after years of freelancing, is setting your own schedule takes planning and discipline. I have known many freelancers who commit to working full time on a project and bill hourly, but simply are unable to stay focused enough and end of doing a fraction of the work they have available. Most freelancing projects are billed hourly, so actually sitting down and working is required. Unless you are self motivated, you may find it difficult to do the required hours.
For myself, I work a 7 hour day, 21 days a month, taking 20 additional days off per year. How I structure these days in entirely up to me, often I end up working public holidays and taking other days off, or even working the odd weekend day, to take a day off mid week - I have full flexibility in that regard. I use Paymo to track literally every minute I work and track the time by task. This allows me to provide a time-sheet to my clients, which highlights my time spent in real time. This also means I don't track things like toilet breaks and a quick personal phone calls - or any breaks for that matter - and as a result, there are days which go on a lot longer than others - because producing 7 hours of actual work, can take a lot longer than 7 hours, when the timer is being paused too often!
There are some downsides. Sick days are not an option - and I either need to catch up on days missed or take them from my vacation days. The system also doesn't allow for a huge amount of flexibility. I mentioned earlier that I plan my schedule - basically, this means I plan how my hours will be broken down over the next 3 months. For example, I typically work on between 3 and 6 projects a month. I aim to bill 140 hours per month and have 7 hours for dealing with accounts, looking for new work, open source contributions, or blogging! For those 140 hours, I will estimate the number of hours I need for each project. In some cases, I have long term clients who might want 10 or 30 hours work a month. In other cases, it might be a short term 3 month project that I assign hours to work on the project each month.
For example, my current schedule look a something like this:
Long term client 1 - 30 hours
Long term client 2 - 10 hours
Long term client 3 - 40 hours
3 month project - 50 hours
Specification work for new project - 3 hours
Other (billing, accounts, finding new projects, open source contributions, blogging) - 7 hours
That all comes to 140 hours. You may have noticed earlier that I said I work 21 days a month, which is 147 hours. In this example, I am taking a day off in the month (one of my vacation days from my 20 days). November actually has 22 working days in the month. This actually gives me 2 days off in the month - I treat the one extra day as a nice little bonus. Depending on the year, it can bring my actual vacation days up to 30. When I take these and how I manage them is completely up to me - though I typically take 1-2 weeks off in the summer, and something similar around Christmas time.
Because I plan 3 months in advance, it allows me to see where I am going to be short of hours and I either look to take some holidays during that month, look to increase my hours for an existing client for that month, or look for a new project. Working with Toptal as a developer allows me to manage my availability and look for new projects on a needs basis - so overall, I am able to manage my workload well, without having too much work once month and too little the next.
Earlier I talked about the flexibility freelancing brings - this is true to a degree. The challenge is that the work still needs to be done. While it is fantastic to plan my work day around dropping and collecting the kids from school, and even going for a run during the day, I still need to make sure I get 7 hours actual work done a day. This means, if I have an appointment during the day, or have an urgent matter to deal with, I will often find myself either working late or over the weekend to catch up the time.
I have noticed how tough it can be since coming back to freelancing, as when working on the Toptal core team, there were days where I would work longer days, but there were also days where I could work shorter days without needing to make up the time - so having to work 7 hour days, every day, can be a challenge. You might be thinking, why not just work a 10 hour day, to make up for missing 3 hours the day before... I have tried this in the past, and typically with software development, concentration levels have to remain so high, that I find anything after 7 actual work hours simply becomes unproductive. On the Toptal core team, there might be a 1 hour meeting during the day, and if I wasn't directly involved, I could rest my brain and simply listen.... working longer days is easier, when the level of concentration doesn't have to remain high the entire time.
Because I have multiple clients, I tend to have multiple priorities and have multiple people to answer to. While this might seem like a downside, I actually love this aspect of freelancing. My clients know how many hours I have available for them and through effective communication, I am able to manage expectations. What this also gives me, is the flexibility to work on the projects I am motivated to do. If I am stuck on one project, I can turn my attention to another, to give myself a break from the project I am stuck on. Often coming back to a problem later will help me solve the problem a lot quicker than if I had worked on that project continuously.
Having multiple clients also gives me some protection in the event a project is put on hold, or the scope gets completed. If I was working full time on a project, I might end up going weeks without work when the project ends, but through managing multiple projects, I am able to structure my hours to ensure minimal downtime.
Where I have seen freelancers fail, is by not balancing their work load. It is so easy with freelancing to have too much or too little work, and finding that balance, is as much an art, as it is a science! This is where having access to projects at Toptal is such a critical aspect of my freelancing career, as it allows me to set my availability and be invited to work on projects on a needs basis.
This is a common question for freelancers! With my formula, it all becomes very simple. I simply work out the yearly amount I am looking to earn and divide it by the total number of billable hours!
E.g I bill 140 hours X 11 months, which is 1540 billable hours per year.
I take the amount I want to earn and divide it by 1540, to work out my hourly rate!
Freelancing allows me to be my own boss, gives me control over the clients I work with and allows me to have a stress-free work environment, where I get to do what I love - write code! While freelancing is flexible enough to allow me to plan their work schedule around my lifestyle, it also takes discipline and self motivation, to ensure that the hours actually get done! It isn't for everyone - however, if done right, it is extremely rewarding.
Did you know, I am now offering mentoring for those looking to get into freelancing?
Click here to learn more about my Mentorship Programme.