Should I Become a Freelance Developer?

Being a freelance developer is a new way of living in the 21st century: It’s a path of personal growth, learning new skills, and earning money in the process. But in today’s digital economy, becoming a freelance developer is – above everything else – a lifestyle choice. It can give you fulfillment, flexibility, and constant growth opportunities. It can offer you a unique way of connecting with other people, learning about their exciting projects, and finding friends and acquaintances on the way.

While this sounds nice – becoming a freelance developer can also be a constant struggle which has the potential to make your life miserable and stressful. Is being a freelance developer in the Python space for you? This article discusses the pros and cons of becoming a Python freelancer. The list is based not only on my personal experience as a Python freelancer — working for diverse projects in science, data analytics, and even law enforcement — but I have also assembled the experiences of some of the top experts in the field.

Our Data: Freelance Developer vs Employed Developer

When asking my community of Python programmers to vote on whether they’d prefer to work as a freelance developer versus an employed developer, 80% of the votes were preferring the freelance route:

Freelance developer vs Employed developer (votes)

There were 64 votes from thousands of people who have seen this post over a period of two weeks. So, there seems to be interest in freelance developing. Let’s start with the good things in freelancing:

The Good Things

So what are the advantages of being a freelance coder? Let’s dive right into them.

Flexibility: One big advantage of being a Python freelancer is that you are flexible in time and space. I am living in a large German city (Stuttgart) where rent prices are growing rapidly, year after year. However, since I am working full-time in the Python industry, being self-employed and 100% digital, I have the freedom to move to the countryside. Outside large cities, housing is extremely cheap and living expenses are truly affordable. I am earning good money matched only by a few employees in my home town — while I am not forced to compete for housing to live close to my employers. That’s a huge advantage which can make your life wonderfully peaceful and efficient. Taken to an extreme, it is even possible to move to countries with minimal living expenses: earn Dollars and pay Rupees. As a freelance developer, you are 100% flexible and this flexibility can open up new possibilities for your life and work.

Independence: Do you hate working for your boss? Being a freelancer injects a dose of true independence into your life. While you are not totally free (after all, you are still working for clients), you can theoretically get rid of any single client while not losing your profession. Firing your bad clients is even a smart thing to do because they demand more of your time, drain your energy, pay you badly (if at all), and don’t value your work in general. In contrast, good clients will treat you with respect, pay well and on time, come back, refer you to other clients, and make working with them a pleasant and productive experience. As an employee, you don’t have this freedom of firing your boss until you find a good one. This is a unique advantage of being a Python freelancer compared to being a Python employee.

Tax advantages: As a freelancer, you start your own business. Please note that I’m not an accountant — and tax laws are different in different countries. But in Germany and many other developed nations, your small freelancing business usually comes with a lot of tax advantages. You can deduct a lot of things from the taxes you pay like your Notebook, your car, your living expenses, working environment, eating outside with clients or partners, your smartphone, and so on. At the end of the year, many freelancers enjoy tax benefits worth tens of thousands of Dollars.

Business expertise: This advantage is maybe the most important one. As a freelance developer, you gain a huge amount of experience in the business world. You learn to offer and sell your skills on the marketplace, you learn how to acquire clients and keep them happy, you learn how to solve problems, and you learn how to keep your books clean, invest, and manage your money. Being a freelance developer gives you a lot of valuable business experiences. And even if you plan to start a more scalable business system, being a freelance developer is truly a great first step towards your goal.

Paid learning: While you have to pay to learn at University, being a freelance developer flips this situation upside down. You are actually getting paid for learning. As a bonus, the things you are learning are as practical as they can be. Instead of coding toy projects in University, you are coding (more or less) exciting projects with impact on the real world.

Save time in commute: Being in commute is one of the major time killers in modern life. Every morning, people are rushing to their jobs, offices, factories, schools, or universities. Every evening, people are rushing back home. On the way, they leave 1-2 hours of their valuable time on the streets, every single day, 200 days a year. During a 10 year period, you’ll waste 2000-4000 hours — enough to become a master in a new topic of your choice, or writing more than ten full books and sell them on the marketplace. Commute time to work is without a doubt one of the greatest inefficiencies of our society. And you, as a Python freelancer, can completely eliminate it. This will make your life constantly easier, you have an unfair advantage compared to any other employee. You can spend the time on learning, recreation, or building more side businesses. You don’t even need a car (I don’t have one) which will save you hundreds of thousands of Dollars throughout your lifetime (the average German employee spends 300,000 € for cars).

Family time: During the last 12 months being self-employed with Python, I watched my 1-year old son walking his first steps and speaking his first words. I was actually attending every single stage of his development and growth. While this often seems very normal to me, I guess that many fathers who work at big companies as employees may have missed their sons and daughters growing up. In my environment, most fathers do not have time to spend with their kids during their working days. But I have and I’m very grateful for this.

Are you already convinced that becoming a Python freelancer is the way to go for you? You are not alone. To help you with your quest, I have created the one and only Python freelancer course on the web which pushes you to Python freelancer level in a few months — starting out as a beginner coder. The course is designed to pay for itself because it will instantly increase your hourly rate on diverse freelancing platforms such as Upwork or Freelancer.com.

The Bad Things

But it’s not all fun and easy being a Python freelancer. There are a few serious disadvantages which you have to consider before starting your own freelancing business. Let’s dive right into them!

