Ask HN: What jobs can I have knowing Python?

123 points by mahdi7d1 ↗ HN
I have known python for a long time but have never done a proper project or earned money through writing Python code.

I like the core Python but I'm not interested (don't like them personally) in any frameworks. I have used python to write small scripts to do small things like automation and stuff but honestly writing (or even working on) big projects seems terrifyingly arduous to me.

As far as I have seen almost all jobs related to Python are either back-end development using Django or something related to data.

Considering I like neither of those, is there any other careers I can pursue? Especially if it involves writing many short script! I know there must be other jobs out there related to Python but the number of those seem to be really low and hard to find.

86 comments

[ 2.6 ms ] story [ 166 ms ] thread
I'm writing Ansible plugins for living.
What about teaching Python?
Actually I think I can make better learning materials than the one's already available but the problem is that I have mindset of free tutorials and if I ever teach Python it would be for free! Actually I have experience guiding some of my friends to learn python and seeing them go past me ;)
You might want to check out The Carpentries (carpentries.org) if you're interested in scientific programming and in teaching for free with good teaching methods.
Perhaps DevOps is an area you can go into.

Also, if you don't like Django, give Flask a try. It's much simpler and easier to get started. If you can tolerate that it opens up a lot of opportunities writing backends.

If you're into python and have a strong background in math you may want to check out the 'data scientist' path, there is a serious shortage of good people in that field and the pay is a lot better than cranking out web stuff.
I am freelancing on Fiverr for cheap $5 Gig (with optional $10 and $15 package). Barely have a client for march and this month, but sometimes got like 5 project months. Sometimes i reject several offers. Because i choose only small project (for cheap pay) :D

Note: first good rating really help. Need to install the Phone App to make sure keep response rate green.

you should put at least email in your profile here, if you want more gigs (and ratings)
What type of projects to you do for $5?
I can't imagine anything programming related that would be worth my time for $5.

Anything worth coding for a client will take at least an hour when it's all said and done. I made $12/hr flipping burgers before.

I'm wondering if GP is actually doing people's homework or something.

I wonder what's the average hourly rate on Fiverr. Grossly.

That said for some tasks and people I'd do it for 10$.

Its side work other than my full time. By the way most of my clients are generous and like to give more. My average selling price is $13.06 for now.
Its Python related project. It is really $5. But any of my client give more like $10 or $15. For the $5 is good enough for a day project. Sometimes i got it done really fast, sometimes several hours. But i choose a project that can be done in a day (after office hour).
Out of curiosity - what kinds of things do you do for $5 and how long does it take on average? Thanks!
Simple project like excel/csv processing, school task, etc.
Do you feel bad doing people's homework?
I dont.

I would like to explain if they asked. And give some comments on the code to tell what is the code doing.

qa/test engineer.

sre/infrastructure/automation.

release engineering.

web scrapers/some etl.

scientific python.

tech writing/examples for python apis.

solutions engineer/professional services/post sales engineer.

they all require some domain knowledge though and some likely require the use of popular libraries/packages. maybe have a look at the libraries used for each and find one you like?

TL;DR: Python alone won't land you a job!

So here is the thing: Just knowing a programming language, isn't enough of a skill to land a job! That's why you learn other things too on university, like math, data science and so on. I for example work in the robotics industry and I do exactly what you ask for. I write many short python scripts for ROS. But my ability to write python code isn't what makes me valuable. It's because I studied robotics, know how to solve complex problems using math, and then implement said solution in python. The last part being the easiest. Coding is like writing. Just because you know how to read and write, doesn't make you a bestselling author. That's just a basic requirement, and even back-end devs need some knowledge about databases, distributed systems, etc.

Loved that message. Should be taught to everyone who begins learns programming.
Well put! I think a lot of people need to hear this.
This is actually spot on. I've known programming languages for over 25 years. I always wanted to be a software developer. I ended up being a network engineer (and pretty darn good at it too).

About three years ago, I switched to a developer role at my work, and then a lead developer not too long after that. I didn't land my dream job because my coding was so good. It was because of my underlying understanding of what we actually do and how the network stuff actually works, coupled with the minimal fact that I also know how to code that was ultimately responsible.

If you also like 3D modeling you could try applying for ATD roles at VFX companies. The job involves writing many, often single use scripts.
What you are saying seems like a dream job for me.

I really like blender and have experience working with it and love 3D in general. Surely I'll look more into your suggestion. Thanks.

I worked as a Python developer in several companies and projects, in most of them I used Django, but if I would get a job in Python now, probably I would focus on AsyncIO. It's much closer to other stacks, such as NodeJS, and other languages support coroutines etc.
I have been away from Python for a few years so I'm curious.

When you say

