My Rust Story or: How I Learned to Stop Worrying and Love Rust

Premise

This is a post I’ve been procrastinating for the longest time. Because of an aversion to what modern exposure dictates mixed with “who would care about this anyway?!”.

So, why now? As I’m actively pursuing knowledge in Software Engineering with a focus on idiomatic Rust - hoping to pivot my career at 50 - I may as well document my journey. Despite the aforesaid aversion, the very welcoming and inclusive Rust community makes me feel like sharing again. Like in the Internet days of yore.

Apologies for taking the long way round. I believe the full story helps delivering the Kubrickian title metaphor. Having said that, I tried summarizing every step of the way as much as possible, to keep this reading as brief and as entertaining as possible.

The very beginning

I’ll summarize a typical excursus for Gen X’er software engineers: chronologically apt for the microcomputers’ revolution; learned programming with BASIC; pursued STEM education; majored in Computer Science. Except, I didn’t. This is not my story.

I did have an SEGA SC-3000 and, years apart, a Nintendo NES. My parents gifted me both, to stop me from squandering money at the arcades. I was an avid coins hunter. As far as gaming was concerned, I was all in with the microcomputers and the video games revolutions. At times, playing truant to spend a morning at arcades in the big city. Or at a C64 friend’s to play hot new ones, from freshly copied cassettes.

I can’t say I met any other aspect of microcomputers with the same enthusiasm. At least, this is what I can recall, decades later, at the best of my memory abilities. I do remember, with a high degree of certainty, that this was true for BASIC, though. I toyed with it and I wasn’t attracted to it. No transformation on the road to RAMascus.

First fascinations

Many years later: my first fascinations with programming belong with AppleScript, Flash, and PHP. Respectively: 1) opening up my curiosity with a language even I could understand; 2) for fun animations and websites to feed one more creative alley; and 3) “what the hell is this trickery on this website! I’ve gotta learn how to do this!”

That said: “the Impostor Syndrome is strong with this one”. So, no dice. Yeah, nah.

This thing called Linux

Combine the lack of STEM education1 and the impostor syndrome, and you can understand why it felt like I had no choice but to learn Linux, systems, and servers administration instead2. It felt like I could never fill my knowledge gaps in Software Engineering. Unless I had proper math and Computer Science education. On the other hand, thanks to Open Source’s nature, night dwelling on IRC, with logic and hard work; this felt more like a path I could master. I just needed a server or two.

So, I did. At the end of my hospitality career, I worked as a fishmonger with my family, while I self-taught Linux and system administration. Early morning. Open-air market. Lunch. Shower. Study hard. Hack away. Drop dead. Rinse and repeat.

Why don’t you listen?

Right at the very beginning of my IT career, I did Windows Help Desk. The irony. I hadn’t done all that hard work to work with Windows. I started looking around. I did my first job interview. It could have proven revealing. Life changing, in hindsight. Because of one particular hypothetical scenario. I can’t recall the exact details, and it went something along these lines (this was some time before the iPhone revolution):

Suppose you launch a cellphone. Would you like to build it or to make it work?

Being an HSP - genuinely interested in most things and longing to delve deep into everything - I answered “both”, trying to reason holistically. Alas, I didn’t grok the true nature of this hypothetical. Nor the subtle guidance they were kindly offering. Eventually, they forced me to choose. So, I chose “make it work” over “build it”. They had tried to make me realize I was better disposed toward software engineering.

That said: “the Impostor Syndrome is strong with this one”. So, no dice. Yeah, nah.

A Linux career

Thus, I kept my job with the company that first hired me. I asked for a Linux job and, when the Windows Help Desk contract expired, I obtained my first junior position. Nothing too fancy, but it was a good start. In the years that followed, I worked at great companies and loved each experience, both in Milan, Italy; and in Bristol, UK.

In a nutshell, it never felt completely fulfilling. I experienced stalling and burn out. Twice. Both times I went on to attempt pursuing a creative career as professional Sound Designer. Because pursuing a musician career, despite interest from indie labels and moderate success, filled all but one of Ikigai’s aspects. Take a guess.3

Guess which one...

