Is Rust really for me?
Tags: mindset, reflection, rust
Published: 2024-03-17 00:18:09

---
title: Is Rust really for me?
published: true
date: 2024-03-16 15:46:28 UTC
tags: mindset,reflection,rust
canonical_url: https://oxidequest.com/is-rust-really-for-me/
---

This isn’t the first post for a blog named “Oxide Quest” I was expecting to write. But here we are, so let’s roll with it!


>This article is purely focused on the personal and introspective. It isn’t about if Rust is a good fit for a team, a company or a startup.

I tend to overthink things sometimes. I’m well aware of that at this point in my professional career. Over time, I’ve learned to counter that healthily, eventually reaching a suitable solution.

> Is Rust worth going all in?

A question I’ve been trying to answer for myself for a while now. It is a strangely personal question that ends up asking “Do I know myself?”. Also let me clarify - _go all in_ for backend and anything system, not front ends. Productivity and developer experience wise it’s just nowhere near the JS/TS ecosystem. I’d rather pick battles that make sense. Maybe some day it would be viable to do it all in Rust, or maybe not.

When I say _“Is Rust really for me?”_ I don’t mean the “syntax complexity”, borrow checker, lifetimes or all that. Those things while hard “just” take time using, like any other language. It’s the power of Rust that scares me. Do I really need all of that? The times where I’m doing novel things are few and far between. Is the (perceived?) price worth paying? Then again, the power is what draws to the language. The psychology of a Rust dev. Let’s explore!

## Why it's not for me

Let's start off with the negatives.

### Everything is way to verbose

I mean - it’s an obvious downside. Especially when I’m not doing work that this helps me reason about the problem. Slinging API endpoints or doing some CLI tooling I don’t really care about most of it. The problems are not rocket science, and Rust does make everything _feel_ almost a few times more complicated than it is. I’ve started catching myself thinking something is complicated and then doing a mental note that, in fact, this is the same thing I would be doing in any other language. It just looks scarier, more dense.

On the surface, this looks like a rather _surface_ level argument. But I think it adds up. I can see it wasting mental cycles going over long signatures. Is this a skill issue? Don’t think so. The problem isn’t understanding what the code does, you can build up domain knowledge over time. It’s the _parsing_ of all that syntax all the time. Maybe after years of “intense” Rust, it becomes second nature.

### Slower iteration speed

This one might be another potential skill issue, although I’d argue the language itself enforces more rigor when developing. The upside is going to come in the next section, downside is slower speed of development. Not in just pure symbols typed, but also approaching the problem. From my experience so far, just doing the happy path is harder and somehow feels wrong in Rust.

This one specifically I can see diminishing over time.

### Pure Power

How can this be bad?!

Well, imagine anything you think of becomes reality at the speed of thought. This is an extreme example, but helpful.

With the flexibility and power Rust gives, it’s up to my skill and imagination to find the limits. This is both a blessing and a curse. This might be a completely different topic, but I get the feeling that this in specific requires a much higher skill level in order to reign in the abstractions to the correct levels. The skill to do the abstractions is one, a different one is required to apply judgement and taste. To harness the pure power into a form for maximum impact.

This needs to be a conscious choice.

Counter point: I could _only_ write _“simple Rust”_. Yeah, no, that’s not why I’m considering Rust. To be fair, there is a high probability most of the code is “simple Rust“, but that would be more because of the practicality of it and not some rule I make up and adhere to.

### Other people's mental models

Writing code, contrary to popular (meme) belief, always involves interacting with other people. The unfortunate consequence of all the above is that now every library and framework is a custom tailored representation of it’s author’s mental models. Yeah.

IMHO this is why (almost) everything in Rust looks a few times more intimidating than in any other language.

Maybe over time, this converges into some standards. Winners emerge in the library/framework space and it’s just a onetime investment for a few years’ worth of usage.

Not the end of the world, but it is an inconvenience for sure.

### Ecosystem is still new

It’s growing daily, but it’s still rough.

The libraries might kind of be there, but the documentation is rough. Going into the source code to understand how to use it is an excellent skill, but still slows me down.

Low key could be in the positive column, but it’s one of those things that I do because I have to, not want to and it ends up giving me skill ups.

A classic tale of doing hard things makes you better. (What doesn’t kill me makes me stronger?). I’m still grumpy when the docs are crap.

## Why it's for me

### Pure Power

Power is alluring && Writing code is literal magic =>  
Rust = one of the most powerful forms of magic =>  
Me = Grand Magus  
  
I jest, I jest. (kind of)

Seriously though, If you’ve written some Rust, you know what I mean. It’s a language that, if you invest in, will give you back power in spades. This doesn’t apply to most languages. A lot of times there is a ceiling and diminishing returns. To be fair, there isn’t much I want to put into this section. I think the name describes it all. Enumerating all the different ways is pointless. I don’t think anyone would argue that Rust doesn’t give you power. Here's the thing: you _feel_ power rather than know it.

