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.
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.
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?
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!
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?