> probably I would focus on AsyncIO

do you mean you would use frameworks that make use of AsyncIO like FastAPI? And do you know other examples besides FastAPI itself?

I would do it with pure builtin asyncio Library. Python's standard library is enough to create a Restful API, I think. There's everything builtin already. I wrote a couple of blog posts about it, you can read and let me know what you think about it.

This is initial blog post, about creating a raw web server https://fatih-erikli.com/creating-a-web-server-in-asyncio.ht...

This is some boilerplate for creating a router and endpoints etc. https://fatih-erikli.com/asyncio-boilerplate.html

And this is about interacting with other services such as Redis, Mongo, etc. https://fatih-erikli.com/asyncio-streams.html

Thank you for the links and the explanation! Very interesting
Using frameworks is a must. Writing maintainable code is a must.

DevOps - you'll quickly run into requirements to write parallel work. Not using something like fabric is a waste of your employer's money hiring you. You'll quickly run into requirements to use ansible/terraform/other. Same applies here; surrounding tools with subprocess and parsing stdout/stderr is a waste of your employer's money. Use appropriate packages, instead.

DataScience - all the cool toys, from simple stuff like pandas, or more focused ones like working with spark and the plethora of big data libraries require indepth knowledge of both the library and the underlying datastore. Combined, you make the most of your time and hardware. Not doing so, and only writing something that works on a small scale is a common costly mistake.

Security - python is just a helper tool. Your requirements, depending on position, will be focal knowledge about a domain and its set of tools. From highly skilled domains like research onward to threat hunting, PT and to the entry level stuff like NOC.

You're better off enjoying the little wins in life and dealing with the less pleasant moments. That'll give you a nice career in anything you choose.

> Using frameworks is a must.

Totally depends on what you mean by framework.

Totally agree. Django is a web framework, Flask is also a web framework, and there is huge difference between them. I like using frameworks mostly because of their ecosystem and third party libraries. Django is great in that matter. If I'm going to create a project that needs an admin, auth, special authorization for some user types, I would definitely go with Django. If I'm just creating a Rest API, I would choose Flask or not choose anything at all, so without a framework.
In my data science department, for a while all I used was Sanic (a server), and some dependencies (like Pandas, requests, and libraries to interact with GCP) and that was enough for most servers I wrote.

But once you know Python, it's a small/short step away to learn another language :)

> Using frameworks is a must

Depends on what you're doing. Using an inappropriate or over-heavy framework can be a millstone around your neck.

I think understanding what values frameworks deliver and their pros/cons is super important before blindly jumping into them.

Do you have a list of useful DevOps libraries/frameworks? I work as a linux admin and this is the first time I've heard of fabric but it does look neat.
fabric is great. made sftp a breeze
You can research Python uses in DevOps, sysadmin and security testing. There is more potential there for writing a lot of small scripts.
(comment deleted)
In science, lots of Python is used. Perhaps do a web search for scientific programmer jobs, or look on the jobs sites of institutes. If your background/interest is in physics, check NOAA, NIH, NASA, JPL, et cetera. For other fields, check job sites of the appropriate universities.
> Especially if it involves writing many short script!

I think a role in DevOps or writing internal Developer Tools (many larger firms would have this role) would be perfect for you, given this preference.

Frameworks are not created equal. Some are awful. Some seem awful but are actually great. Some seem great but are pants. Some are just great all round.

Regardless, you say working on such frameworks "seems" bad to you... have you spent like a solid week trying to make something work in one? There is definitely an up-front investment of time, but once over the initial hump, working with a well-designed framework can actually be very liberating, enlightening and enjoyable.

Things I enjoyed in the past include numpy, flask, Django and sklearn (the latter in particular, no offence to any maintainers, seems like a mess but is actually very well designed and thought-through IMO). Things I don't enjoy are Ansible and Pandas, though both look like they're polished and well thought-through. YMMV.

I think "trying to use a framework" is approaching it from the wrong end. I find it more enlightening to try to achieve something larger without a framework, seeing what pain points you have and then adopting whatever you need to solve your problems.

In some cases, "trying" might be actually succeeding, but finding out that the same could be done with 1/100 of the time/effort. In other cases, you just find out what you want to do is just not feasible as a single developer and leveraging others' work is a must.

That approach also makes it much easier to evaluate if the framework is good and is good for you and your project. Otherwise you're trying to figure out if a hammer is good without having any nails to drive.

It's true, not using a framework can be very enlightening, it shows the breadth of what you have to implement yourself.

It can also sometimes work the other way, and show that the framework is not actually that useful. I had this with Ansible, where going down to raw fabric made my life much, much nicer (yaml is not a great programming language...).

