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!
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 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 ...
Member discussion