Rust vs jury-rigged student experiments
„If you already know other programming languages, you might be tempted to just jump into it and learn while building some new project. Don't do it. Really. Rust is quite a bit different to other languages you might be used to.”
said Jakub Trąd who works at ANIXE as a Software Engineer programming in RUST.
Your Core Language is RUST. Why did you choose this unpopular language?
My story with Rust began 3 years ago. Well kinda, 3 years ago, I started learning Rust. I skimmed over the book and managed to write a Tic-Tac-Toe for the terminal. Then I decided I didn't like it and forgot about it. Roughly 1 year ago, I had a very good experience learning Haskell at University. The functional approach was intriguing, and it felt solid and complete, like nothing else. And I recalled a different language with some of Haskell's features, Rust! But this time around, I read through all the learning materials. And it clicked! At this time, I’d been working with C++ and C# for the previous 1.5 years, and in comparison, Rust felt revolutionary.
Rust made all the languages I've ever learned and used feel like jury-rigged student experiments. And Rust was a professional, well-designed and thought-out piece of technology.
What, from a developer’s perspective, is the most appealing part for you at ANIXE?
As far as I can tell, ANIXE started using Rust roughly 4-5 years ago. That makes it a very early adopter of this technology. As a Rust developer, it's a massive learning opportunity.
As a software developer in general, I really enjoy the practical approach. Even the hiring process consisted of a practical task, followed by an in-office short assignment and an in-person interview. Which, simple as it sounds, is a refreshing alternative to a general knowledge quiz and a silly technical interview that focuses on language gotchas or abstract algorithmic knowledge.
What do you feel are the bigger challenges in your work?
Definitely domain knowledge. It's hard to put into words all the intricacies of the tourism industry. In a “simple” book a stay in a hotel, so many things have to happen. Many different parties have to communicate and agree to even allow you to see an offer. And there are more complex circumstances: the considerations of time zones, time zone changes, different policies regarding cancellation, various meal types, a bunch of additional services like excursions or transfers, and so much more…
After 8 months at ANIXE, I still feel like I'm working in a tight bubble of prices and bookings, and I don't really have to concern myself with everything outside of it. But I do feel this looming terror of a centuries-old industry over the horizon.
What do you enjoy doing after work in order to recharge your batteries?
Video games have always been a big part of my life - and they continue to be so now. Especially during the pandemic. But not just playing them; I also dabble every now and then in amateur game dev ventures - and learning about game dev in general.
Perhaps surprisingly, I also enjoy programming after work. I mostly enjoy writing small tools and proof-of-concept programs as a distraction from the large and intertwined projects that I deal with at work.
And finally, as probably most people in ANIXE, I enjoy travelling occasionally. And I'm already making plans for the post-pandemic world.
Why should developers choose Rust?
Rust is always a hard sell for me because I just want to say "because it's fantastic". But that doesn't really say anything useful.
Rust is a great choice if you need performance. It's a compiled language, meaning performance-wise, it's on par with languages like C or C++. But it's also a modern language, which allows you to write programs that are memory safe. It provides you with an integrated build and package management system - so including libraries is easy (sometimes too easy). It has a built-in test framework - and test-driven development is a big part of Rust's philosophy. For me, it has also been a very educational experience - many languages allow you to do things and not care about consequences, but not in Rust! Do you feel like opening and reading the contents of a file? Good, now you have to handle or explicitly ignore everything that may go wrong. Does the file in question exist? Do you have permission to read from it? Is the path to the file a valid path at all? This does make development slightly slower - but only slightly because the time you lose writing code will be overshadowed by all the time you gain not having to worry about or track bizarre errors or edge cases.
Rust is also a great choice if you need to write programs which are safe. By that, I mean memory safe. But that's good because it turns out that the majority of all security-related bugs (~70% for the Chromium project, don't quote me on that) are, in fact, memory safety bugs! Rust was designed primarily for this very reason. And it delivers. At the time of writing this, all the FANG companies have displayed an interest in or have started building projects using Rust.
Do you have any advice for programmers who want to start their adventure with RUST?
Read "The Book". If you already know other programming languages, you might be tempted to just jump into it and learn while building some new project. Don't do it. Really. Rust is quite a bit different to languages you might be used to. Especially if you're coming from object-oriented or dynamic languages, coming from object-oriented language, you'll try to do things in ways that work very poorly in Rust - there's no inheritance, no introspection, and dependency injection is probably a bad idea. You'll keep fighting the borrow checker, and in general, the experience will be far from enjoyable.
If you've worked with dynamic languages, you'll have to come to terms with types and lifetimes at the same time.
On the other hand, if you read the book, you'll get a solid grasp of Rust's concepts. You'll still have to get used to working with Rust, but you'll avoid the initial shock of the language working against you. And "The Book" is really well written.