From freelancing to permanent employment - key takeaways for software developers

First of all, full disclosure - this blog post is written based on my experiences as a JavaScript developer, and the thoughts and opinions formed after them. I fully expect different developers to have divergent experiences to mine, so I encourage you to keep an open mind and share your thoughts after reading. If you have different opinions or insights, find me on LinkedIn and let’s chat!

A few words about me

I went into software development a while ago having a non-developer background. Having worked for over 4 years in marketing, public relations and account management, I started off programming with a strong understanding of how business goals translate into technical requirements. Today, I specialize in JavaScript projects, currently being focused on Test-Driven Development with React JS.

Having been a freelancer first and now being employed under a full-time contract, I’ve come to notice several differences in my individual and professional life. Some of these discoveries counter the existing Internet wisdom you would find upon googling the “advantages of becoming a freelancer”. That’s why I decided to share my thoughts in this article.

Freelancing and long-term employment - key takeaways for developers

Freelancing vs. permanent employment

So, what’s the deal with freelancing? Is it all they claim it to be? Feel free to check out how I see freelancer jobs as opposed to permanent employment.

The money

Being a freelancer gives you the freedom to decide on the type of projects you prefer. This means that you can nitpick the projects that suit your technical skills and availability, are of challenging nature, and in an industry that fits your ethics. But most importantly, you can decide which projects bring you the most income. In theory, it sounds great. 

But what you have to remember is that freelance software development is now akin to a commodity market with many freelancers from around the world bidding for the same project. You, therefore, have the rather onerous task of convincing the client as to why you are the best person for the job, even though your bid for the project might be a few times higher than another freelancer’s. Remember that the price you quote will need to also cover the website’s commission and the income tax in your region. 

Due to the above reasons, you sometimes find yourself earning great money in some months and then having to work on razor-thin profit margins which, to be honest, is not so encouraging. Holidays are also days on which you do not make an income. This constant shift from “feast” to a “famine” mode takes a toll on you in the long run, and can cause a certain degree of anxiety.

A permanent employment contract provides a degree of stability when it comes to income. Sure, it might not be as great as the money earned during the “feast” period, but it's a buffer against the so-called “famine” periods. I must also mention that the salaries offered in permanent employment contracts are not as bad as one would expect. Software developers hired regionally are remunerated competitively and receive paid time off. If you have been employed under a permanent contract for some time, it's also easier to convince banks of your financial stability when you are looking to take a loan. The same scenario might become a little tougher if you are employed as a B2B contractor, as the banks will need to consider your financial solvency more carefully.

Another plus - if you are looking to shift countries and get exposed to a new culture, a permanent contract is what most immigration departments look for before granting a visa.

Unpaid Jack of some trades

Being a freelancer means that you have to be actively searching for opportunities, gathering leads and qualifying them even before you enter and make a bid. Once the bidding is made, you have to scope requirements, negotiate pricing and work with other stakeholders before even writing a single line of code. Once the project is done, you have to chase payments, deal with paying taxes and then start the process all over again. 

All the above work consumes a sizable chunk of time and is not billable. It does not bring any income whatsoever and is not even pleasurable, as the task you do enjoy as a software developer is, well, developing

Working as a non-freelancing developer, on the other hand, nullifies a lot of the issues outlined above. A dedicated sales team sources the client and scopes requirements while you can dive deeper into the technical requirements and focus on delivering the product.

The loneliness

One of the biggest issues I had when being a freelancer was loneliness. I am more extroverted in general and missed the general camaraderie I had with my colleagues when I was working in marketing. I realize that not all developers seek this out and those who do can compensate for it by meeting in co-working spaces, meetups, etc., but it's just not the same as having a chat with the team you work with. You are also in a bit of a pickle, if there is a complex feature or a bug you cannot resolve on your own, as there is no support system. 

Loneliness isn't as big of an issue when you’re working on a permanent employment basis as when you are placed in a team, with a team leader. They are available for consultation, should a feature or a bug prove challenging. This team also creates a sense of belonging as you meet up often in the office or at parties hosted by the company. 

 

 

 

 

View this post on Instagram

 

 

 

 

 

 

 

 

 

 

 

A post shared by Merixstudio (@merixstudio)

I would even go as far as saying that there is no space for “lone cowboy” type of developers if you work for one employer, as a lot of the work you do there is only possible because of good communication. It forms the bedrock of team success, underlies good relationships with the clients and has a strong bearing on the overall project outcomes

Diversity of projects 

