DEV Community

Ivan Zakutnii
Ivan Zakutnii

Posted on

I have tried to love Python

This isn't clickbait, seriously. I'm not here to trash Python, just sharing my thoughts.

For the past 9 months, I've been a Platform Engineer at a company that heavily utilizes Python, and it’s not confidential, we are hiring.

This isn't my first rodeo with Python. In fact, I have quite warm story with this programming language.

It was essentially my first language, learning to code with it by solving Leetcode-like problems and studying courses on algorithms and data structures, also in Python.

That was a great time, no regrets.

Despite Python being dynamicly typed and not being able to encode an algorithm/structure "maturely" with allocs/mallocs like in C, its simplicity and expressiveness made it incredibly useful for jumping into CS, especially for beginners, like I was.

Because Python is good.

I loved Python

Actually, the first programming language I learned and wrote something in wasn’t Python, but rather JS (let’s not talk about school years because programming classes in schools in my country is a disaster).

Nevertheless, I referred to Python as my first programming language because I really did program a lot in it—various academic/learning stuff, small applied projects, scripts for automating routine tasks on my Linux PC, and during my time as a DBRE.

I dabbled in Django here and there, just a bit of everything.

I continued learning CS, programming paradigms, OOP, and I kept loving Python.

When I moved into DevOps, I was deepening my understanding of programming paradigms and getting to grips with the foundational pillars of "how things work."

That was the point in time when I embraced the holiness of static type systems, and overall, it fels like at this particular point of time I have formed the mindset and development path I should and want to follow.

Naturally, as I continued working in DevOps, I came across Go and started learning it.

I forgot Python

I started working as a DevOps engineer, not an SRE, mostly OPS.
unfortunately, there wasn’t much programming involved, and most of my work time was spent on CI/CD stuff, administering Kubernetes.

Bash Canceled

Almost at the beginning of this period, my son was born, and I didn't have much free time for side projects or significant programming, but all the free time I had continued to invest to studying Computer Science and Golang.

I fell in love with Go it almost immediatelly, its blend of simplicity and strictness.

Over time, as I had more "free time," I programmed some educational projects in Go, a few web apps, a few CLI's, a small k8s listener for cleaning up review environments.

I continued working as a Dev*OPS* engineer, dreaming of moving to full-time, or at least "more"-time software development.

Hello old friend

Eventually, I got the job I was looking for — a place where I could code more while still being in touch with infrastructure.

Because I still love infrastructure and DevOps; yeah — Platform Engineering. And all in Python.

I remember my first thoughts when I was getting ready for this job:

Damn, an interpreted language with a dynamic type system, do I... Want to write in Python?

I wanted to code more so badly that I absolutely didn't care what language I would be programming in at my next job, a job where I wouldn’t lose income and could do what I love.

I don't regret anything; these months I've learned a hell of a lot about Python compared to what I knew before.

I tried to love Python again

Before coming to my current position, I didn't know about and didn't use type annotations in Python.

I didn't know about the marvelous Pydantic; there was a lot I didn't know simply because I had never written anything really mature and big in Python, as I mentioned earlier, using it to learn programming, fundamental things in software design and other CS concepts.

I learned all this thanks to one person, and I'm grateful to him for everything. This is my onboarding buddy Stanislav Zmiev, and he really is good at Python.

Just stalk his LinkedIn

Well, of course, I can't now see Python without type annotations, I mean for big projects, and even medium ones — anything that's more than a script and has 2+ modules and is not covered by type annotations is abominable to me; I'm sorry, it just is.

This doesn't mean that I despise Python or hate it, or don't want to program in it at work, but I can't sincerely love it

I can't forget all the wonderful (and a few not so wonderful) experiences of programming in Golang. I can't close my eyes to the "interpretability" nature.

Simply put, I am not ready and will never be ready to dedicate my life to specializing in Python.

By dedicating my life, I mean programming only in Python, both at work and in side-projects.

Things get really hot

For the last few months, things have gotten really hot, so hot that I am now a Platform Team Leader. Hold my tea, I need to move some tickets.

It just turned out, I never aspired to this. But it is what it is, and it automatically means - I code less at work.

I still have free time for side projects, as I did before.

And here comes a really interesting thing that hit me just a few days ago:

For months, I racked my brain over the question, "Okay, what should I slap together in Python on GitHub, maybe this? Or that? Or start investing my time in this open-source project as a contributor? I want to code something interesting and usefull as side-hustle..."

But I was stalling. All this time, I was convinced that I was stalling because I didn't have enough free time, or because I was an inexperienced fool and couldn't figure out the Python codebase. Or because I am lazzy.

It is funny, lazzy, hehe...

Hell, no.

I just don't want to invest my most precious resource, which is free time — into programming in Python.

And that's unlikely to change.

I still am okay to write in it for money, not really matter.

My dear blue gopher, are you alive?

For almost a year, I didn't even look at what was happening with Golang, wrote nothing in it, didn't even read much news — I just didn't have time and was forcing my self in other stuff.

The language and its ecosystem seem really alive, and I'm sincerely glad about that.

I have a bunch of good ideas for side projects that I want to implement in Go, starting with simple and smaller ones, just to refresh my memory of the language (though is there much to remember?), and to get better at it.

Stas, I hope you're not mad at me if you're reading this, but knowing how you love Python and how you can be tempted by clickbaits — chances are there.

Don't smack me up.

Besides Stas, I'm surrounded by a whole bunch of incredibly talented and wonderful Python programmers, Python itself is remarkable in what it's remarkable for, and people codding in Python are just remarcable people.

I enjoy writing code in Python at work, and I repeat — I am not a Python hater, at least as long as there are type annotations...

But it's just not something that can penetrate my strictly typed, tough heart.

And unfortunately, I can't find in Python things that could melt in, things that aren't in Go, and that I would need.

Pure OOP? No, that's not one of.

But... Rust?

Ok, keep claws away.

I've tried, I don't want spare time here. At least for now.

I admire all the beauties of the Rust PL, but I am still quite disgusted by a few things.

I do know that with time you can live with it and get used to it.

Humans are really flexible things, but for now... I don't want to, and really can't see any big tradeoffs for me just to rush into Rust and spend a lot of time trying to surpass this huge steep learning curve.

I want to code things NOW in a statically typed compiled programming language that I already know well, let me code for God's sake.

Gopher is furry enough for me.


The message is simple, and it is not about Python or Go:

be kind to yourself and listen to yourself carefully.

In a mad rush to make only the "right" choices, it is really easy to lose the light inside.

It is easy to forget about impermanence and that there is never just one right choice.

Things may seem right and profitable at first, second, and even third glance...
Yet they still might not be right or truly profitable.

Sometimes, it might just not be your thing — without any analytical reasoning.

Python is no longer winner of my heart in both senses — based on my honest introspective experience and from just perspective.

Do what you love, live your life with joy, and love yourself.


Top comments (0)