Rust And Evangelism
Tuesday the 27th of July 2021
In most of my technical-focused social circles I frequently extol the advantages and awesomeness of Rust. This is not uncommon, to the point that the so called "Rust Evangelism Strike Force" it is a meme in much of the software development world. This is either a good thing or a bad thing depending on who you speak to. However there is a specific reason why I generally feel uncomfortable evangelizing Rust and that reason applies to a great many things. I want to speak more generally and use Rust as an example.
Let me make it clear that I f-ing love Rust. If not then I wouldn't be able to use Rust as an example here. All of my serious projects over the past few years are in Rust. When I needed to build a static blog generator, used for this very blog post, I reached for Rust without a second thought. There is very clearly a reason that Rust has by far and away taken over my entire development ecosystem. Out of the seven or so languages which I have used to write non-trivial projects in, Rust makes the best set of trade-offs for my personal taste.
There was once a time where I would proudly proclaim my Linux usage in various account bios, message signatures, ect. I used to loudly extol to Godot game engine whenever discussions about game creation came up, especially to friends already using other engines. In short I tied my online personality to these specific tools. I didn't just use them, to any outside perspective they were a part of who I was online.
The important context is that everything is a tool and that no one tool is perfect for everything. Tying yourself to a specific tool is to set yourself up for failure. When I was much younger I restricted myself to only using Python. It was the first language I had learned as an 11y-old and gosh darn it if young me wasn't proud to be a quote-on-quote "Python programmer". Now looking back at that I can pretty clearly see that I lost several years of potential improvement as a developer because Python was simply the wrong tool for everything I tried to do.
As humans we seem to be hardwired to group ourselves. We have in-groups and out-groups. We have us vs them. We have the people like me and the people not like me. It's comfortable to be able to label ourselves with other like individuals. "I'm a Rustacean," or "I'm a Python developer," or "I'm a frontend developer." You might have specific tools which you are most comfortable and familiar with, but they do not define you.
Looking back at the tools I've mentioned; I still use Python to script some basic things like generating source code, Linux is my daily driver OS ecosystem on multiple devices and likely will remain that way for many more years, I don't actively use Godot anymore, and I have a heck of a lot more Rust code to write. Over the past few months I've started building up a core game codebase in Rust which I envision to carry around for many projects over many years and I am extremely happy with my choice in Rust.
As mentioned earlier Rust makes specific trade-offs which make sense for the project I build and my own personal taste. If you're starting something that I think Rust would probably be a good choice for then I'll probably mention it. If someone is ever having issues with a specific tool which could be avoided by using something else then I'll probably mention that too. My hope is just that we can have a more nuanced discussion rather than over-hyping any specific tool as the one true way.