One of the key advantages of freelance projects for me was the frequent diversity of projects. The projects I took on were from different industries which made me learn more about these fields. In one month I'd be working on creating a podcast website for a client, while in the next one, I would be creating an e-commerce website for a retailer that specializes in ethically manufactured clothing. 

One could argue that the same project diversity exists when working under a permanent employment contract, but you also have to remember that these projects tend to be longer. So, the frequency of diversity can take a hit, unlike when you’re freelancing where the projects are much smaller. 

Skill growth 

The trouble with freelancing in a highly competitive market is that the focus tends to be on shipping the product as soon as possible to stay within the client budget. While it’s understandable in terms of project flow from the client’s perspective, it may be more challenging for a freelancing developer. In my case, for example, it usually meant that I opted for projects that were not as complex. The reason for that was I am more confident in my time estimates when working with familiar technologies and the clients were more partial towards picking my bid due to my previous experience. 

This approach did help me land projects and keep my head above the proverbial “famine” I was talking about, but my skills didn’t grow as much as I’d like them to. Sometimes I felt as if my skill sets were actually degenerating, as the features I was working on were starting to look familiar from one project to the next

Freelancing vs. long-term employment

The other factor you have to consider is that any self-development you want to do has to be done on your own time and money. The positive side here, however, is that you can invest this time and money in any area you see fit. 

This issue does not exist when working under a permanent employment contract, as you have effectively exited the commodity market and it is the sales team that brings you projects. Projects are from diverse industries and bring with them a range of associated challenges that you have to face but they also help with self-development. Since the projects are also more long-term, you obtain a deeper knowledge of the technologies you work with. You also conduct code reviews with the developers you work with, thereby learning more. You can also share your knowledge with others which also strengthens your skills. This heightened focus on the quality of the written code means there is no space for hacky code or an “I’ll fix it later” mentality.

Almost all forward-looking companies today also offer growth budgets which you can invest in your self-development. The downside, however, is that these skill growth budgets might only be released for self-development that is related to your field of expertise or an area in which the company wants you to develop. 

Work-life balance 

A curious personality trait I noticed when freelancing was my inability to turn off thinking about code or the next feature I had to develop or the next client I was pitching to. This was further exacerbated by the fact that freelancing meant that I had full control over the hours that I worked, causing a huge overlap between my professional and personal life. This also made me loathe taking holidays.

For some time, I enjoyed this, as I attributed it to the hustling culture that is needed to stay ahead of other freelancers out there. But there came a point at which I could feel myself fast approaching burnout, which is when I started to take stock of how I was feeling and took steps to pace myself.

Working as a permanent employment contract employee doesn't mean you stop working or growing. What it does mean, however, is that there is a set time in which you clock out mentally. Sure, there might be days in which you work overtime, but these hours are compensated for and can be planned well in advance with the rest of the team. You also have access to paid holidays which works wonders for your mental health. 

Freelancing vs. permanent employment for software developers

How do I see it now? Final thoughts

The above are my experiences and thoughts at this moment in time and are most likely going to change in the coming years. What I do need to stress is that the experience you have with either freelancing or working in a long-term capacity depends on a multitude of factors such as your personality, the geographical region, financial stability, propensity for risk, the number of years spent working as a developer, network of clients, and many other aspects. 

At this moment in my professional life, I am gravitating toward long-term employment as it's what’s good for me. I personally do not identify with the disdain and negative connotations that revolve around holding a fixed-term job. Stable employment presented me with perks that surpass the feeling of hustle and attempts at being my own boss necessitated by the nature of freelancing. A number of the software developers I admire have fixed-term jobs and they are doing amazing work. These developers work well with teams, learn from others, work on many interesting projects and move up the career ladder whilst holding onto what I consider to be a good work-life balance.


 

I am also able to work remotely at a time of my choosing, provided I attend important meetings, so freelancing really holds no gloss for me. 

If I do, however, for some reason decide to take the plunge back into freelancing again, I’d get more experience, invest time in maintaining an active blog, contribute to open source and be engaged with the community to build a personal brand. Such a brand I feel would help me set myself apart from the rest and help pitch towards larger and longer projects so that I would not be looking for clients regularly. I’d also build a healthy financial cushion to be able to focus on the projects that develop my skills in the best way. 

The future holds so much promise and I, for one, am excited for it!

📚 Additional reading:

If you’d also like to try permanent employment, hop on board and work with us!

Navigate the changing IT landscape

Some highlighted content that we want to draw attention to to link to our other resources. It usually contains a link .