No stability: It’s hard to reach a stable income as a freelance developer. If you feel only safe if you know exactly how much income you bring home every month, you’ll be terrified as a, for example, Python freelancer. Especially if you live from paycheck to paycheck and don’t have yet developed the valuable habit of saving money every month. In this case, being a Python freelancer can be very dangerous because it will ultimately push you out of business within a few bad months. You need to buffer the lack of stability with means of a rigorous savings plan. There is no way around that.

Bad clients: Yes, they exist. If you commit to becoming a freelance developer, you will get those bad clients for sure. They expect a lot, are never satisfied, give you a bad rating, and don’t even pay you. You might as well already accept this fact and write 10% of your income off as insurance for freeing yourself from any of those bad clients. I’m not kidding — set apart a fraction of your income so that you can always fire the bad clients immediately. You save yourself a lot of time, energy, and ultimately money (time is literally money in the freelancing business).

Procrastination: Are you a procrastinator? It may be difficult for you to start a freelancing business because this requires that you stay disciplined constantly. There is no boss who kicks your ass if you don’t perform. All initiative is on you. Of course, if you have established a thriving freelancing business, new clients will line up to make business with you. In this case, it may be easier to overcome procrastination. But especially in the early days where you have to make a name for yourself, it’s critical that you show the discipline which this job profile requires. Make a crystal clear plan for how you acquire clients. For example, if you are a Python freelancer at Upwork, make it a habit to apply for 10 projects every day. Yes, you’ve heard this right. Commit first, figure out later. You can always hire your own freelancers to solve your projects if you have more projects than you can handle. Or even withdraw your services. But doing this will ensure that you never run out of clients which will practically guarantee your success as a freelancer in the long run.

Legacy code: Kenneth, an experienced Python freelancer, describes this disadvantage as follows: “Python has been around for 25+ years, so, needless to say, there are some projects that have a lot of really old code that might not be up to modern standards. Legacy code presents its own fun challenge. You can’t usually refactor it, at least not easily, because other, equally old, code depends on it. That means you get to remember that this one class with a lowercase name and camel-case methods acts in its own special way. This is another place where you thank your lucky stars if there are docs and tests. Or write to them as quickly as possible if there’s not!” [1]

Competition: Python is a very well documented language. Although the code projects in Python are growing rapidly, so is the international competition. Many coders from all around the world are attracted to Python because of its great documentation and suitability for machine learning and data science. Thus, the big advantage of writing Python code that is fun, can sometimes also be the biggest curse. Competition can be fierce. However, this is usually only a problem if you are just starting out and have not yet made a name for yourself. If you are doing good work, and focus on one sought-after area (e.g. machine learning nowadays), you have good chances to have plenty of clients competing for your valued time!

Solitude: If you are working as an employee at a company, you have always company, quite literally. You will meet your buddies at the coffee corner, you’ll be forced to attend seminars and conferences, you will present your work to your group, and you’ll generally get a lot of external input regarding upcoming trends and technology. As a freelancer, you cannot count on these advantages. You have to structure your day well, read books, attend conferences, and meet new people. Otherwise, you will quickly fall out of shape with both your coding and communication skills because you constantly work on your own. The ambitious way out is to constantly grow your freelancing business by hiring more and more employees.

What’s Unique in Python Freelancing?

Python is a unique language in many ways. The code is clean, there are strict rules (PEP standards) and “writing Pythonic code” is a globally accepted norm of expressing yourself in code. This has the big advantage that usually, you will work on clean and standardized code projects which are easily understandable. This is in stark contrast to languages such as C where it’s hard to find common ground from time to time.

The Python ecosystem is also very active and vivid — you’ll find tons of resources about every single aspect. As mentioned previously, the documentation is great. Many languages such as COBOL (wtf, I know), Go, Haskell, and C# are documented poorly in comparison to Python (before you send me a hate email, please read the whole sentence thoroughly and not only the first few words). This helps you a lot when trying to figure out the nasty bugs in your code (or your clients’).

The barrier of entry is also low which is partly a result of the great documentation, and partly a result of the easy to understand language design. Python is clean and concise — no doubt about that.

Finally, if you plan to start your career in the area of machine learning or data science, Python is the 800-pound gorilla in the room. The library support is stunning — more and more people migrating from Matlab or R to Python because of its generality and the rise of new machine learning frameworks such as TensorFlow.

If you want to learn more about the state of the art of Python freelancing and its earning potential, watch my free webinar now.

2 thoughts on “Should I Become a Freelance Developer?”

  1. Hi Chris, thanks for a great article. I agree instability of income is one of the most important downsides of freelancing. I wonder if you have developed any tactics to to run multiple projects for different customers at the same time. I believie this can reduce the risk of being not paid or paid later than expected. Is it feasible in Python freelancing? How long an average webscraping / data science / machine learning project take? In my field (iOS development) even small project takes a few weeks and clients usually insist to deliver as fast as possible so it’s hard to run two projects at one time. I wonder if there is any difference in the Python world…

    • Hey Greg,

      thanks for your positive feedback! I agree, running multiple projects theoretically reduces the variance in income. The problem is that, in practice, it can cause your work to be unfocused. I believe that many clients quickly see whether you give them your full, uninterrupted attention. It’s hard to say how long a project endures — some of them can be finished within 1-2 days or a week max (these are the ones I prefer). If the project takes significantly longer — they feel more like a real job and long-term commitment. I would say, web scraping projects are often very short term (maybe 2 days or less). Machine learning projects can take a week or even longer (a common project is “find a model that solves XY with minimal precision Z”). But this largely depends, of course, on your level of code proficiency.

      As a practitioner and expert, could you please describe the field of iOS development a bit further for future readers? Your perspective will be very useful for many freelancers just starting out.

      Thanks again!
      Chris

Comments are closed.