Dont forget the core of python is also a framework-ish :p imho You can for example start create a server with pure python, witout any framework.

I'm a bit baffled on your stance not liking frameworks. If you really now python then using frameworks should be do-able... And long term you notice it makes achieving your goals easier.

So, not liking frameworks, makes you less efficient of an engineer... Tip: Try some frameworks, pick and choose the one you like. And learn from there.

Also: Try other programming languages. Its about the concepts, not a specific language.

But if you know how to program: The oppertunities are endless... You can work in any field, any domain. BOOM

I think in general frameworks make tend to make the easy things a bit easier and hard things significantly harder. They trap you in other people's architectural and technological choices in a way actually making sane architectural and technological choices of your own doesn't.
I agree, but going "off script" usually leads to much worse results that fewer people can work on.

If the hard is still hard in a framework, you might be using the wrong framework.

> I agree, but going "off script" usually leads to much worse results that fewer people can work on.

Skipping them causes problems if you don't have any experience with software architecture. This in turn creates a vicious circle where you avoid software architecture because it's hard, and they keep being hard because you're never exposed to software architecture problems.

My first guess would have been Web development with Django but if that's a no you might want to give DevOps a try. Of course, it will include a lot of tooling and other technologies (nearly impossible to do it without knowing about Docker/Kubernetes) but people who can develop DevOps tooling are in high demand.

Last but not least you can look into automated testing. Not the most interesting job for many but Python is widely used there.

Here in the UK(dont know if this is global)-- test /automation / devops is heavily into Python. Even companies that used Perl/Ruby are moving to Python, simply because more people available. Dont know if this is globally true
Hi Shantnu, I'm learning from your PRAW post. Cheers.
If you wanna code professionally, it's time to put your personal likes and dislike to the side. There's a reason frameworks are being used. Don't let ignorance cripple yourself.

Frameworks offer a standardised way to build things, sometimes I don't like how some frameworks do stuff, but that's not a problem. I can set aside my personal feeling and just go with the flow.

Every field that isn't immediately related to programming can benefit from more code. Fields related to programming from less code.

For example, every scientist I know struggles with a cobbled mess of bash, R, and Python scripts. Reading and writing CSV, cleaning data, moving things about, renaming and merging files. Drawing a pretty graph at the end. That sort of thing. Thousands and thousands of files. TBs of data.

Few scientists can program, but every single one would profit immensely from somebody who can set up small scripts. The coding itself isn't tricky but some of the domain knowledge is.

Though I don't know where to find such a position. The labs I'm familiar with work with first year bioinformatics students and similar and don't publish job openings as such.

I don't know how to find jobs in this, but the "automation" aspect is something where an enormous amount of organizations could benefit, as they are constantly doing repetitive things manually that could readily be automated. It's amazing to happen upon cases where a big part of someone's job is forwarding things by e-mail or copying and pasting between applications. And that's still the case many times today, because many people see software as a black box.
Anything and everything. In addition to Django and ML (which you mention), there's a lot of systems programming that can be done with Python. I recently left a position where I automated systems tools using Saltstack and Python, Gitlab CI/CD and Python to automate a lot of data loading and wrote some services using Flask and DRF. The CI/CD project had me make a satellite system of Docker images to interact with SMB and REST interfaces. That was a lot of fun, akin to making basic Unix tools for a multi-OS hoard (think cp mv and rm except the endpoints are services instead of files). Made me realize that in the Docker world we have to adjust our expectations for what you pass between commands. It's no longer text on a pipeline, it's filesystems passed between containers.
You could be a quant at a bank
If you enjoy writing scripts then something in devops might be best suited for you.

But to be clear, there is a lot more to know in devops than just Python, and you will not make money if you don't learn frameworks and libraries. This is because while it's possible, you won't get anything done in a timeframe that anyone will pay you for.

Learning Python and then not using frameworks is like saying "I like playing with glue, what can I make with JUST GLUE?"

If you are interested in either Linux, Security or telephony I would say do this.
Can you elaborate on the telephony part?
> Learning Python and then not using frameworks is like saying "I like playing with glue, what can I make with JUST GLUE?"

This is exactly it. The power of Python comes from exactly two reasons:

- The syntax being easy, productive, fun, forgiving, intuitive, and readable

- The immense volume of high-quality frameworks and modules

So many fun and expressive languages have been lost to the graveyard of time, and often (usually? almost exclusively?) this is due to lack of a 3rd party ecosystem.

Python is the Bash pipe operator of programming: it’s useful only in the context of where you’re piping from and to. But that usefulness cannot be overrated.

(A follow-up: Python also has a well-defined C FFI which enables modules like NumPy and TensorFlow. This is a critically important part of the language, but I include it under the ‘frameworks and modules’ bullet)