Freelancing A Perspective
The Beginning
I started freelancing in 2021 after earning my PhD in physics. My PhD involved a lot of computer vision and general software design, so I began offering computer vision and general Qt software development services. I had three motivations for starting freelancing. One was a freer lifestyle and flexibility to organize my time and work. The second was to work on various projects and switch often, after four years of focusing on the same project. One last motivation was to see and learn the administrative and financial side of running my own business.
Online, we can find various unrealistic experiences of what it is to be a freelancer or digital nomad, as it is closely related in the tech industry, where most freelancers operate remotely. My experience, which I will relate in this post, is closely tied to the job and financial markets at a given point in time, as the available jobs, the competition, and just the living costs have a significant impact on the sustainability of any lifestyle, and in particular of this unstable lifestyle.
In this post, I will present the major points of a freelancer's workload, my experience with its ups and downs, and why I chose to stop freelancing to refocus my career on a new and more meaningful path.
Perspective
Finding Clients
Finding clients can be a large (and daunting) part of freelancing. There are two main ways to find jobs: the first is through direct networking with friends and acquaintances or cold emailing prospective clients, and the second is through freelancing platforms like Upwork or Fiveer.
I have done both. One of my major projects was to conceive and implement the software used in the You&Eye shops deployed across Europe. I found this project by cold emailing prospective clients after unsuccessfully working for another art gallery (see below for the full story). Another of my main clients was the Duniter project, where I was referred by a friend I have known since university. In the meantime, I have found many small projects using Upwork, so I can give a balanced view of both.
My experience as a freelancer, mainly in computer vision, spans from 2021 to 2025. It is worth noting that in the beginning, AI coding assistants and deep learning were not what they are now, and certain types of computer vision projects available on Upwork are no longer. The same can be said for scratch projects, which are nowadays replaced by projects that mainly involve "fixing" LLM-generated code.
We also need to address the way these freelance platforms work first. Either the client or the worker posts a project or a service, then after selection, the worker performs the job, and the client and worker review each other. Scores constitute a significant service component, and a well-rated worker will land more projects. The rating system is far from perfect, as clients (and more so for small projects) often expect too much for the budget. Even if the worker performs well, they can face a single unfair review that can hurt their score, even more so as there is no weighting by the job size and value in the score.
In computer vision, many projects can be found on Upwork. Initially, I took on projects that were quick to finish and paid accordingly. However, as my rating increased, I faced a dilemma: take on a small project that would get me little money, risk a casual client who can give an odd review that would decrease my score, or wait for a large project where clients are generally more serious and invested in the project and in the rating system. The opportunities were thus decreasing, and the stress of choosing clients was increasing; selecting more strictly was mandatory to keep my score high to land more future projects.
The main reason freelance platforms shine is their escrow service. You can do business with clients worldwide and minimize the risk of not getting paid, as the platform takes the money in escrow at the start of the project and releases it upon delivery. Another advantage is reaching numerous clients from the same website without increasing marketing costs. Still, it is also a double-edged sword as the competition is very high. The client budgets or other freelancers' offers can be very competitive, making it impossible for freelancers in higher-cost regions like Europe to compete with those in lower-cost areas.
My experience with Upwork was mainly good, but I overcame several challenges, which could have caused me to quit. My first client on Upwork was an iris art gallery I won't name. Initially, the client was very friendly, and the project aimed to develop an algorithm capable of performing deformable registration on several images to combine them. The threshold of the working algorithm was an eighty percent success rate on a dataset (not accessible to me). The project was tricky as deformable registration on self-similar structures, targeting pixel accuracy to obtain super-resolution images, is difficult. In a project like that, the communication between client and freelancer is key, as there is a lot of fine-tuning to do, and only the client can judge what they want, as there are no objective metrics.
I developed the first version of the algorithm, focusing mainly on the registration part. To assess the result more easily, I applied a CLAHE contrast optimization. After sending the first images to the client, the client's response was unprofessional and borderline insulting because it found that the pictures were "altered." I explained to him that contrast optimization was only for judging the registration and not for a definitive view. After things cooled down, the project continued.
After another week of work, a first version of the algorithm was delivered, achieving about ninety percent accuracy on my available dataset. The client tested it on some images on his part, and this time, he insulted me and said it was not working. There was no helpful feedback, only insults and screenshots showing errors, and no percentage of non-working images in the full dataset. At this point, I couldn't continue the project as fine-tuning the algorithm necessitates good communication and openness with the client and its team, and insults were unacceptable. So I walked away without payment and reported the client on Upwork, losing two weeks of work (which we will see in the next section, was not lost).
These stories happen. Unprofessional clients have the power to provide bad reviews and directly impact the income of freelancers. In contrast, bad client reviews have little impact. The virtual environment on these platforms can attract bad actors and bad behaviors. As a freelancer, it is also a skill to acquire to avoid these bad actors and accept only projects from reliable individuals or enterprises. I learned the hard way how to determine if a client is trustworthy and how to communicate effectively at each stage of the process. It is also essential to set limits that clients should not overcome, and clearly set them. Hence, the relationship stays professional and respectful.
In contrast, all my other Upwork contracts were conducted successfully with very professional clients, who gave me several jobs because they were satisfied with the work done. They were mainly small computer vision and Qt desktop application works, ranging from one to five weeks, from passionate individuals, where I didn't refine much my computer vision skills but learned a lot about communicating effectively with the client to discover their needs and presenting my works to non-technical people so the amount of work done can be comprehended and not just "it work, thanks goodbye".
After disillusionment with my first Upwork client, I lost two weeks of work. Still, I was now well acquainted with iris photography, a niche I have written about in a few blog posts. I decided to cold email every iris art gallery to see if an algorithm or software would be of interest to them to speed up their processing. A new franchise that was developing based in Paris answered, and it was the beginning of a new project.
On Upwork, you don't see people, sometimes in a quick call, but the site is mostly chat-based. You don't need to think too much about estimates, invoices, or security because the site integrates them. For this project, I had an IRL meeting with the client, drafted a regular proposition and an invoice, and sometimes waited a little while to get my payment. This project was great as it provided a lot of work and was very interesting. It involved classical computer vision, deep learning, a graphical interface, and low-level optimization for rendering and editing large images. The project was stimulating, and the client provided clear feedback and directions. It was my first regular client outside a third-party mediator. I learned much about the paperwork involved in regular business transactions and the direct communication and negotiation of my service prices.
Finding jobs without a third party is great because you speak directly with the client, you get what you invoice, and there is less competition than on Upwork. On the other hand, you need to be careful because there is no safety net and no escrow for payment. You must handle all the paperwork like a regular business and be prepared to face payment delays, which regularly happen with accounting.
The last means to find jobs is by direct acquaintance, like old university friends, past colleagues, etc. I found a full-time project that occupied me for almost two years through a university friend. This project involved blockchain and the Rust programming language. It was done in an open-source environment where all my contributions were visible, perfect for freelancers to showcase their work. This project was great because the work was interesting, learning a new concept on blockchain cryptography and the Rust programming language. It involves much tinkering on the Polkadot-SDK, which was new at the time and almost undocumented. It also involved learning Rust, which I was very keen to learn as it is increasingly used and exciting in structure.
Finding these jobs via acquaintance is excellent because the trust is already there; there is no need to be as careful as with an unknown client. For some people, the stress can be more critical as the job will be evaluated by people they value. But if the work quality is great, this is a means to undercut the competition and have a steadier source of income.
To summarize, there are several ways to find freelance jobs, each with positives and negatives. However, nobody should stick to one but diversify their activity. For example, a freelancer's career based solely on Upwork can be hazardous, as an odd average rating streak can directly impact the freelancer's gains. More importantly, the Upwork fee system is constantly readjusting (we will talk more about that in the next section), and it can become tough to be competitive worldwide. Finding jobs using diverse techniques is critical to having a reliable income and not being too impacted by third parties.
Accounting
The accounting part of a freelancer is not to be neglected, as any errors can incur fines. However, it also heavily depends on the job style and the country in which the freelancer lives. In France, accounting is relatively straightforward, as each invoice should be in euros, and the income (before third-party cuts and taxes) should be declared each month. VAT is not applicable below a certain income threshold, so the net income will be computed based on the gross income and the fiscal situation.
During my freelancing career, I had two distinct periods in which accounting was very different. The first period was when I took small projects on Upwork. The accounting part of the job was more demanding as it involved currency translation (USD to EUR), many propositions, and invoices compared to the generated income. Also, fees and third-party cuts must be declared for taxation that involves extra work with Upwork automatic invoicing, which is not adapted to French regulation. Between 2021 and 2025, the state of the Upwork system has changed, but the vagueness is still there. Upwork will generate automatic invoices not legally compliant with most EU regulations, so a separate invoice should be made for each contract. This invoice should be the gross price, including Upwork fees, as it is the amount that is taxed in France. Then, Upwork also generates an invoice for its cuts that, over the years, have changed numerous times. At the end, the gross income minus the Upwork fee minus the currency conversion and bank fee should be what you have on your account. For each contract, the paperwork overhead is not negligible.
The second period was when I worked for the Duniter project. I invoiced the same amount every month; no proposal was needed. As Duniter is based in France, the invoicing and fiscal declaration were straightforward, with minimal accounting for my income level. I generated a standard French invoice in EUR each month that was integrated into my accounting and declared in my fiscal declaration.
This example illustrates that accounting is an important topic, as nobody wants to be penalized heavily for errors in income declaration. The accounting fraction of time a freelancer has to dedicate also depends on the style of the job. For multiple small contracts, this fraction will increase, and for one recurring contract, it will decrease. Another aspect is that the regulations are constantly changing, and freelancers need to be up-to-date, or have accounting software up-to-date, to stay out of trouble. For example, legal mentions on invoicing have changed three times during my freelancing career, and the same applies to taxation and the maximum revenue to be exempt from VAT. This is not insurmountable, but must be known before starting this path.
The Work
Working as a freelancer can provide many opportunities not accessible to a regular worker. First, the range of technologies, subjects, and projects is almost infinite, and one can be very pleased if one loves to challenge oneself and not work on the same thing every day. Another perspective is that freelancers undertaking end-to-end projects, from design to implementation and delivery, can take total ownership of the work, which is not accessible to all regular workers. In the meantime, freelancers must be at least versatile and adapt easily to the technologies they will use, even if it is not their core competency. On the contrary, freelancers doing a job that requires integration into an existing team and bringing or reinforcing some competencies will not get these benefits, and it will be closer to a regular developer job.
As a freelancer, I have designed complete projects from scratch or been integrated into an existing team, like with the Duniter project. Each has its advantages and disadvantages and may require different skill sets. Designing software from scratch and seeing it in production, used by many successfully, is very satisfying. Still, it restrains the project's scope to medium-sized software. On the contrary, integrating the Duniter project enables me to interact with huge projects and codebases and develop my skills in reviewing and tailoring pull requests to be reviewed.
Being a freelancer can allow an individual to test various project organizations, team structures, etc. It was a formative time for me to acquire hard skills and a wide range of soft skills necessary to navigate these environments. It also allowed me to quickly test different styles and types of organizations and management to align my preferences with my future career path..
The Mindset
Another aspect of being a freelancer is the mindset. Since there is (in general) no stable income, one must always actively look for new opportunities and develop one's network. Hence, it can be tiring compared to a regular job because disconnecting is almost impossible. Another point is that spending too much time finding contracts instead of working can become frustrating. The incertitude of the job can also be tiring, but this was less the case at the beginning of my freelancer journey, where job offers and competition were more manageable than in 2025.
On the positive side, freelancing offers great flexibility in lifestyle. For freelancers undertaking end-to-end projects with no team integration, they can easily choose their schedule, workplace, etc. However, this flexibility can be diminished for freelancers who are integrated closely into teams or have strict deadlines.
During my freelancing career, I mainly worked solo, having only to respect deadlines fixed by me in advance or working in a fully remote environment with synchronous meetings and a work organization based on pull requests on GitLab. This allowed me to fix my schedule as I wanted, mainly in the afternoon, since I was focused on training in the morning. Regarding planning, I worked six or seven days a week as I could work less during the day and smooth the workload more easily than with a fixed time-defined workday.
The End
My journey as a freelancer started in 2021, when the job and technological landscape were not the same as in 2025. Along this journey, I learned a lot about hard and soft skills, as well as about my ambitions and goals, and what I really wanted to achieve in the next step of my career. Several factors impacted my decision to stop freelancing, one of the most important being that I was not competitive internationally anymore. Between 2021 and 2025, the French income tax increased by six percent, and the cost of living increased by fourteen percent, making it difficult to compete in the global market.
In addition, the tech job market crisis that started in 2024 also means fewer freelance jobs. The extensive layoff campaign in the tech industry means more developers are seeking jobs or are open to freelance contracts with companies that have fewer contracts to offer. Many companies have restructured their workforce with less space for integrating freelance contracts, and the low demand means that companies can leverage price reductions more easily with unrealistic expectations. For example, I was contacted for a Rust developer contract. The company (a large French energy provider) expected me to be proficient in Rust and the complete front-end web app stack and qualified on an obscure microprocessor for an embedded system, spanning a range of skills from low-level developer to UI interface designer in a single contract. These unrealistic offers are now legion and cannot be undertaken by a rigorous professional who knows their skillset and competencies.
This is combined with the rise of large language models. Before, when individuals needed small programs, they asked freelancers for them; these streams of small projects were exciting and provided work when searching for more substantial contracts. Nowadays, people are using LLM to create these small projects, sometimes successfully, in large part unsuccessfully, and a large part of these projects are now replaced by debugging the first version generated from an LLM, which is not very interesting for a real developer and pays substantially less.
Another critical point is that I missed meaningful, science-related projects. Computer vision projects were fine, but with the rise of deep learning, classical computer vision and algorithms needing really scientific-like thinking and development were rare, replaced by gross deep-learning labelling and training. The blockchain and cryptography space was also quite stimulating, with much development to make. But, in reality, many job offers are not interesting and are closer to regular software engineer competency.
I chose to refocus my career on a more permanent position with a steady income stream. Still, I'm targeting positions on meaningful projects that necessitate scientific-like thinking and a large part of autonomy, where I can make project decisions. These years of freelancing were very formative to me for several reasons I exposed in the post, from hard to soft skills, projects, and client-connection management. I learned a lot and made some errors, but it was also the perfect work experience to move forward in the right direction.