Besides, “the Impostor Syndrome is strong with this one”. I don’t know music theory.

Giving back to Open Source

Since I had been initially drawn into - and loved - Open Source for its revolutionary ethos, philosophy, and philanthropy; I reached a point where I wanted to give back with more. More than what I was already doing with activism and education about the importance of Copyleft. I wanted to contribute code to open source projects.

I had to start from somewhere. I needed learning BASH for my system administrator position. So, I made a wrapper for a Dell firmware upgrade tool. At the time, I was close with Ruphy and as I started fantasizing about making it a KDE app. I asked for some guidance. That would have meant learning C++ and Qt. That was short-lived. Perhaps, I had to slow down and learn something within my abilities. Some time later, I tried learning Ruby. After even some more time, I learned some Python4.

That said: “the Impostor Syndrome is strong with this one”. So, no dice. Yeah, nah.

Learning web development

After the second burn out and attempt at professional sound design, I decided to go back to IT. As a web developer this time. Since I love crafting UIs, UXs, and websites. I’ve learned HTML, CSS, SCSS, and some JavaScript5. Until I fell in love with Elm6.

While I appreciated being able to code my own ideas and websites, I felt unsatisfied and disillusioned with JavaScript. Plenty of console errors and warnings were not only widely accepted. This was going to be the norm. That I had to ignore it and live with this?! That didn’t sit right with me. Perhaps, web dev is not for me. After all.

On the other hand, Elm has great design baked in. Elm makes all the right choices. Elm has a great community and amazing tooling. Elm made me feel like I could code, for the first time in my life. With Elm, my brain finally clicked the right way. Eureka!

Lowest common denominator

Since I had fallen in love with Elm and Haskell, I yearned a functional programming job. Alas, my career with Elm or Haskell wasn’t going to be feasible. Elm still required JavaScript. For Haskell I lacked too much foundational knowledge. I wished someone had told me about functional programming way sooner. THAT I would have studied.

What now?! I still loved doing UIs and UXs. I had a couple of apps ideas to scratch. I had been Swift-curious since its announcement at WWDC 14. I enjoyed Swift7, like most languages before it, up to that certain point: Object-Oriented Programming.

My brain just can’t cope with OOP. I’m not wired that way. I cannot think that way. I understand OOP selling points theoretically, however, it feels very unnatural to me. What I loved about Elm, Haskell, and (purely) functional programming, among many other qualities, was the separation of concerns between data and functions.

That said, I still felt very stupid for not getting OOP, though. I was never going to be a software developer now, for sure. Too stupid for OOP. Too late and uneducated for FP.

Software development is not for me

Combine the story thus far laid out with the fact that OOP was the only way to do software and you can see why I was about to give it all up. Ready to be content with a dead-end job, poor but sexy, to stay afloat and pursue music and creativity. Ikigai?

Going back to system administration wasn’t an option, at this time. I was too severely, and repeatedly, burned out. Besides, this all certified that I wasn’t good enough for software development. Repeated failed attempts at a creative career, on top of it all.

Before throwing the towel, I decided to explore Rust and see what the hype around it was all about. Up to this point I had avoided it because of a narrow and uninformed view: low-level programming was definitely not for me. I had no education for this.

Software engineering with Rust

In a short exploratory phase, I briefly familiarized with the language, I learned about the community, the tooling, the design choices, and I fell in love. Rust felt like the language I had been dreaming about for so long; from technical to social aspects.

It combined what I loved about Elm and functional programming with what I loved about Swift. It retained the good bits of OOP and excluded the aspects I hated about it. It offered a complete ecosystem allowing great DEX, and to avoid pointless frictions. Moreover, Rust’s design philosophy aligned with what I always held high in a list of fundamental characteristics. Rust is way more than system programming!!

Rust - like Elm before - reinvigorated me8. Profoundly. This time around, I’m going to learn more than yet another programming language, though. I’m gonna study the fundamentals. I’m going to make up for my deficiencies as much as humanly and reasonably possible. To be(come) a good Software Engineer, with a focus on Rust.

The pillars of good software design

