IndustryPython Freelancing: the Good, the Bad, and the Ugly

Kenneth Love
writes on November 26, 2014

Share with your friends










Submit

Lots of us really like programming. We also really like making money and being able to feed ourselves and our families. But, many of us don’t necessarily like working in an office or for one single product or company, so a lot of us become freelancers. Is that you? If it is, or even if it isn’t but could be, maybe you want to be doing Python for a living. I’ve spent most of my adult life as a freelance programmer. Even luckier, I’ve been able to be a Python programmer for almost all of my freelancing career. Like all fields, especially in freelancing, there are good, bad, and ugly parts to this field. Let’s take a look at them.

The Good

One of the best things about Python freelancing is also one of the best things about Python itself: the code is generally really clean. This means less time spent trying to figure out what the previous developer was thinking or doing when they wrote a particular class or function. Since most Python developers follow PEP 8, you shouldn’t have too hard of a time reading through code. Hopefully they’ve also been writing good docstrings, too!

Along with docstrings, many Python developers are very dedicated to writing good documentation. Between docstrings and Sphinx-based documentation, especially for open source projects at sites like Read The Docs, you don’t have to go far to figure out how to use a project.

Python developers are also pretty strong test-writers, so many projects you get will have decent test suites. This makes refactoring and adding new features a lot easier. If you happen to get a project without tests, this is a great place to start work. You’ll make the project stronger and you’ll learn about the code, too, as you write tests to make sure it’s all working correctly.

The Bad

Freelancing often has the same “bad” features no matter what language: deadlines that are too short, clients that don’t know exactly what they want or need, and those wonderful clients that just don’t want to pay their invoices. But what special problems do we get in the Python world?

Quite often, clients in the Python world expect their developers to be top-notch, able to tackle any problem that comes their way, and, on top of that, able to handle the full stack, from writing HTML and JavaScript, down to writing Python (of course), and on down to setting up the servers everything will actually run on. I don’t know about you, but I’m a lot more comfortable writing complex Django applications than I am sharding a database. But, in my years as a freelancer, I’ve done it many times. Remind me to tell you about the Nginx-to-Lua-to-Redis bridge I had to build once.

On top of the long list of skills and experience needed, or at least desired, you sometimes have to deal with legacy code, too. 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 them as quickly as possible if there’s not!

The Ugly

Like I mentioned in the bad, you’re eventually going to get a deadbeat client that just doesn’t want to pay their invoices. I don’t know if it’s from working in the Python world or if I just happened to have really good clients, but in 5+ years, I only had one that didn’t pay.

Outside of horrible clients, most of the ugliness I’ve encountered in Python is due to code that’s untested, undocumented, and written by people whose day job isn’t writing Python. You come across these strange implementations or APIs every once in a while and you end up just remembering how they work. If you’ve ever had to deal with SOAP APIs, you’re probably nodding along right now, and that’s when they work like they’re supposed to!

One of the frustrating things about Python freelancing is that there are often more qualified developers than there are jobs. This produces a market that is sometimes really hard to get work in. This, though, is where having those extra skills, setting up a server or database, knowing the ins & outs of DNS, having a familiarity with statistical computing or natural language, can set you apart and make it easier to get clients.


Python freelancing has been a fulfilling part of my life and lead me to many great friends and acquaintances. It also enabled me to build some really interesting sites and projects and learn a lot of new stuff. Is Python freelancing for you? I can’t answer that, but if you like Python and a good challenge, it’s a great market to get into.

Any freelancers got any tips to add to this?

10 Responses to “Python Freelancing: the Good, the Bad, and the Ugly”

  1. I am really interested in python.. and want to make use of my free time after working.
    So i want to start working as python freelancer.
    As of now i am working as a software telecom tester and using python for automation framework from few months.
    My skills in python are basic python programming.
    what other python skills are required before get in to start as python freelancer?

  2. Minar Andriyanto on July 3, 2016 at 5:01 am said:

    What about android apps market in the google play store?? Are there any android apps that build using python and being marketed in the google play store?? I just thinking of making android apps using python and marketed it in the google play store.. is it hard to make it?? Or it can be made, but with far less efficient to build android apps that build using it’s native environment like android studio or stuff like that??

  3. Leonardo Cabrera on May 3, 2016 at 10:59 am said:

    So if I go through the Python course, should I get a job first before trying my hand at freelancing?

    • Daniel on May 10, 2016 at 1:02 pm said:

      personally I’m looking for employment first maybe freelance on the side, I would prefer to get some experience under my belt first.

  4. currently making my way through the python and web courses at Treehouse and my aim was to go freelance, but would the recommended pathway be to get a job first.

    Love python and the courses here at treehouse keep up the great work.

  5. Your article is extremely well-written. This is great informational content from my point of view. You also make many valid points with compelling, unique content.

  6. Jason Orington on November 30, 2014 at 7:19 pm said:

    30 years? Python was created in ’91!

    • Kenneth Love on November 30, 2014 at 8:29 pm said:

      According to Guido’s History of Python, the first implementation was started in late 1989. He has said he has dreaming it up and designing it for awhile before that, too. 1991 was the first public release, not when the language actually started. I’ve updated the post to “25+”, though, instead of “30ish”. Thanks for the comment!

Leave a Reply

Want to learn more about Python?

Learn the general purpose programming language Python and you will be able to build applications and tools.

Learn more