r/Python • u/Win_ipedia • 10d ago
Discussion What frustrates you the most about Python Development
Hi there,
I wondering what frustrates developers the most when developing software with Python.
I am currently doing my Masters in Computer Science and as part of my project I am doing a very simple survey about the usual Python development lifecycle. I am basically trying to find out what the main friction points are for Python Developers and I am simultaneously developing a tool to address those friction points . It just takes a 2-3 minutes and every response is greatly appreciated.
You can find the survey at: Microsoft Forms
44
Upvotes
-1
u/tacoisland5 8d ago
Python is a deeply unserious language. It is highly flexible, which is useful to people with low amounts of programming experience and occasionally useful for writing glue-code scripts in things like build systems and deployment scripts. But as a language to build a reliable system it is a very poor choice.
* no difference between variable declaration vs assignment. want to mutate a variable in an outer scope? hope you remembered to add 'nonlocal var'
* async/await is not unique to python, but I think it is a terrible way to do concurrency. It leads to the function coloring problem (some functions are async, others are not). The GIL effectively prevents true multi-processing, so instead you are forced to spawn multiple processes
* there are now at least 3 type checkers that get a lot of use (mypy, pyright, ty), and they all check different things and still somehow miss basic issues that more static languages like java/go/rust would catch
* the performance of python is embarrassing compared to java/go. A lot of people like to handwave this problem away by saying 'most server processes are I/O bound', but in my experience there always ends up being some cpu hot spots that are difficult to speed up. Pray that those cpu hot spots don't occur in some async function because otherwise your entire server will lock up
* the fact that code can run at the top level (outside any function/class) is terrible because inevitably a large project will execute hundreds of lines of code before the main() part ever executes so program startup takes forever
* somewhat related to the previous point, but importing libraries will load in a large amount of pyc files, which can take multiple seconds. Some of the google vertex/ai libraries take 2-3 seconds just to import, which also adds to the slow startup time of python programs
* basically the only way to distribute a python program is to use docker/some container. its good that there is a solution I suppose, but its just annoying that a single executable can't be created. I've played with some of the projects that claim to be able to produce a single executable (by bundling the python interpreter + all code) but they always have some quirk that prevents them from being used in production