Rust in 2020: Learning
By: Austin Tindle
Tags: Programming, Web Development, Learning To Code, Rust, Webassembly

Photo by David Pennington on Unsplash

This post is a response to the Rust core team’s call for blogs. It will outline some of my thoughts about learning the Rust Programming Language, and how I think 2020 should be a year focused on adding to the quantity and quality of learning resources available.

I don’t yet consider myself a real Rust programmer but the A call for blogs 2020 put forward by the core team is open to “anyone and everyone”, so I’ll lay out what I think about the process of learning Rust, and my experience thus far.

Rust has some fantastic “first party” resources for learning the language. The Rust Book, Rust by Example, and the Rust documentation are all stand-out examples of written learning resources created by a programming language community. It seems like a simple concept, but having official learning resources maintained by some of the same people who work on the language itself is a great idea. The fact that these documents are also free and available on lots of different devices is incredible. Additionally, Rust programming books written and published traditionally are climbing in number and quality. Fullstack Rust, Rust in Action are two project-focused books I’ve worked through, and there are several others that are a bit older. However, while the official living ebooks and the wider book marketplace are great, when we look at practical, project-based, and video content, things start to break down.

Like many others, I’m continuously refining my process for learning new material. Personally, I’ve had success with alternating the type of learning material I’m using, from books and articles to video courses and projects/exercises. While the alternative learning material I’ve used for Rust has thus far been superb, there isn’t a whole lot of it. If you’ve learned Rust in the last couple of years, the following resources might be familiar:

This is certainly not an exhaustive list, but it is a good sampling of some of the better video-based or practical resources for learning Rust, ranging from the very beginner-friendly rustlings course to Philipp Oppermann’s blog_os project. These resources are great, for the most part. However, there are two main issues that I think need solving:

There aren’t enough alternative resources (not long-form writing) While the above isn’t the complete list of learning resources, it is a good chunk of the high-quality stuff available. We need more like them. In my opinion, Rust in Motion is the most promising resource to come out recently. The quality is excellent for a video-based resource, and Manning’s system for closed-captioning is awesome. But, the course is very limited in scope and doesn’t seem to have a ton of practical/example-driven content. As shown by the recency of resources like Rust in Motion, this is partly a product of Rust’s youth, but I still think it’s worth calling out. There are no clear learning roadmaps This could be a product of my JavaScript upbringing, but something that seems to be missing from Rust’s learning resources that I was happy to have while learning JavaScript are the relatively clear roadmaps for gaining specific competencies in the JavaScript/web ecosystem. Things like web API development, mobile app development, web application development, general purpose scripting, etc., all have popular tools and best practices, and robust (or at least plentiful) learning resources to go along with them. The Rust programming language has some very clear, specific use-cases (Systems programming, embedded programming, Web Assembly, CLI tools, general purpose scripting), but the Rust community does not yet have lots of specific learning resources for those cases that are not long-form written content. Again, this is mostly due to how young Rust is, but a very important step forward for introducing Rust to new programmers is to have resources for learning how to solve specific problems with the language.

Rust is not an easy programming language to learn. As a primarily JavaScript developer, learning the Rust language has been a hard process. While I don’t think that is a bad thing, or needs to change, I do think we can ease some of the burden for new learners by improving the diversity of the resources available. The syntax, the idioms, the best practices, and the concepts that Rust uses are hard to learn, but we should do as much as possible to remove the arbitrary difficulty introduced by having to do a lot of the non-fundamental learning through a lot of trial and error.

I’m not sure if the theme of ‘Learning’ is an applicable 2021 edition goal, but I do think we should all work toward improving the learning ecosystem in Rust during 2020.