Starting Rust: Not as Tough as You Think
I recently started learning Rust and wanted to share my experience to encourage others who might be hesitant about its perceived difficulty. The notion that Rust is a tough language puts people from even trying, including my past self. This is particularly relevant for those who, like me, have primarily worked with GC'd languages (I've only ever completed one semester course in C++ and never used it professionally).
For me, the learning curve for Rust wasn't as steep as it was for other programming paradigms I've used extensively, such as logic or pure functional programming. It only took me an evening or two to get somewhat comfortable with Rust, and within a week I was able to finish the book and complete a couple of projects. What made the transition smoother was the excellent "onboarding". The "Rust book" is phenomenal, and tools like rustlings help drive the point home when just reading isn't enough. Additionally, using clippy on your first projects to review suggestions (and especially to read the links/reasoning) can quickly guide you towards the proper idioms.
So, is my experience unique? I suspect that Rust often appears daunting because it's frequently used in complex areas like systems programming. However, for more typical problems, I don’t find it any more challenging than its counterparts, especially when striving for a similar level of correctness. Sure, Python and Java can get a result faster but Rust eliminates a whole class of runtime errors (looking at you null pointer exception...). I didn’t learn Rust for systems programming; my focus has been on what I do for a living: data engineering, backend, MLops, embedded ML and similar.
I don't think it's an overkill in any of these in my opinion. You typically need a complement to your typical Python + JS and Rust fits the bill better than say C# or Java. The ease of deployment, tooling and unambiguity are a breath of fresh air.
My message to those on the fence: Don't let the fear of difficulty stop you. Just dive in and start learning Rust. It’s quite manageable and definitely rewarding.
(note: As someone coming from a background in Scala immutable designs, errors-as-values, traits/typeclasses, algebraic data types, and functional combinators, were familiar so I didn't have to learn those from scratch.)