Settings

Theme

Ask HN: What jobs can I have knowing Python?

123 points by mahdi7d1 4 years ago · 86 comments · 1 min read


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.

0xedd 4 years ago

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.

  • signal11 4 years ago

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

  • eru 4 years ago

    > Using frameworks is a must.

    Totally depends on what you mean by framework.

    • yboris 4 years ago

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

    • fatih-erikli 4 years ago

      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.

  • mrnotcrazy 4 years ago

    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.

ecshafer 4 years ago

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.

  • moeris 4 years ago

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

    • jpindar 4 years ago

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

    • ElectricalUnion 4 years ago

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

    • MrYellowP 4 years ago

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

  • spicyjpeg 4 years ago

    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.

  • aerovistae 4 years ago

    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.

  • avgDev 4 years ago

    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.

gherkinnn 4 years ago

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.

rich_sasha 4 years ago

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.

  • karamanolev 4 years ago

    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.

    • rich_sasha 4 years ago

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

personjerry 4 years ago

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

  • dlivingston 4 years ago

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

  • antb123 4 years ago

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

TeeWEE 4 years ago

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

  • marginalia_nu 4 years ago

    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.

    • spicybright 4 years ago

      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.

      • marginalia_nu 4 years ago

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

jockerz 4 years ago

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.

  • gruelsandwich 4 years ago

    What type of projects to you do for $5?

    • spicybright 4 years ago

      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.

      • agumonkey 4 years ago

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

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

      • jockerz 4 years ago

        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.

    • jockerz 4 years ago

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

  • i_like_waiting 4 years ago

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

  • cardosof 4 years ago

    Out of curiosity - what kinds of things do you do for $5 and how long does it take on average? Thanks!

dncornholio 4 years ago

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.

nummerfuenf 4 years ago

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.

  • deaps 4 years ago

    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.

  • irisman 4 years ago

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

  • seanw444 4 years ago

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

shantnutiwari 4 years ago

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

fatih-erikli 4 years ago

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.

jacquesm 4 years ago

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.

tharwan 4 years ago

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/

a-dub 4 years ago

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?

WestCoastJustin 4 years ago

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

https://www.investopedia.com/articles/personal-finance/01151...

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

https://technologymagazine.com/top10/top-10-machine-learning...

Also, look at Google, Tesla, etc.

Here's a good crash course:

https://developers.google.com/machine-learning/crash-course

faizshah 4 years ago

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?

Beltiras 4 years ago

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.

gigatexal 4 years ago

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.

endre 4 years ago

I'm writing Ansible plugins for living.

bckr 4 years ago

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.

schoen 4 years ago

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.

gonzo41 4 years ago

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.

  • teh_klev 4 years ago

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

case0x 4 years ago

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.

nurbl 4 years ago

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.

bartvk 4 years ago

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.

criddell 4 years ago

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.

lattalayta 4 years ago

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

snomen 4 years ago

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.

hiyer 4 years ago

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

tjpnz 4 years ago

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.

  • mahdi7d1OP 4 years ago

    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.

alwalo 4 years ago

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

markus_zhang 4 years ago

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

MikeDelta 4 years ago

What about teaching Python?

  • mahdi7d1OP 4 years ago

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

    • martopix 4 years ago

      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.

mfbx9da4 4 years ago

You could be a quant at a bank

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection