Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What jobs can I have knowing Python?
123 points by mahdi7d1 86 days ago | hide | past | favorite | 83 comments
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.

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

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.

> Using frameworks is a must.

Totally depends on what you mean by 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 :)

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.

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

Programming by itself is a borderline useless skill, just knowing python gains you very little. There are many fields where Python is an important skill, but that is because it allows you to perform other tasks faster. That is the importance of programming, the fact that you can automate work, and do large amounts of analysis faster than you could otherwise. If you want to program embedded devices, just knowing C doesn't help you if you don't understand how processors, memory, motors, sensors, etc work. Knowing python can help you leverage your mathematics or statistics knowledge to work as a data scientist or a quant, but just knowing python isn't sufficient. Knowing python alone is not sufficient for devops, since you also need to know how operating systems, networks, cloud infra, etc. works.

> Programming by itself is a borderline useless skill

That's a terrible take. Programming is often a rarer and more difficult skill to hire for them many of the domains programming jobs touch. Most places will hire you just based on programming knowledge, and will train you in the domain knowledge.

All of the jobs you've listed are highly technical fields, and unusually specialized among programming jobs. A general SWE position doesn't often require much more than just programming.

> Most places will hire you just based on programming knowledge, and will train you in the domain knowledge

I have not been able to find a place like that, most have a long list of requirements. Can you suggest any?

> Programming is often a rarer and more difficult skill to hire.

The problem is, the employer is probably wrong (they did not do the correct requirement analysis on this), and actually don't want a "just a Programmer", they want a "Requirement Analyst"/"Functional Analyst"/"Design Analyst", and those are the rarer and more difficult skill to develop and find at all.

I've never worked as a programmer, despite 30+ years of programming experience.

Based on my observations, biased due to my specific niche, most people who program just ... well ... shouldn't. If there were doctors practicing medicine as bad as some people who call themselves programmers program, then we'd have riots!

Really curious, what counts as "programming knowledge"?

I would say Python is used pretty much everywhere in the industry, even outside of the data science niche it seems to be popular in right now. Its ease of use and extensive standard library makes it a great choice for one-off CLI tools as well as quick prototyping, and it is not uncommon to e.g. have Python scripts as part of the build pipeline for a C++ or Rust project, or to develop the first iteration of a web app using Flask or even Bottle.

In my opinion Python's strength does not lie in the language itself but rather in its third party package ecosystem. Libraries such as NumPy, Requests and PIL/Pillow provide optimized (and often native) black-box implementations of common tasks and wrap them into simple APIs, turning Python into basically the modern equivalent of shell scripting. You can usually "pipe" data from one library to the other and create complex pipelines in just a few lines of code, without sacrificing too much performance since most of the magic happens within the packages' DLLs. I guess this is what made it popular for data analysis in the first place.

I would strongly recommend OP to familiarize themselves with NumPy and other popular packages, including the data-science-oriented ones, as they might come in handy when writing nontrivial scripts. Writing simple command line tools is also useful for getting used to the standard library.

While this is ultimately somewhat true, it's a bit of a doomer perspective - knowing "some programming" is the gateway to learning other things.

When you see a list like "processors, memory, motors, sensors, etc" the first thought might be "Oh no I don't know any of that", but that's not a problem. Nobody starts off knowing it. You just pick a problem you want to work on and you start reading and trying things, usually failing over and over along the way until it works.

I only knew a little programming when I started on a web development career, and I just learned a lot along the way.

Imo, this is an awful take. Programming can have such a deep knowledge that you may have very little other skills.

I'm surprised this comment even showed up on HN.

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.

You'll find some of those such jobs (Research Software Engineers) at https://society-rse.org/careers/vacancies/

Very helpful. Very kind of you. Thanks.

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...).

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?"

> 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)

If you are interested in either Linux, Security or telephony I would say do this.

Can you elaborate on the telephony part?

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.

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.

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).

you should put at least email in your profile here, if you want more gigs (and ratings)

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.

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.

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.

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.