Now, could it be viable professionally? Whilst the market is momentarily unfavorable to a beginner, Rust enables developing for a high number of technologies - including full stack web and apps - and it’s here to stay. Rust is growing steadily and has great momentum. Companies adoption is growing by the day. Thus, I decided to bet my future on it. Fingers crossed on the market opening up to a 50 years old junior. 🤞

Conclusions

I’m not sure there is a moral to this epic or if it is more of a cautionary tale. I shared a very personal journey - a long excursus - hoping its details can help someone going through the same kind of impostor-driven life. You’d be the judge. Be kind. Please. I’m doing my best. Every day. Will time tell a good story when it’s all said and done?

Having said that, I’d like to end with a constructive note. Sharing three books that, in my humble opinion, would make for a great beginner’s path to solid foundations. Hoping these books would help the reader, and whomever is curious and willing to learn Rust but is still hesitating. Like I was. They are, however, only the beginning.

The must first read

There are many great resources for learning Rust. Great books9. Exercises, bloggers, and diverse platforms10. If one doesn’t know where to start, they should start from the top: Rust’s learning page. Definitely with The Book - the must first read.

The most common paths

The two most common paths - often recommended by the community helping out newcomers seeking advice after learning Rust basics with The Book - are:

  1. The Rust for Rustaceans Path. For anyone willing to delve deeper into Rust.
  2. The Zero to Production Path. For anyone wanting to learn Rust backend.

Great recommendations, each with its own merits. I admire both Jon and Luca. Luca was immensely kind to me. Zero2Prod, however, didn’t work for me.11 I haven’t got around reading/studying Rust for Rustaceans yet. I want to remedy that, soon.

The beginner recommends

Without any further ado, these are the two books12 that - after learning Rust basics with The Book - in my humble opinion, make for a great beginner’s path to a solid and idiomatic foundation. On which to build upon any career path they may choose.

  1. Code Like a Pro in Rust: delve deeper into data structures, essential tooling, testing, memory management, async, optimization, and project management.
  2. Idiomatic Rust: delve deeper into traits and generics. Be up to speed with idioms, best practices, design patterns, anti-patterns, macros; and much more.

Both from the same author, Brenden Matthews. I thoroughly enjoyed his writing and teachings style. I hope you do too. If you made it this far, thank you for your time.


  1. In a nutshell: I didn’t really like studying when I was a teen. Despite my professors recommending my parents to take this or that institute and study path. All I wanted: a job for independence and to get out on my own.

  2. I will summarize My Linux Story or: How I Fell in Love with Copyleft, here

  3. To drive a point, I’ve used a famous Venn diagram. Ikigai is more of a concept. Image Source: https://www.linkedin.com/pulse/why-you-shouldnt-use-ikigai-venn-diagram-saori-okada/

  4. I strongly recommend Allen B. Downey free books for anyone wanting to learn the basics of development with Python (and Python of course): https://greenteapress.com/wp/

  5. I strongly recommend Academind for anything Web Developer learning: https://www.academind.com/

  6. I’m sure you are aware of Elm influence on the Rust compiler error messages. And on many Rust Web, GUI, TUI, and App frameworks.

  7. I strongly recommend Hacking With Swift: https://www.hackingwithswift.com/

  8. When I fell in love with Rust design, it made me feel like I didn’t waste time in learning other languages. Although each of them seemed like a failed attempt at learning how to code, they all gave me something. Nothing you learn is wasted.

  9. There are a couple of books lists I have saved, however, since I have not read nor studied most of the books, I am sharing them in a footnote JFYI and NOT as recommendations:

  10. While there are great YouTubers and tutorials, they can be very subjective and meet different learning style and preferences. Far too many to write about them here. Not that books are exempt from subjectivity, however, we are discussing my own book preferences here. Thus, making is a more focused target.

  11. Besides not clicking with the tutroial code dump style, How to Code it makes great arguments I wouldn’t make in a million years. I agree with them 100%.

  12. Since finding out about Manning Publications, with Elm in Action by Richard Feldman - another great person I admire - they are the first IT book resource I rely upon. So far, so good. Each book I studied, has proven a great resource.