I learnt a long time ago that there is no such thing as loyalty with regards to work and that if you want to get the most compensation for what you do you need keep moving until you find the place where you happy with the compensation and equally the culture.
However things will change, either at home or at work so you need to balance those out.
When I started out I had this misplaced sense of loyalty to my first job I liked and it really held me back, they paid really low wages but for some reason I felt lucky to work there.
I changed my mindset and realised I’m selling my time to them so I might as well get the best return on my time in both compensation and enjoyment.
The bottom line is you don’t have to except poor pay, bad culture and boring work. You’re in control of your life.
EDIT
Also don’t be scared to ask for a pay rise or bonus. I make a point of doing it at each review and I check its progress in most one to ones. At the end of the day its your responsibility to get paid, you’re employer not matter how good they are us always going to try and save on opex, do you need to take ownership and make sure you’re getting paid what makes you happy.
Just look at what’s going with JetBrains AI quotas and costs, once AI is deeply imbedded and businesses move the cost to customers like JetBrains have these AI companies are going to make a killing.
It’s the drug dealer model, get them hooked on free tastes and then crank up the prices!
Elon, like everyone, is smart at some things and dumb at others. When you realize that about the world, it will help you learn from the smart sides of folks.
Despite his mad and destructive social and political side, as an engineer and business man he is extremely smart and effective.
He makes lots of unnecessary major and cringy mistakes in both engineering and business too, but his net on both counts is astounding.
And while he may overuse it for PR, he has put himself at great financial risk when pushing through major capability developments and business hurdles. His rewards were earned.
But the sick picture of the richest person in the world, spamming stupidity, and harming countless numbers of people's lives in order to prop up his juvenile ego is hard to look past for many. For good reason.
He is a strong mix of both extremes of capability/impact spectrum, not just one.
So why did Bezos get nowhere with Blue Origin despite throwing more money at it? Or every car manufacturer that tried to build EVs before Tesla? Or every satellite internet provider before Starlink?
> Shotwell had lunch with a co-worker who had just joined the then-startup company SpaceX. They walked by the cubicle of CEO Elon Musk. “I said, ‘Oh, Elon, nice to meet you. You really need a new business developer,’” Shotwell recalls. “It just popped out. I was bad. It was very rude.” Or just bold enough to capture Musk’s attention. He called her later that day in 2002 and recruited her to be vice president of business development, his seventh employee.
Can you imagine something like that working today?
I’ve been a python dev for nearly a decade and never once thought dep management was a problem.
If I’ve ever had to run a “script” in any type of deployed ENV it’s always been done in that ENVs python shell .
So I still don’t see what the fuss is about?
I work on a massive python code base and the only benefit I’ve seen from moving to UV is it has sped up dep installation which has had positive impact on local and CI setup times.
Thankfully some newer systems will error by default if you try to mess with them via pip instead of your system's package manager. Easy to override if you want to, and saves a lot of effort fixing accidental screw ups.
I guess this is why people need to get out of this “Python dev” or “JS dev” mindset and try other languages to see why those coming to Python complain so much about dependency management.
People complain because the experience is less confusing in many other languages. Think Go, Rust, or even JS. All the tooling chaos and virtual environment jujitsu are real deterrents for newcomers. And it’s not just beginners complaining about Python tooling. Industry veterans like Armin Ronacher do that all the time.
uv is a great step in the right direction, but the issue is that as long as the basic tooling isn’t built into the language binary, like Go’s tools or Rust’s Cargo, more tools will pop up and fragment the space even further.
Confusing is underselling it. That implies that Python dependency management is working fine, it's just complex. But it's not working fine: there's no such thing as lock files, which makes reproducible installs a gamble and not a given. For small scripts this is probably "okay", but if you're working in a team or want to deploy something on a server, then it's absolutely not fine because you want deterministic builds and that's simply impossible without a decent package manager.
Tools like uv solve the "it works on my machine" problem. And it's also incredibly fast.
Issue is since there are no standardized build tool (pip, uv both are third party), there are a zillion ways of generating this lockfile unlike go.mod or cargo.toml. So it doesn't work in many scenarios and it's confusing as hell.
My view is I’m an engineer first and foremost and I use the tools which are best for the task at hand. That also means what’s best for the business in terms of others working on the project, this has meant python with some sort of framework.
People have suggested using other languages that might be faster but the business always choices what’s best for everyone to work with.
Sure, it depends on the type and maturity of the business, as well as the availability of local talent. I've worked at three companies that started out with Python and Django, then transitioned to other technologies as the business scaled. In those environments, there were two kinds of developers: those who quickly adapted and picked up new languages, and those who wanted to remain "Python devs." The latter group didn’t have a great time moving forward.
What I don't like about the "Python + Framework + Postgres" argument is that it often lacks context. This is a formidable combination for starting a business and finding PMF. But unless you've seen Python and Postgres completely break under 100k RPS and petabyte-scale data, it's hard to understand the limitations just from words. Python is fantastic, but it has its limits and there are cases where it absolutely doesn't work. This “single language everywhere” mindset is how we ended up with JavaScript on the backend and desktop.
Anyone can write Python, and with LLMs, there's not much of a moat around knowing a single language. There's also no reason not to familiarize yourself with others, since it broadens your perspective. Of course, some businesses scale quite well with Python or JavaScript. But my point isn't to abandon Python. It's to gain experience in other languages so that when people criticize Python’s build tools, you can genuinely empathize with those concerns. Otherwise, comments like “Python tooling is fine” from people who have mostly worked with only Python are hard to take seriously.
> it’s always been done in that ENVs python shell .
What if you don't have an environment set up? I'm admittedly not a python expert by any means but that's always been a pain point for me. uvx makes that so much easier.
I wrote PHP/JS/Java before Python. Been doing Python for nearly a decade too, and like 4dregress haven't had the need to worry much about dep management. JS and PHP had all sorts of issues, Maven & Gradle are still the ones that gave me less trouble. With Python I found that most issues could be fixed by finding the PEP that implemented what I needed, and by trying to come up with a simple workflow & packaging strategy.
Nowadays I normally use `python venv/bin/<some-executable>`, or `conda run -n <some-env> <some-executable>`, or packaged it in a Singularity container. And even though I hear a lot of good things about uv, given that my job uses public money for research, we try to use open source and standards as much as possible. My understanding is that uv is still backed by a company, and at least when I checked it some time ago (in peps discussions & GH issues) they were no implementing the PEPs that I needed -- even if they did, we would probably still stay with simple pip/setuptools to avoid having to use research budget to update our build if the company ever changed its business model (e.g. what anaconda did some months/year? ago).
Digressing: the Singularity container is useful for research & HPC too, as it creates a single archive, which is faster to load on distributed filesystems like the two I work on (GPFS & LustreFS) instead of loading many small files over network.
I've been a python dev for nearly 3 decades and feel that uv is removing a lot of the rough edges around dependency management. So maybe "problem" is the wrong word; I've been able to solve dependency management issues usually without too much trouble, I have also spent a significant amount of time dealing with them. For close to a decade I was managing other peoples Python environments on production systems, and that was a big mess, especially with trying to ensure that they stayed updated and secure.
If you don't see what the fuss is about, I'm happy for you. Sounds like you're living in a fairly isolated environment. But I can assure you that uv is worth a lot of fussing about, it's making a lot of our lives a lot easier.
Virtual environments alone are not enough. They don't guarantee deterministic builds. What do you do to ensure that your production environment runs the same code as your local dev environment? How do you solve that problem without dependency managers like uv or poetry?
However things will change, either at home or at work so you need to balance those out.
When I started out I had this misplaced sense of loyalty to my first job I liked and it really held me back, they paid really low wages but for some reason I felt lucky to work there.
I changed my mindset and realised I’m selling my time to them so I might as well get the best return on my time in both compensation and enjoyment.
The bottom line is you don’t have to except poor pay, bad culture and boring work. You’re in control of your life.
EDIT
Also don’t be scared to ask for a pay rise or bonus. I make a point of doing it at each review and I check its progress in most one to ones. At the end of the day its your responsibility to get paid, you’re employer not matter how good they are us always going to try and save on opex, do you need to take ownership and make sure you’re getting paid what makes you happy.
reply