### High skill ceiling

### 

> **Skill Ceiling** : This term typically refers to the absolute highest level of skill achievable in a game or activity. It represents the theoretical limit of what the best players can achieve. The skill ceiling is often used to discuss the complexity or depth of a game, indicating how much room there is for a player to improve.

It’s not about _feeling_ smart, it’s about the skills and what they allow you to do.

This point goes hand in hand with the one above. Let me elaborate.

Some languages have a low skill ceiling and give you a decent amount of power for it. Most popular languages have a somewhat mid-level skill cap that provides a good tradeoff between skill/productivity. Rust doesn’t fall into that category.

_There was a time when_ .. I used to do lots of JS (then TS). Spending time to learn the language(s) themselves in depth, spending time on functional programming paradigms - there is only so much return on investment. After a while, I hit diminishing returns and it started to feel like I’m fighting the language instead. Language design decisions cap the skill level.

Here we find ourselves at one of those crossroads. High skill ceiling or low skill ceiling preference for the language of choice depends very much on _how_ you enjoy your programming. Knowledge of that only comes through experience, reflection, and introspection.

For me - I like to make progress, move forward, get better at my craft. Rust’s high skill ceiling can allow me to scratch that itch whenever I feel like it. Not every day, all day, but sometimes. Most of the time I imagine my skill level will slowly grow, but there are those times when you just feel like implementing a distributed key/value store or rewriting some library into the most performant version it can be. And you know what, all the passive skill ups you’ve picked up so far - it will make it that much more fun to grow into it.

Mind you, this assumes a level at which I can do the things I already want.

High skill ceiling = optionality

Should I choose to do so, I always have room to grow.

Lastly, the power the language gives you and your skill _have the potential_ to grow together. It’s never a given, but the possibility exists and that puts Rust in the category of languages where that’s possible.

### Forces me to think more

This one goes into the positive column for me. Whenever I encounter a problem, it challenges my understanding of the problem upfront, and at every step, I need to be more aware of the choices I make.

On the flip side, some time will need to be spent developing a _protyping Rust style_ for experimentation.

### A bet worth making

Time flies by. If we are 5, 10, 15 years into the future, would I regret picking up Rust and sinking time into it?

Hard to tell, but I don’t see why _I_ would regret it. Most of the time, regrets come from what you’ve not done. Knowing what I know, I’d probably wish I spent more time with Rust.

### Allows me to write software I'm proud of

I’ve written enough code in my time. Writing in Rust the code is the most accurate expression of what I meant it to be. It’s a really hard concept to try and explain.

It probably has to do with the expressiveness of the language combined with it’s limitations that just clicks.

The feeling of completing something and thinking “job well done”.

## _Wild speculation_

Bonus section: _100% tinfoil._ Adding this for the funzies, take with _lots of salt_.

### Cognitive ability

Picking simple things is a self own long term, it breeds laziness. Keeping good cognitive ability as one ages requires constant challenges. Believing you're old now and can’t do difficult things denies hormetic stress to the brain. Giving up is the road to an early grave. Rust’s difficulty here is a plus, add working in TS/React/<new thing> in the frontend and you have some switching to do. I remember studies that learning guitar is good for your brain. Would be cool if someone did something like that for programming languages. (_Mind you, this has no bearing on how "good" the language is based on what it was created to achieve, just a side effect._)

### Doing things you don't want to do is good for you

It can be argued even if you like Rust for a lot of things, some things you just don’t want to do. Good news, it’s a feature, not a bug now. Checkout[this clip from David Goggins & Dr. Andrew Huberman](https://www.youtube.com/watch?v=84dYijIpWjQ&ref=oxidequest.com) discussing how doing things you hate potentially increases an area in the brain responsible for willpower and longevity. Haters will say it's too good to be true =).

### Keeps you humble

Rust is a sledgehammer and your ego is made of glass. People who don’t challenge themselves grow arrogant from ignorance. Choose pain, its organic food for your character.

* * *

And finally, we’ve come to the end. Let me tell you a secret. I didn’t start writing this in order to write a blog post or convince anyone; I started writing because I needed to resolve this for myself.

Am I a certified Rust fanatic now, then? No my friends, I’m a _Rust enjoyer_ ;)

Life is full of interesting things to discover and have fun with. If I was a zealot, I wouldn’t have tried Rust.

I don’t want to leave you guessing as to the answer to the article:  
**Yes, Rust is definitely for me.**   
Not only because of the above, but much more, which maybe we’ll explore later on. The topics in this article, however, I feel are more deep ones, the kind that can shake one’s resolve. Having thought them over, my mind is now clear and the resolve strong.

_Oxide Quest_ is now a **main** quest!

And so it begins ...

![A tavern on top of a hill, where the adventure begins](https://oxidequest.com/content/images/2024/03/oxide_quest_2.webp)