It’s now eight years that I’m working as a freelancer. I started at 18 while studying at the university and for the last two years I’m completely focusing my effort on this career. In the meantime many things have changed, I started thinking again about this profession, from scratch, evaluating the pro and cons with more perception of what that means, essentially because I need to clarify if this is still the best path for my career. That’s why I would like to share this post, for the ones that are following the dream of becoming managers of theirself in the computer software industry and for those that didn’t get the chance or enough willpower to follow this path.
I always though that freelancing was the job I wanted for the entire life. I had a few experiences into small web agencies but after some months everything started becoming boring, repetitive and the feeling of being sit on the same chair for most part of the day, every day of the year, always had a constraining feeling. I dreamed about freedom, even if that meant working more time per week or deal with the absurd bureaucracy we have in Italy.
After all this years I am now able to make a few assumptions that I was not able to do when I was younger. So let’s start with the bad parts of freelancing.
The bad parts
First of all, if you are a freelancer and you wanna survive sometimes you need to “work for the money”. With this statement I mean that you need to accept work that is not directly connected with the technology you wanna use, or the passion that you have, because you need money, you can’t stay idle for weeks just because you don’t like it. I am not saying that this is a valid assumption for all of the freelancer in this world, you could have been good (or maybe lucky enough) to work exactly on things that are coherent with your passions in every project you accept, but speaking about this with other freelancers it seems quite a common event. When you “work for money” you lose all the fun, everything becomes forcing and you need a mix of self-control, ability, sense of duty to keep the same quality in your code. Shipping shitty code is easier in that situations, and professionally leads to the biggest mistake you can do.
Another thing I learned during this years is “tools switching”. You write code in a world where most customers simply don’t care about which technology you usually prefer. You need to do the job and you should be able to adapt your skills on the language/framework they need. Switching the tools you use is part of the fun because it brings different challenges but it also means that you have not enough time on the same technology to sharpen your skills. And this may be bad. When I hear about job proposal from recruiters they usually search for a figure that has years of experience on the same technology, which is really difficult for a freelancer. I am probably not able to compete with people coming from other permanent positions that works continuously without customer management, bureaucracy issues and so on, although I have experienced many programming languages and different contexts.
This is a controversial point, because the less correlated you are to a language/framework and the more you’re able to survive in different situations. In an ideal world companies should search for better developers, not for language only specific coders. When they do, if you worked as a freelancer you should compete into the market and even get extra credits for the other stuff you’ve done, when they just search for years on a tool, you simply cannot compete.
When you speak about bad parts of freelancing you cannot forget about managing invoices, accounting, and all bureaucratic stuff to keep your activity alive. This may be easy if you live on some countries, or difficult if you live in others like Italy. If you’re not lucky to live in an “easy” country, you need to pay someone to help you with bureaucracy, and you also need to waste days of work to keep everything organized and deal with deadlines. You need to know that the less time you spend on this, the more you can work. I personally have wasted a huge number of days for bureaucratic issues, and I also have to pay an accountant to deal with Italian bureaucracy.
Freelancing also means that you have no long-time assurance. There’s nothing permanent, you change from customer to customer with no guarantee that they will come back later, or that you will be able to get new of them according to your work availability. This is risky, especially during the bootstrap phase when you’re still trying to create your customers wallet. And also, when you go on holiday or you get sick, nobody will pay you. Everything just depends on you and your productivity.
Yes there’re a lot of bad parts doing freelancing.
The good parts
But there also some very good parts, that you won’t have in other permanent jobs:
- Freedom: No work time obligation, no constraint about the workplace. You just have to ship according to the timeline you prepared before.
- Fun: Change technology is fun and engaging. It’s probably one of the best part of the job and I started appreciating that a little later than I should.
- Skills: Freelancing challenges you to learn and improve, it grows your skills in a different way than the permanent position. You’ll become a generalist, able to understand at an higher level what you do. You’ll not be constrained to a language or an implementation.
- Collaboration: You’ll be able to collaborate with other brilliant freelancers based on your choices.
I can really say that freelancing is not just about the code you write or the design you make. It is about a way of work, with onerous and satisfying things mixed together in something exciting than what I think is a permanent position. But you should feel that, it’s not for everybody, you don’t have backups and it all depends on you. Handle with care.
Image Curtesy of Hackub.co