Loved that message. Should be taught to everyone who begins learns programming.

Well put! I think a lot of people need to hear this.

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.

Glad you are finding it useful :)

Another fan of Shantanu here. Can you post the link to the article you mentioned?

Yep. Here: https://new.pythonforengineers.com/blog/build-a-reddit-bot-p...

I am not a fan sir but an admirer of work that teaches and helps others. Btw, if you're into PRAW, you may find this helpful as well: https://pythonprogramming.net/introduction-python-reddit-api...

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

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.

We[1] use Python to help with optimizing, forecasting and trading renewables. And we are not the only ones.

[1] https://www.e2m.energy/en/

qa/test engineer.


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?

Might want to investigate ML/Data Science. Python + Math background == big money. All type of hedge funds use python for quant type stuff. Pretty much any company doing ML is using python. These are all extremely high paying jobs. Personally, I'd drop the frontend/backend stuff and focus on those areas if you have any inclination towards math or find data science interesting. ML is still in it's infancy and you can make an entire career out of helping companies adopt it. There is tons of overlap between quant/ML since you're mostly just looking at data via jupyter notebook's with python libs like numpy, pandas, matplotlib, etc (good book: https://jakevdp.github.io/PythonDataScienceHandbook/).

Look at the job postings for hedge funds (look for quant / ml researcher):


Looks at job postings for ML companies (look for data science / ml):


Also, look at Google, Tesla, etc.

Here's a good crash course:


This really depends on your background. If you’re a student currently getting an internship is the easiest route to a job with just knowing python.

If you’re not a student then you need to bring something additional to the table besides python.

A few avenues for python jobs involving short python scripts are:

- solutions architect/sales engineer at a cloud company or consultant at a cloud partner, AWS certs are pretty easy to get and can help you go down this path

- government contracting, there’s a ton of jobs especially related to healthcare/scientific data where they need python engineers to build scripts

- bioinformatics, there’s lots of genomics companies looking for software engineers to help build scripts under scientists direction

- election data, there’s a large number of firms that need people to build and maintain ETL scripts for election data and demographics

Can I suggest visiting a local python meet up?

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.

Ok so you know enough Python to be dangerous. But as a lot of the comments are suggesting: now you need to learn programming paradigms like how to organize your code, write tests, source code management, etc etc

You are where I was almost 10-years ago. I had taught myself enough python to be dangerous to automate the boring parts of my job as a SQLServer DBA but I didn't know Python well enough to be considered a Python developer.

At this level though you could get into automation or even system administration using things like Ansible and get a good paying job and learn the software engineering stuff later.

I'm writing Ansible plugins for living.

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.

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.

Maybe just learn Django and SQLAlchemy, there's stacks of jobs out there for it and what you don't know you can google. You'll learn a lot quick and have more options.

Or Flask just for some quick educational wins and whatever its preferred ORM/DB presently is (also SQLAlchemy I presume?).

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.

There's a lot of room for general python skills in various parts of science, and in my experience quite easy to get a job because there's not a lot of competition (mostly due to wages I guess). Often any libraries/frameworks in use are obscure and you're not expected to know them beforehand. Projects tend to be numerous and small rather than a single huge one.

Universities, large scientific labs/facilities, etc.

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.

Big projects in general seem arduous, or just big software projects? Is it a problem of not being able to focus and do deep work?

I ask because it's a very common problem and the solution is much different than most of the advice that has already been given.

The VFX industry typically relies on Python and there are roles that help maintain small scripts that automate various tasks for artists. Python is well supported in many digital content creation (DCC) tools

Python is used as an extension language in everything from 3D modelers to banks' internal trading platforms. You have to have domain knowledge or something more than Python skills to compete though.

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

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.

You can research Python uses in DevOps, sysadmin and security testing. There is more potential there for writing a lot of small scripts.

Maybe sort of framework project so instead of using frameworks you create them?

There's a framework for that

Everyone's using hammer factory factories now.


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.

You could be a quant at a bank

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact