The Challenges of Freelance and Contract Work

After the mass layoffs occurring worldwide in the tech sector and my disatisfaction with previous employers and the power dynamics within companies, I found myself disillusioned with the idea of working as an employee within the typical large corporation.

Most of my discontent came from being reduced to a ticket processing machine in a Jira board and not having any creative say in the direction of the projects nor the technologies I was involved with.

This sent me into a spiritual quest of trying out different possibilities in order to make money through software development as a freelancer or contractor as an intermediary step in building my own operation while I wait to begin a masters degree to pivot into cybersecurity.

This article is what I learned, my experiences and the evolution of this experiment until this moment.

The transition

Most developers seem to have a discontent or arrogance of money people, comparing the product of their work akin to that of artists building a transcental piece of human ingenuity that should go beyond the daily matters of life.

The brutal refutal to this idea is that software is just a means to an end, never the end itself as in the case of artistic pursuits.

No one uses YouTube due to its video compression algorithm, which is a technical piece of art, but to solve their own human needs, such as entertainment or access to knowledge.

The satisfaction of these needs are the basis of the economy and the systematization of a solution that solves a human need is called a company.

In addition to that, most developers are not aware how hopelessly trapped and entrenched they really are.

In the corporate world there is a really strong incentive to avoid any single employee from knowing about how the business really operates after 200 years of figthing against unions and dealing with misalignment of interest between the workers and the capitalist overlords.

As a recovering corporate drone, you are most likely a helpless idiot, a fallen cog from a much larger machine, that either knows how to build the product or service but not how to sell it or the other way around.

In the worst case scenario your only skill is how to bullshit your way through meetings in order not to get fired.

This is why it is usually recommended to start up a company with a partner that complements your skills and experience.

The mental limitations of a corporate developer can go even deeper, as a tech worker you are trapped in the technological mindset of a large corporation that only knows how to solve problems using large systems involving dozens of teams using technologies such as Kubernetes and frameworks such as microservices using overpriced clouds such as Amazon Web Services or Google Cloud.

There is also an obsession with complexity and multilayered development in those corporate environments that will slow you down or make your system lack the simplicity it should have.

This way of working will also make you an absolute coward, trapping you behind the promised land of perfectionism that best practices or clean code promotes or the emotionally charged comments of your teammates during code reviews.

This is particularly common in C++ and Java communities, which also constitute the main languages being used in the corporate world.

The transition to a startup or being self-employed requires leaving behind most of your indoctrination as an engineer and embracing simple technologies and ways of work that you can handle as an individual or within a very efficient and small team.

This might involve leaving behind complex JavaScript frameworks and learning JQuery or picking up PHP and begin designing software in terms of customization of existing open source systems such as WordPress in order to iterate as fast as possible in order to serve the needs of your users.

If you work outside a company as an independent software developer, you will need to also leverage the work of others as much as possible, this is why open source is not simply free as in beer but free as in freedom, because it becomes a path to independence from the system of privative software.

As part of the transition, you will find bugs and think of improvements in open source software, so you will need to become used to participate in these projects as a contributor.

If you are not willing or able to leave behind your old ways, then you will need to find enough capital to replicate the corporate structure you need to operate through VC funding and incubation programs.

Learning the language of business

My first goal on my transition from employee to business owner was beginning to understand how a business works and operates.

The main insight you need to have is that a business is basically an operating system with flows, tasks, events and activities linked to an accounting system that uses money as the measuring unit.

I got this insight after going through the basics of accounting and how to do double entry bookkeeping.

As a geek and a software engineer you will surely waste a lot of time looking for the right system to keep track of everything or building complex solutions to solved problems.

While I think that keeping yourself organized has a lot of value, keep in mind that you are not an accountant nor an expert in fiscal policy and that no matter how hard you try, you will make mistakes, some of which may be terribly expensive.

My recomendation is to delegate all accounting and fiscal tasks to paid experts while keeping a functional knowledge about what those tasks imply and how they are done.

Focus on the basics of how money will flow into your company and what processes and activities you will need to execute to successfully get clients, make them happy and get paid.

These are just the basics, but working only by yourself means that you are limited in the volume of work and focus you can push out each day.

Working alone as a solopreneur will make you only as efficient as a perfect employee can be and maybe less because of all the overhead and distractions of the business.

What you need next is leverage, most solopreneurs use platforms such as YouTube, Ebay or Amazon to handle the distribution and monetization of their work.

As a software engineer, your main form of leverage is code and being able to efficiently work with information systems.

Traditionally, you are something akin to an independent professional, a laywer or a doctor of kinds.

In order to build a business that can scale, you need to think beyond yourself and build a team.

The next level is how to organize several people, each with their skills, strenghts and weaknesses to build a reliable money making machine, this is what entrepreneurship is about.

By learning the language of how busineses are built, I came to value managers that get to skillfully know and assemble their teams to build up these systems, which felt much like building software.

Building a good team and the skills to have a successful business takes time, effort and personal credit, I am still in that process myself.

Dealing with the state

