Rust With Via - Teaching Rust to Python Developers

This website contains complementary material for Comprehensive Rust, an excellent Rust course developed by the Android team at Google. It is based on the changes we made to the course while running it at Via to make it more suitable for our Python-centric team.

Why We Offered This Course?

Our decision to offer this course stemmed from a desire to promote Rust adoption within Via - enhancing our quality of work and developing our engineers skills set. We believe Rust's unique combination of performance, safety, and focus on resilient software aligns perfectly with our organizational goals. By familiarizing our colleagues with Rust, we aimed to inspire them to explore its potential and consider incorporating it into their projects.

We structured the course around three primary objectives:

  1. Demonstrate Rust's value: We highlighted Rust's rich type system, strong performance, and modern tooling. We also showcased how Rust's emphasis on safety can help identify and prevent bugs earlier in the development process.

  2. Show that while Rust has its complexities, building reliable and performant software with it is, contrary to common misconceptions, certainly achievable.

  3. Build confidence and motivation: We aimed to equip our team with the knowledge and skills necessary to be ready to incorporate Rust into their work, and feel excited about it.

Tailoring the Course for Python Developers

The course was attended by approximately 15 developers from our algorithms group. Given their extensive experience with Python, and the fact the the original course seems more oriented towards C++ developers, we made several adjustments to the original curriculum. Most notably, we added a dedicated section and an exercise on using pyo3 to create native Python extensions. Additionally, we replaced some of the exercises with problems that were more relevant to our team's work.

To enhance the learning experience, we encouraged students to use VSCode as their development environment. We spent time setting up VSCode with essential tools like rust analyzer, clippy, and rustfmt to streamline their workflow.

Outcomes

At the conclusion of the workshop, we conducted a survey to gather feedback from the participants. The results were very positive, with 90% of respondents expressing a desire to use Rust in their projects and 75% feeling confident in their ability to do so with appropriate guidance.

Since then, several engineers have started using Rust in their projects, and we have concrete plans to significantly increase our Rust codebase in the coming months.

We hope the materials on this site prove helpful and inspire you and your team to dive deeper into Rust. Happy coding!