A few days ago, I quit my first full-time job after 4 years. How and why I got to that decision is another story, but as a former freelancer, the thought of becoming my own boss again had always been in my head. In this article, I'd like to discuss some of the pros and cons of both being a freelancer and having a full-time job.
I'd also like to bring out that these are based on my experiences and the content is highly dependent on the context. Not all clients are the same, nor are all the companies.
One of my finest memories about freelancing comes from 2015. I was in Dénia(a city in Spain), having a breakfast at a local beach bar. The sun was shining, Spanish songs playing in the background and there I was - working on a small website for a client. Sounds like perfection, right? And it was a perfection, mostly. But there were also times I wished to just have a normal job. That's why I'm going to list some of the points one should acknowledge about freelancing that will give you a better understanding of what its like.
As a freelancer, you are the boss. You get to decide which projects to work on, the working hours, vacations, location, etc. It's one of those things that makes freelancing great - a complete freedom. One day you could decide to travel to the other side of the world, on another day just take a day off. It's all up to you as you're the boss.
Based on my experience, freelancing requires tons of self-discipline. It's nice to imagine a life where you wake up and work whenever you want, but in reality, your clients depend on you. They need you to give specific deadlines, be available to deal with problems(and there will be problems, trust me) etc.
As you're mostly going to be working alone, it's necessary to have routines and self-management systems in place that will help you to get the work done. Eg in my case, I still had specific hours when I did coding and when I had meetings. That way, my client's knew when I was available for them.
Now this one is arguable because it really depends on the context. That said, there is not limit to how much you can earn as a freelancer. In my case, the more projects I had done, the more I could reuse the design ideas and coding boilerplates, thus my efficiency increased. Increased efficiency means more clients, meaning more money. That's when you for work either fixed or hourly salary.
There is not limit to how much you can earn as a freelancer
If I were to start freelancing again, I'd also try a different approach - taking some commission fees for each lead generated through the website or product sold on the e-commerce. That way, I could grow with my client and we would both be interested in the well-being of the product developed.
As a freelancer, it's you who has to find the projects, talk to the clients and get the best deal possible. That's one of the things I love about freelancing - I got to meet so many new people, learn about their businesses, offer my solutions and in the end...start negotiating the deal. It gave me an opportunity to improve my communication and sales skills.
By freelancing, you must also take care of the project management side of things. That's what at times made freelancing hard- by having multiple projects in different stages, jumping around between them took tons of mental effort.
Freelancing means you can choose your projects. One may decide to choose a single, on-going project, but most of the people go with smaller projects. It means smaller risk(if one client drops, you don't lose all your income), potentially more money and an opportunity to try out new things.
Many freelancers sell their services for a fixed fee per project or hourly salary. What happened in my case is that I was always trying to do things faster and faster, because time equals money. Additionally, as most of my clients were small- or mid-sized companies, the problems I solved were also of the same size. That's why my coding skills were never truly challenged.
During my period of freelancing, I felt that such form of working was great for playing around with new technologies, but I never got to go deep with them. In the end, it was also one of the reason why I was graving for a full-time job - to work on deep, complex problems that would challenge me.
The reason I switched from freelancing to full-time job 4 years ago was because I wanted to grow as a developer. Thinking back, it was the right thing to do - I got to fail, succeed and test my skills. All while having fun.
The points below are based on my experience of working in a startup that had 200 people when I joined.
When thinking about working full-time, stability is the first thing that comes to my mind. By having specific working hours, location, salary, etc, one can establish a routine that helps to build a great work-life balance and leave room for other areas of life. But it also means you must play according to the rules the company has set.
Joining a company as a developer means you must adapt to new technologies, processes and well...people. In my case, I learned more during my first 6 months at my full time job than I did during years of freelancing. It wasn't just about technological skills, but also about project management, testing, team leading, collaboration, owning mistakes etc.
I also had regular 1:1s where my manager made sure I'm taking care of my growth.
The reason for such a fast growth is that you're in an unknown environment that you must adapt to. Compared to freelancing, the projects one gets to work on are more complex and involves many people. In my case, I also got to develop proper coding standards as everything we deployed had to be reviewed first, meaning no hacky solutions and "I'll fix it later" mentality. I also had regular 1:1s where my manager made sure I'm taking care of my growth.
As mentioned above - by becoming a full-time developer, you most probably get to work on bigger projects that involve more people. Bigger projects also mean that the problem to be solved is more complex. Instead of just coding, one must properly plan the architecture by thinking about the suitable technologies, structure, scalability, compatibility with other services and product etc.
Regarding going deep with problems - if you're working on a product, quality matters. That means one gets to spend time on researching and coming up with better solutions. And during refactoring, old systems can be improved.
Working full-time as a developer means having a fixed salary. In most cases, the only way to earn more is by getting bonuses or by being promoted. Many companies also provides stock options, which can become a source of great wealth.
Compared to freelancing, it's a more stable way of making money. But it also has its limits.
One of the best things about working full-time is that your company(hopefully) takes care of you by paying for the health insurance, sports activities etc. By organizing various team and company events, your employer can build the trust that's needed for effective collaboration but also making life fun.
In many places, the company also pays for online courses, certificates and conferences so people could develop themselves further. In the end, an educated and knowledgeable employee generates more value.
If you're a freelancer, you usually pay for the failures. Either with your time or money.
That's not the case if you're working in a company that's encourages creativity and risk taking. At least in my company, failures were expected because we were tackling the unknown. It's just important that one learns and owns the mistake by taking initiatives to fix it and teach others. That way, the same mistake wouldn't happen twice.
As Robert Iger has said in his book "The Ride of a Lifetime": "Fear of failure destroys creativity".
It really depends on your environment, but I personally found many new friends in my first company. And that's something I came to value about having a full-time job - being surrounded by people I admire and want to spend time with.
I hope these points help you figure out which journeys to pick next. In my case, I joined another, much smaller startup. If you're wondering why I left my first company in the first place, there's also an article for that.
Oh and...! If you are interested in coding, growth mindset and are willing to share your experiences, ideas, then please do PM me on Twitter :)!