Regarding fiscal optimization, I found out that there is a lot of content online advertising how to basically evade taxes.

Do not listen to this advice, you will achieve your next level as a business owner after you accept that the problem are not taxes but how to make so much money that they become irrelevant, at least until you become an oligarch that can pay his way above international law.

Until then, fully accept that the state is your business partner whether you like it or not, focus on the business while being aware as much as possible of the fiscal traps that your country has set up to benefit from your work.

The challenges of freelance work

One of the challenges you will find with freelance work is the cadence of opportunities available for your set of skills.

This will strongly depend on the economy you are located in and the kind of services you provide.

It is really a marketing problem, which you as a software engineer will probably have no idea about because you spent the last 10 years fapping, playing videogames and learning how to work with computer systems instead of focusing on what it takes to make the kill in a sale.

If you live in an industralized country with a strong knowledge and information economy where software is involved everywhere, then you will have plenty of opportunities through local meetups and your personal network that will ask for your services.

Otherwise, you will be forced to access those opportunities online through platforms such as upwork, freelancer and others.

When dealing with these platforms, you need to first understand the target client and the interests of the platform.

The platform is there to make as much money as possible as an intermediary between the payments of the client and the freelancer, hopefully by providing a set of valueable services such as cheap credit lines, arbitrage, and problem resolution and at worst by taking as much in fees as both the freelancer and the client will be willing to pay.

The clients come into one of these platforms looking either for labor that is either cheap or enabled with rare and specific skills.

If you go by cheap, you will need to compete against the rest of the world for each opportunity in a race to the bottom in terms of price per hour.

This is basically a numbers game, and if you are based in a country such as India or Africa, then you are at an advantage here.

The other way is to be the laborer with the right skills for a specific kind of opportunity, an expert.

This requires the freelancer to work on its personal brand in order to present itself as the right candidate for the opportunity.

I did not have much luck in these platforms, both Upwork and Freelancer seemed to be a pay to win scheme in order to access clients, which is kind of messed up because you need to pay in order to look for work and have a somewhat bad treatment for freelancers and suboptimal technical service.

Another issue with platforms is that they are effectively implementations of technofeudalistic structures that are attempting to capture a fraction of the money that moves through markets.

It is what it is, and I think that both clients and freelancers can get value from these platforms, but if you get kicked out of one of them such as what happened to me with Upwork because of my VPN usage or connecting from a country with sanctions, then you are effectively kicked out of the international economy and have lost your only source of leads for your business.

So be mindful regarding the platforms you build your business on, make sure you are well diversified and keep a good relationship with them.

Another challenge I found is that of skill to market matching, by which I mean marketing.

There reason I think why most software development in freelance is frontend or mobile development is that this is an easily outsourceable task for organizations.

As previously stated, a lot of my skills are heavy on the backend engineering occurring on large corporations, while most of the freelance work comes from small companies that need specific services that leverage technologies such as Python, PHP and others.

This is why I say that an aspiring freelancer with a corporate background must realize a technical transition in order to do this work effectively.

My strategy was to focus precisely on getting backend skills using Python and Django, which is a language I am effective at and enjoy to work with, then getting skilled with React to achieve those frontend skills.

Regarding the clients I found locally, they usually fall into two classes:

  • Those that come in with unrealistic expectations of what can be done with software by a team of one person because usually they do not know how to work with software themselves.

  • Those that actually know how to code, but have found a very entrenched task that needs strong domain knowledge of some business area or have skill issues in a particular technology.

A lot of the time the client is invested in an approach that is simply not feasible or cost-effective for the size of his own operation, researching other paths that will benefit them best for their price point for me was paramount.

For me, the hardest part has been the negotiation process in which clients will try to underpay you, so you need to fight against the downward pressure of the negotiation and keep your leverage until the payment is made.

You should always ask for money in advance before to do any kind of work, specially with new clients, and be able to cultivate trust with those clients because as with any relationship, once trust is broken, everything falls appart.

Within a corporate structure you are only expected to talk about money before getting hired, during yearly reviews and after a layoff, so you do not get many opportunities to practice that.

As a freelancer, each new assignment will have a price negotiation involved, so it is a required skill.

There is an excellent book called ’thick face, black heart’ that I recommend for anyone struggling in this area.

If you can overcome these challenges, then you will have a good change of being successful at freelancing.

Contract Work

The earth is filled by the ruins of fallen empires that have lost the faith of their followers and relied on the riches of previous conquests to hire mercenaries to protect their decadent domains, such as with the late Roman Empire.

If you fail to make the transition from employee to business owner, you will be forced to become a contractor or some kind of externalized muscle, a mercenary of sorts, a ronin or samurai without lord.

Being a contractor is pretty much the same thing as being an employee, but without the mental trip that organizations usually expose to their workers in order to brainwash them into being loyal or following a specific corporate culture.

This is a recurrent business model here in Spain and most of the developed world where directly employing anyone is a fiscal nightmare and a serious liability for the business.

