Rust 2021: Confidence
#rust2020— 7 min
It is that time of year again. The Rust Team is soliciting ideas about rusts roadmap for the next years, so here goes mine.
Thinking about the tagline I would give the coming editions, it is this:
- Rust 2015: Stability
- Rust 2018: Productivity
- Rust 2021: Confidence
I will explain what this means for me, but lets digress a bit first
I would describe myself as a Rust developer by heart, but a TypeScript developer by profession. What does this mean?
Well, I have been watching the Rust project ever since the 2010 Mozilla Summit, when Graydon Hoare presented a new programming language in a small overcrowded room full of curious developers. (Was this the first ever public announcement? I’m not sure…)
I have been following along since Rust still had a
libuv-based runtime, and
the syntax was full of strange sigils.
And I am super excited about the progress made since then, and all the great
things the language itself, and especially the community have done.
But there is one problem though: So far, I have been mostly idly standing by, since apart from some tiny PRs here and there, I don’t really write any serious Rust. Why is that?
The social perspective
Well, simply put, there haven’t been any real employment opportunities so far. I feel that, so far, Rust has been a kind-of grassroots, bottom-up movement. Most developers I meet have at least heard of Rust, and some are also actively experimenting with it. But so far I have only met resistance when talking about Rust to potential employers.
As developers, I would say we have an intrinsic urge to try and experiment with exciting new tech. Companies have other priorities.
It is only now that I start to see demand from enterprise for engineers that are working with Rust. However, it is still far from where I would like it to be. I see a few reasons for that, and most of them have to do with confidence. Over my professional career, I have mostly worked in smaller companies or teams, around 2-5 people. Only recently have I been part of a larger team of 15-20 engineers, spread across multiple countries, with a diverse set of backgrounds and skills. I was in a lead position, mostly focused on product quality, developer happiness and mentoring. One internal challenge was to gradually introduce static typing in the form of TypeScript, and to teach and educate the rest of the team, and seeing the challenges others have with it. I would also like to thank my former colleagues for all the great feedback I got :-) While I haven’t done any direct management duties, I have learned a lot about the bigger picture.
See, one priority of a company focused on a longtime project is to actually find engineers that can maintain a projects over years to come, and to deliver features in a timely fashion with a reasonable quality.
For other languages, there is a huge pool of engineers to hire from, but I do have the feeling that most of them are quite novice. The cynic in me says that, well, companies get what they pay for. And the salaries here in Vienna are not that great, with most companies not willing to pay good money for good engineers.
There is a joke about Java, that it makes both experts and novice engineers into mediocre engineers. I do feel the same about the JS community by now, where it is very easy to find some engineers, but really hard to find truely good ones.
I am hopeful that this will be different with Rust. I just have the feeling that both the language itself, as well as the larger community produce some really high quality software, and just do things right. There is a lot of inspiration that I take from the Rust ecosystem that I try to apply to TypeScript where possible.
I do feel that knowing/following Rust has made me a better developer in general. And this is the hope that I have for the future; that Rust empowers people to become better.
Instead of lamenting the steep learning curve, and fighting the compiler, we should rather see it as an opportunity to become better engineers.
Hm, I might have digressed a little. The point I wanted to make is that companies need to have the confidence to find great talent that works with Rust, and to have the confidence that betting on Rust is a good choice. As developer, I want to have the confidence that learning Rust is a great investment. That there are good employment opportunities, and that learning Rust actually makes me a better engineer :-)
And well… maybe employers will someday realize they need to pay good salaries to get good people :-)
The ecosystem perspective
From the ecosystem perspective, I can still see that large parts of it are still very immature and experimental. It is not as bad as JS, where there are memes about having a new framework every day of the week. For some usecases though, I feel there is just too much choice right now.
I want to be confident that the framework / library that I pick will be well supported in the future, and that it is high quality.
I also want to be confident that whatever I do is correct. Here, it is very important to have good defaults.
One specific thing I can point out that can be improved here is
optimization. I see quite a few guides about this, which mess with compiler flags
and a variety of external tools to make wasm binaries smaller.
TBH, I don’t feel confident doing all that by hand. I want wasm code be optimal
by default, and to integrate well into the host systems exception mechanism etc.
The technical perspective
From a technical perspective, I feel that Rust is generally on the right track. Great progress has been made so far, and is still underway. Now it is just a matter of getting things over the finish line. I will just dump a list of projects here that are already well defined and I’m excited to read more progress on them: rust-analyzer, salsa, demand-driven compiler, chalk, polonius, async in traits, wasi, wasm interface types, etc…
I would like to thank the Rust teams that have recently started to give regular status updates. It is really great to follow along!
Also, please do take your time! Good things need time! I wish for the Rust developers to be confident in being able to deliver high quality features when they are ready, without any time pressure :-)
I want Rust to become the obvious choice when deciding on the technology for a new project or a rewrite.
For this, I wish that enterprises can be confident to find good talent, to be confident that the libraries and frameworks they choose are high quality and well maintained. I want both newcomer and experienced developers to be confident that learning Rust is a great investment, and have the confidence that they might find employment working with Rust.
Looking into the future, I hope that by 2021, rust will be mainstream, and not only a niche thing that only enthusiasts know about.