Rust & Web Dev with Josh Mo

My First Tech Job (Using Rust)

The elusive goal of most, if not all, Rust developers is to get paid to use Rust. Unfortunately, outside of paid open source and being a Rust consultant it shapes up to be as difficult as it looks: Filtra's September 2023 job report stated that there are only 462 positions, with the majority being either in cloud/infrastructure, crypto or productivity. The vast majority of positions are also primarily aimed at either senior or mid-level developers, with only a very few select junior positions.

The fact is, it's intimidating. If you're not a senior developer, good luck convincing your team to switch over to Rust.

Setting the scene

Picture this: you've been learning programming pretty intensely for 5-6 months and you think you're ready to get a job as a web developer. You've been doing your due diligence networking, trying to get your name out there in hiring managers' mouths and attending programming workshops. You just moved in with your partner (to another city) and quit your job to pursue your dream job in tech after hearing about how much developers are making and you regret not following up on the Computing course you took at school 10 years ago and actually really liked, but didn't go to University because you wanted to do other stuff. You are currently relying on your savings for one reason or another, but you probably only have enough for about 4-5 months.

Not a prime position to get a tech job, I know. But this was the reality for me late last year: I had burned out of a nearly three-year long stint in the food wholesale industry, positioning myself as basically the backbone of IT within the company as well as data entry and learning Chinese to take customer orders. Though it was where I cut my teeth and learned to apply myself under pressure, burnout was practically inevitable. My manager even asked me if I don't want to apply elsewhere.

Naturally, with the job market position at that time, it was extremely difficult. The one company I realistically had the most chance of ending up with had just recently hired someone and only told me they were on a hiring freeze, after the interview. Some tears may have been shed. If you're looking for your first breakthrough in tech, you can probably relate.

Around that time, I had heard of and tried out Rust because it was trending on Twitter and I thought the name was really cool. Yes, cringe, I know. I went at it for a few hours using The Rust Book, battled the borrow checker and subsequently gave up. "It's too difficult." I didn't understand what Traits were as I had no previous point of reference, I had zero understanding of what lifetimes were and I was almost none the wiser except that I knew that I wanted to use Rust but it was just too difficult for me at the time.

Learning Rust

After a few weeks had passed and I'd gotten my head further wrapped around TypeScript, I was looking for a free web service (as you do!) to host my web apps on when I came across Shuttle, a web host that makes deploying really easy but currently only supports Rust web services. I thought to myself: this looks interesting, I'll try it out. It was also a great chance to put some of the Rust I had learned before to use.

Thanks to my web domain knowledge, it was quite easy to get started using Axum as the mental model (creating handler functions then just appending them to a router) was very familiar to me, thanks to using Express.js in the past. At that time however, Shuttle was in alpha and an immature product indeed; users were posting quite often about errors they were getting with just trying to get things to work, but nobody was really responding because the Engineering team was busy and they didn't really have a customer support function as such. I took it upon myself during that time to respond since I thought Shuttle was a great product: you write the code, you just write in whatever macros you want for the infrastructure you want for your app, then you just run or deploy and it just works. No config files needed.

This lead to me being reached out to by the company's one and only DevRel at the time, who wanted to see if I was interested in joining their Hero program. It was the first time I had really done anything for myself and actually been rewarded for it (and the only other guys who were Shuttle Heroes were basically ex-FAANG or renowned in their own right) so naturally, I was ecstatic and very happy to oblige.

The first few articles I wrote only got about 1-2k views, but they were good enough for me to keep writing for them while I was looking for a job. A short while after, I was approached by Shuttle about potentially joining the paid-open source program as a DevRel. Of course, it wasn't certain so I was looking for other jobs in the meantime. During the interview, I also failed the technical horrendously (they asked me to recreate a binary tree in Rust). Thankfully though, they were impressed by the fact that I was also very determined to just continue on even if I got pretty much every answer wrong.

What ended up happening was that they offered me a part-time contract roughly around the same time that I ended up taking a hybrid office admin job and tried to juggle both of them for a few months. The TL;DR advice on this, by the way, is to just do one job at a time. Trying to do two jobs in different fields is stressful!

In March, I published a piece titled "Next.js and Rust: An Innovative Approach to Full-Stack Development" about using Next.js (as a frontend) with Rust as a backend that hit front page on HackerNews as well as receiving around 100k hits on the JavaScript subreddit (and narrowly avoided getting closed by the mods!), and was featured on the JavaScript Bytes newsletter here. This was probably the first time where I realised that I really wanted to go full-time into DevRel instead of becoming a software engineer. At this point in time though, I don't really know what I did that got so much attention on the article, but I enjoyed knowing that I did that much.

In April, I published a writing piece (that was originally a throwaway extra) titled "Will Rust beat JavaScript in 2023?". Yes, it's clickbait. No, I don't regret it. While it could've used some improvements (blurry text on images, anyone?), it got the point across well enough and conveyed the case for Rust well enough that it was noticed by ThePrimeagen and he actually did a full video on it, which you can find here. This was also where I realised that I really had potential to be able to go all the way with this if I wanted.

Eventually, things came to a head and I quit my office job because my bank balance was large enough that I could reasonably survive for a good 6 months or so while only working for Shuttle and they were kind enough to up my contract to 20 hours a week, while solidifying my schedule a bit more and giving me more opportunities to perform. I admit I probably wasn't the best employee at either job while working at both places up until this point.

Needless to say, I stepped up my game and performed after this point. I wasn't necessarily the person who was making all of the big flashy things happen, but I did some of the background work that was needed for us to create a solid rock foundation through high-quality article creation and effective user support. I built an internal support system in Rust using Serenity for the company to be able to monitor how many users are affected by what issues, and what kinds of features users want (because there isn't anything out there that lets you track both GitHub and Discord issues). Although it was a lot of work, it was worth it to know that my work aims to be excellent and the effects of that will show up somewhere down the line. If you're in a startup, I'm sure you can relate to the feeling.

Finally Full Time

During Q3, we quite literally went 10x on our monthly traffic (thanks in part to a few helpful articles from guest writers that went viral, needless to say) as well as increasing basically all of our other SEO stats from anywhere around almost 100% to around 300%. We cemented our release schedule and started analysing our articles properly for SEO. We made content plans and executed. I say "we" because as much as I'd like to say that it was, it was definitely a team effort. I was exposed to an environment that helped me to grow in ways that I didn't even know I needed to grow, as well as a manager who was exceptionally understanding above all else and reminded me (constantly, sometimes) not to overwork myself. We also have great connections with people in the Rust community.

Some of you may know or have seen that Shuttle attended EuroRust. During that time, I was also promoted to a full-time DevRel before the end of the week. Some might say it should be expected because the numbers speak for themselves, but I still had a level of uncertainty in spite of everything: after all, they can still say no if they wanted to. But they didn't, and after my performance review, we celebrated at the Airbnb and I originally couldn't stop smiling because I quite literally didn't know what to say when my manager announced it to everyone - which brings us to today.

How Does It Feel?

Knowing that the year (plus a half) I spent to finally get to where I am today has paid off is a brilliant feeling, especially considering that I originally started out without any degree. This is also the first thing that I did professionally where I felt that the thing actually aligned with my life goals.

However, knowing that there is much work yet to be done to be able to prove my skill as a DevRel Engineer. Getting the role I've wanted for a while means that I was able to prove that I was capable of getting here, but that's a bit different to staying, and staying requires consistency.

Finishing Up

So what are the takeaways I can provide to you from my experience if you want to use Rust professionally?

For those who are looking to break into tech:

#Rust #Rust jobs #get a job in Rust #get a tech job