The practice the private sector has developed to circumvent these challenges is to work with agencies or consultancies that handle the paperwork and the liabilities involved, which then inject these external workers into the teams of the corporation.

These workers go by the name of consultants or external experts but in practice they execute the same kind of work as the actual employees in the business while being easily disposable when their services are no longer required.

We call these agencies “carnicas” in the local spanish tech scene, because they make money of moving meat around instead of providing any real value appart of handling the paperwork.

Being a contractor, as with any role, involves a set of cons and pros.

You can either be employed by the agency or be a subcontractor of the agency, which gives rise to two kinds of situations.

If you are employed, your working conditions will strictly depend on the labor agreement you sign with the agency, which you should ask during the phone interview.

You are an employee and directly benefit from legislation that protects workers.

This gives you some peace of mind that will allow you to do your work, go home when you make your hours, disconnecting, have well established vacation time and receive a sweet compensation when you get fired.

If you are a subcontractor, you are not an employee neither of the client company or the agency, you might find yourself as an employee doing work for a single client without the benefits of being an employee as previously stated.

You will also need to send out invoices to the agency according to a previously agreed hourly fee, handle your own taxes and obtain your own work equipment.

This might be a benefiting situation if you are able to negotiate a higher price for your services, such as when working with international companies.

Another advantage is that a contractor might be able to directly negotiate more freedom such as remote work in addition to being able to bind their resposabilities to a well-defined set of specialized tasks or services or using their own equipment.

I for instance prefer working with Linux based systems instead of having forced onto me a Windows system.

This has its own set of challenges for the client organization, such as a more hetereogeneus workforce and security risks.

In the same way as prostitution, it is also a more honest arrangement, as a contractor you come in knowing that this project will have a start, a period of execution and a final date in which your services are no longer required.

This makes it a good option for projects with clear boundaries that are expected to be completed in less than a year.

However, the client company that employs contractors needs to be structured in a way that makes their work effective.

A common antipattern is to discriminate between the employee class and the contractor class within the company, which leads to very ugly dynamics regarding different levels of privilege, even if both employees and contractors are located within the same teams.

There are also some shitty management practices and mind games, such as promising employment into the client company if the contractor proves its worth by working long hours at some undetermined time in the future.

Another pain point that contractors may have if the organization is very chaotic is that they might have a very hard time getting access to the right information in order to be able to do their work.

This is the case when working in a system deeply entrenched within the company, such as in the backend or in the database.

That is why in my opinion contractors work best as independent teams in systems with well-defined interfaces that connect them to the client organization, being able to do their work effectively with all the information they need and minimizing the risk of information leaks from the insides of the client organization such as database dumps.

Otherwise, the contractor will need to deal with several middlemen within the company, requiring patience and peopleware skills that go beyond the purely technical challenges.

Solving or avoiding these challenges will be a fundamental in your journey to being a successful contractor.

Regarding normal employment

If you choose to do independent work as a freelancer or as a contractor, you need to get used to have a high level of responsability for the quality of your work, usually the opportunities come from businesses in a chaotic environment or which have great challenges ahead of them with all the headaches that they involve.

If you hate your job, do not leave it for a freelance gig unless you are able to offer a specialized service at scale or are ready to do eventual part-time work while keeping your costs of life as low as possible.

You will probably find a better outcome upskilling and changing jobs instead if your concerns are related to money, work/life balance or a discontent about the present perspective of your carreer.

Contract work might be ok if it provides higher income than a job, additional freedom or more interesting opportunities than those in your area.

However, being an employee in a country with good labor laws is kind of cool in relation to these options regarding both money and convenience for employees.

There is a big promotion of being self-employed on the Internet and a lot of shamming about being an employee with a 9 to 5.

I feel there is a kind of gold rush which involves becoming a freelancer or building a content-driven business, while actually this self-employment might leave individuals without leverage against tech platforms.

Personally, I think this comes from a crisis of values in the west, where indiscriminate liberalism has led us to the point in history you need to be worth 100 million dollars and have a six-pack in order to be able to afford a house, have a family and provide them with a decent level of life.

Never be ashamed of having to work for someone because it is simply your most convenient option.

There is much more to personal power and freedom appart from the dichotomy of being an employee, a freelancer or a business owner, the key here is what kind of leverage do you have to create your desired daily reality and what kind of economic relationships do you need to achieve it.

Having an ok paying job that respects your time, for which you can check in and check out, while maintaining your health and your relationships might be the real sustainable goal for most of us.

If you want something else than that, then you must have a clear reason in your mind why and what do you want to achieve instead of staying at the middle ground of freelancing or contract work and calling yourself a business owner.

Conclusion

There are many reasons why you might be interested in pursuying freelancing or becoming a contractor.

Maybe that is the freedom, the additional income, the fact that you want to work in projects that last less than 6 months to expose yourself to a lot of experience and try many things.

Just keep in mind that you as an employee can have as much or more leverage than a contractor or freelancer if you live your life according to the right set of values, which we might discuss in future articles.

whoami

Jaime Romero is a software developer and cybersecurity expert operating in Western Europe.