On April 4th 2022 I started my first dev job as a jr. Software Engineer at Inferex. Wow, what a ride. I'm happy to have started working at this Irish tech startup after self teaching and working full time for years. My fascination and love of computing began in the fall of 2014 when I enrolled in Introduction to Computer Science at University of Illinois Urbana-Champaign. I wasn't even a comp sci major and the class was already full. I found a post on reddit saying you could get added to the class past capacity by filling out a form. I did some Google searches and came across a form that was a couple years old. After sitting in on a couple lectures, I waited in line after class to have the professor fill out the form. I was full of questions then: while he was filling it out I asked "if computers are deterministic machines, how do they generate random numbers?", which is actually a good question (Cloudflare uses lava lamps). With that done the enrollment was 367/350 or something. It was a tough class to do as an "elective". I had already fulfilled my quantitative requirements and was doing my senior thesis, studying for and taking the GRE... There were lots of midnight submissions to Machine Problems and quizzes. But it was worth it. The outstanding people there helped me when I needed it and I learned.

After graduating I became disillusioned with the idea of devoting the next ~7 years of my life doing a Ph.D, taking out more student loans, and still not having any certainty of a job after all that. It did not make sense. Fortunately I developed another passion as that one dwindled. While doing my senior thesis I saw graduate students program their experiments. I labored away and transcribed data by hand thinking "this could be automated and save so much time..." So where did that leave me? Data Science was the hot new job, and it made perfect sense for me to pursue it. I love science, I love programming - let me use both to earn a living. I did a bunch of research about what language to learn, what tools to use, etc. I found Python and read about how 80% of data science work is not actually the scientific part, but gathering and preparing data so the real work can be done. I started to choose projects that would allow me to practice those skills and hopefully prepare me for an entry level job.

I invested a lot of time in teaching myself. I did scraping projects to collect data so I could analyze it and visualize it. I went to tech meetups. I started a blog where I wrote about my projects, shared code, and taught others. I made around 70 posts over the years and even had a #1 Google search result for "raspberry pi vpn" (I got into home media servers and that stuff). I learned Linux, hardened my server against brute force attacks, but ultimately had to shut it down because I just didn't have any time left for it. I was already working full time. I did not find that sexy data science job; I found a regular office job at a manufacturer. Admittedly my interviewing skills weren't the best. I remember finding out that the resume I had been sending out for some time was all messed up because the Libre Office export to .docx was botched. My VPN dictated my job options - sites like Indeed use IP address to determine geography and my VPN's IP was a few towns away. Hard lessons learned.

My first salaried job out of college, just like my work in the lab, involved lots of manual data work in excel (I would have benefited more by taking a college course on Excel rather than German). After a couple years of self teaching and starting to write web apps I asked my manager if I could have some time set aside to pursue an automation project. I had to ask a couple times before I got the necessary tools installed on my machine, but eventually I got it. It's a great arrangement for both employer and employee. I stopped at a Starbucks on the way home, got a coffee, and made a prototype that day. The tool I wrote calls several vendor APIs asynchronously (making hundreds, even thousands of requests at a time) and aggregates the data into a formatted excel download that is easy to work with. It was a 2 week process and my tool did most of it in 2 minutes, roughly a 10,000x speedup. After refining this tool over time and even having my company's public statements mention it, I was ready to try and land my first software engineering job. I applied to some jobs and got some interviews.

My first live coding interview was a nightmare, I don't even want to think about how I suddenly forgot how to code. I made it a farther with an AI startup that seemed really interested. I lost count of how many rounds of interviews I did. At some point the conversation shifted from a salaried job to a contract job. After the final round the conversation shifted to an internship and I kind of felt like they were trying to take advantage of me. No thanks. What was I to do? I spent years teaching myself this skill, thousands of dollars on computers and server bills, and the best I can do is an internship? The imposter syndrome was real, and I felt that the self taught programmer was a myth and that I had been sold a lie. Really. I don't know how I came out of it (there's a xkcd about "the depths of despair" in the development process that I cannot find). Eventually I told myself "No, the burden of proof is on you to prove yourself" and made a sorted list of things companies look for when hiring developers. I went down the list and crossed things off one by one.

I refined my resume for the nth time, updated my portfolio site, kept up with interesting projects, updated and maintained my websites... Then I realized Hacktoberfest was going on and I still hadn't contributed to open source. With around two weeks left I logged in every day after work and started to grok a bunch of projects that indicated they were looking for contributors. I found a bug in Microsoft's ElectionGuard reference implementation, wrote/updated docs, uploaded scripts to a giant collection of scripts, tried but failed to understand an esoteric astronomy library. Eventually I got the required amount of merged requests in and completed Hacktoberfest. I started applying for jobs I found on HackerNews "who's hiring" thread. More interest this time. I choked on a simple hangman interview, killed it on an interview where I was asked to implement a hash map, and made it part way through a few others. The hash map interview led to a final round. I got so excited I started practicing salary negotiation. After some time I got an email saying "sorry but we cannot move forward with your application for this backend engineer role". Cue imposter syndrome relapse. I had a series of good interviews for another job. Suddenly, more rejection. I was legitimately close to giving up when I got an offer. I put my two weeks in the next day. 2022 turned out to be one of the happiest years in a while.

TLDR; Don't give up in your job search! There's usually a lot you can do to improve, and most people have to do a few interviews before an offer.