Working as a Rust dev
from to on 19 Jan 2024 17:24

What essential skills/knowledge would you say are/is required to work as a Rust dev?

I did couple of small/mediumish personal projects in Rust using axum with sea-orm and later tauri with leptos. That’s on top of many years of experience working as a Java/Javascript dev and occasionally touching things like Python or Flutter. Most of things like databases and web stuff is transferable but what strictly Rust concepts are required to work as a Rust dev? In what fields it’s used the most?

#rust on 19 Jan 2024 17:55 next collapse
  1. Rust knowledge
  2. depends on which area you want to work in on 19 Jan 2024 21:23 collapse

I never worked on low level stuff so I think my best chance is web/desktop stuff. Any specific technologies that are getting popular in companies? on 19 Jan 2024 22:54 collapse

May want to look at computation, so stuff like Rayon. We almost built a compute-heavy part of our web-app in Rust (rest is in Python), and I’d guess a lot of others do the same. on 19 Jan 2024 18:36 next collapse

Hey, you’re on a similar path to me. I’ve been on a Rust job for the past year.

Being a general-purpose programming language Rust can be used in a lot of contexts. The work I’m doing is all API server stuff, which I’m sure you already have a solid background in. There are some niches where Rust stands out that might be worth studying depending on your interest, but none of these are essential to Rust work generally.

  • Crypto startups seem to be enthusiastic adopters of Rust. It’s not an area I want to get into personally, but this is likely the fastest path to a Rust job.
  • Rust is probably the best language for compiling to WASM for running in browsers, in lightweight server-less functions, and as plugins. That could dovetail with your frontend experience. Although it’s a bit of an uphill battle to argue for WASM over Javascript in these cases.
  • Rust makes an appealing choice for embedded programming as a safer alternative to C. This kind of work involves learning to program with nostd, and learning about controlling hardware.
  • In non-embedded systems low-level pieces like device drivers are another good candidate for Rust. on 19 Jan 2024 21:37 next collapse

It all depends on what part you want to work with. But some understanding of the close to hardware aspects of rust wouldn’t hurt, comes in handy for debugging and optimising.

But I say that as somone who has a background (and job) in hard realtime c++ (writing control software for industrial vehicles). We recently did our first Rust project as a test at work though! I hope there will be more. But the question then becomes how to teach 200+ devs (over time, gradually presumably). For now it is just like 3 of us who know rust and are pushing for this and a few more that are interested. on 19 Jan 2024 22:09 next collapse

Necessary skills:

  • Development processes: advanced git usage (like fixing history after a bad rebase, merging multiple completely divergent branches, etc), issue tracking
  • Devops: continuous integration, continuous deployment, Docker (also, how to build your own Docker images out of Rust projects), Kubernetes
  • Social: how to interact with coworkers without creating enemies for life on 21 Jan 2024 17:30 collapse

Don’t forget debugging! Throughout my carreer, I never really forced myself to just go with debugger (especially since when games are considered, where you are dealing with tens of instances running the same Update, so manual breakpoints are usually harder to use than just scrolling through printed values in a lof) and over-relied on debug logging.

It was a mistake, and took me several years to realize that conditional breakpoints are a thing. And once you get into profiling, memory optimization and what-not, you will be greatefull that you’ve spend the time getting comfortable with all the debugging tools you can use.

Trying to learn a debugger or profiler as you go through solving a problem at a job sucks. Am currently in the process of having to debug and solve shader performance issue, and oh boy that’s a lot of terms and tools I’ve never seen before, and most of the colleagues are as dumbfounded as I am, since when porting games you usually don’t need to deal with low-level rendering. on 21 Jan 2024 21:59 collapse

I’m comfortable with debugging, but I rarely use it with Rust. With the language being so strict in everything, it’s clear most of the time what’s happening, and most situations can be resolved by simple logging of variables.

In JavaScript, I have to use the debugger all the time, since variables can get some really weird invalid values with the completely wrong type. on 22 Jan 2024 01:54 collapse

That’s my favorite part about rust. Each step of the program is so well defined. No wondering if something will be uninitialized, throw, be null, or worse, what type of data you are working with in the first place. The option and result types have made working in languages without them a slog. on 22 Jan 07:14 collapse

Like other programming languages there are no general answers. Im currently doing Bioinformatics, learning Rust was the easiest part.

One of my friends is doing DevOps in Rust within the crypto world. I don’t even know half the words he is using to describe his work.