How I got my job
Disclaimer: This is purely my story and not a recommendation or advice in any sense. I have no idea what actually works in the real world, I only know what I did and the result of that. Please take all of this with a grain of salt!
It’s December of 2021, and I have one quarter of my Bachelor’s degree left until I graduate. My goal is to be a Machine Learning Engineer for a company that does natural language processing, but I have almost no experience programming, and absolutely no experience with machine learning.
What I did have:
- A deep love and passion for linguistics
- A genuine interest in learning to code
- Some amounts of free time
Fast-forward a bit, it’s October of 2022, and I have a job as a Developer Advocate for Explosion, a machine learning company that does advanced, open-source natural language processing work. I work on example projects, social media posts and visuals, and am encouraged to grow my skills as an engineer.
In other words in the span of less than a year, I went from knowing almost nothing about natural language processing and machine learning to having a job at one of the coolest ML/NLP companies out there. The imposter syndrome is there every day, but I also think I did a lot to get here. I’m going to take a bit of time in this blog post to reflect on some of the things I did and mindsets I had that I think led me to where I am today.
The Beginning
I went through a lot of ups and downs of what I wanted to do in college and beyond. I switched my major to linguistics a year into college with the intent of going into academia, but soon after began to discover the field of natural language processing. I was hooked, and by December 2021 I knew that’s what I wanted to do.
There were a few problems though. I had done some coding in the few months before, but just some simple website stuff with HTML/CSS and JavaScript and a little Python. I knew I had nowhere near the skills I needed to get a job at a company.
Additionally, I was set to graduate in March of 2022. I had one quarter left, and 3 classes to take to get my BA in Linguistics. I wasn’t a big fan of school, something about the learning style doesn’t work with my brain very well. I knew staying longer wasn’t an option (also, I was running out of money to pay for my education).
After talking to several people, I eventually came to the consensus that in order to reach my goal of getting a job at a ML company within 6 months to a year after I graduated, I was going to have to prove my ability to learn in a meaningful way. I didn’t have the proof of this through classes or school projects, so I knew I was going to have to do my own.
The Project
I came up with the idea for synsong (you can read about that here) and immediately knew it was going to be a challenge. Going from very basic Python knowledge to developing a full Python web app was not something they usually tell you to do. But, I was a little obsessed with the idea, and 100% determined to make it work. In the end, it took about 3 weeks to get the prototype up and running.
While making the app, I used a few different company’s products. I used Musixmatch for the lyric search and retrieval, spaCy for some of the linguistic processing of the inputted prompt, and Spotify’s API to make the playlists on behalf of the user. (Spoiler: I was contacted by two of the three above companies for an internship)
I sent a few updates on the project on my Twitter, and the final post showing the completed application got the attention of a few notable people. Musixmatch reached out to me for a potential internship opportunity, but unfortunately that fell through. So, I decided to apply for the Explosion Developer Advocate intern position.
The Application
I debated about applying to this for awhile. My dream was to be a Machine Learning engineer, and a developer advocate position seemed a lot different from that. However, when I looked at the job description, I remember thinking, “That sounds like the most amazing role, I would love to do something like that.” And so, I applied by sending Philip an email outlining some of the stuff I’ve done, mostly highlighting Synsong.
I had spent a few days debating whether to apply, and Philip had tweeted about being swamped with a ton of applicants. Because of my delay, I knew that if I wanted him to see my email, I was going to have to do something else. I decided to reach out to someone on Twitter who worked at Explosion in the hopes that they would be able to forward some info about me. Lucky enough, one of the ML Engineers at Explosion (đź‘‹ Edward) had been following me on Twitter for some reason, so I decided he was the perfect candidate! It was really scary to reach out, but everything worked out really well. We had a really good discussion about Explosion and ML and he promised to forward my information to Philip.
I was kind of shocked when I got sent the list of tasks to complete for the second round, as I definitely didn’t believe I had done enough learning or projects to be competitive for this kind of position. I decided to put my all into doing the three tasks, and to keep track of my though process along the way. I sent Philip my completed submissions along with a document outlining the time I spent, brainstorming and resources I collected, and iterations on the final submissions.
I ended up getting an interview, and to be honest, I thought it went horribly. I ended the call and pretty much thought to myself, “well, that was fun, but not going to get that position”. Philip had asked me to go through the Synsong codebase with him, especially the part that used spaCy. I had grown as a programmer a lot since I had originally written it, and looking at it with him was the first time I had touched it in awhile. I knew it wasn’t indicative of what I was capable of.
The next day, I decided to go back and revamp some of the code with a refactor and some additional features, especially centered around spaCy’s capabilities. I posted it on Twitter and also sent Philip an email thanking him for the interview and mentioning that I had put in some work to Synsong based on our discussions in the interview and asking for some feedback on the process. I really did not expect to get the job after this, but I also knew I had done everything I could.
Reflection
Well, I’m pretty sure you guessed what happened, but I got the position! Definitely cried some happy tears. My journey has definitely not ended there, and I’m continually learning and growing while working for Explosion. I am so grateful for the opportunity I have.
I’ve learned a lot in the past year about my personalized recipe for success.
- Doing applicational NLP projects allowed me to show off my dedication, ability to learn and iterate, and focus on creating useful products
- When I decided I wanted something, I went all in. I did everything I could think of to show my thought process both in the tasks and the interview. I took feedback, went back, and made myself and my projects better. I pushed myself to reach out and do uncomfortable things.
- I understood where my weaknesses were, and tried to come up with things to overcome them. I didn’t try to pretend like I knew anything I didn’t.
- I didn’t stay stuck on my dream. I was able to iterate and adjust my goals to figure out what I really wanted to do.
A lot of things lined up the right way for me, and I got very lucky that such a unique position opened while I was looking. Doing these things would not get me a job in many, many different companies, but I’m so glad I did what I did to have the position I do now. I’m excited to keep learning, growing, and creating!