Four years ago, I hit “apply” on a Software Engineering job posting despite my lack of a computer science degree. The demand for more developers is high, but the skills are tedious to learn. Yet out of all the engineering disciplines, software is the one most likely to open its doors to self-taught bootstrappers and entrepreneurial spirits. With the draw of high salaries and flexible work environments, plenty of people take on the challenge. This is my story of how I switched to development with little previous experience.
Note: there may be affiliate links in this post, which means I receive a commission if you click through to these sites at no extra cost to you.
My Catch-All Degree
It was time to decide a major, but I had yet to have a magical epiphany about what I should do with the rest of my life. Sophomore year I had to pick something.
After a bit of wandering (I first declared a double major in Physics and Communications) I landed on something that would open up the most doors to me: mechanical engineering. When I googled what people do with mechanical engineering degrees, there were hundreds of results. I figured I could narrow it down later.
My Summer Internships
I worked each summer during college (except for the summer we traveled across Europe)
After graduating, I interviewed with a biotech company for an internship. Two days following my interview, I got a call at the base of a ski run. I figured that it was my friend calling, as we had just taken different routes and were separated. I ripped off my gloves and quickly answered the phone, not to my friend but to a job offer!
The engineers needed to know what issues customers were having with their product. My assignment was to create a dashboard with the information. Nobody else on the team had those skills– and to be honest, neither did I.
I learned SQL to get the information out of their database, taught myself enough Python to aggregate the data, and then used some third-party libraries to make graphs to display the data. This was my personal crash course with software engineering. I built up some rudimentary skills and nurtured a slowly budding confidence.
As autumn approached, the internship neared its end. I knew that I wanted to move to the West Coast once I wrapped it up, so I started looking for jobs.
Most jobs I came across wanted 5 years of experience, even for junior roles. Of course, I had a whopping two months of working experience. I applied left and right to jobs that sounded interesting, even if I didn’t hit all of their requirements.
Now I laugh a bit at my chutzpa. Looking back, there’s no doubt that I applied to senior roles for which I was obviously unqualified. Even though I was punching above my weight, I knew that job descriptions are guidelines and not definitive.
Friends asked me why I would even bother applying for software jobs without the degree. One asked if I really thought I could hack it with no experience.
I took it as a personal challenge. One posting listed experience in Java and C++, two languages I hadn’t used yet, but they wanted a junior-level developer so I gave it a shot.
Prepare for the Interview
I studied up on specific computer science knowledge like data structures and algorithms. Just like in my actual work as a software engineer, Google came to the rescue for these sorts of questions.
These are some of the resources I used:
- Leetcode and Hackerrank — interactive platforms for practicing coding interview problems.
- Cracking the Coding Interview — a book packed full of example coding questions.
- Daily Coding Problem — a mailing list that sends a problem a day.
The job posting mentioned specific qualifications such as familiarity with “Test Driven Development,” so I practiced that style of programming until I had a good handle on it. If I had to do it again, I would throw in a personal project as well– the goal was to learn by doing.
I was still working at my internship while applying for jobs across the country. I did all of the pre-interview screenings over the phone. The company told me that I could interview over the phone as well. I looked for flights anyway because I thought being there in person might increase my chances.
I found a roundtrip flight using Frontier for $58. Yes, $58 for a ROUNDTRIP flight. I booked it immediately.
They were looking for an eager-to-learn junior engineer. They asked some technical questions, but most centered around team-fit type questions. I have been in much more difficult interviews since then, so I am thankful that the interview for my break into software engineering was more conversational.
They wanted to know about the languages I was familiar with, hobby Arduino projects I had worked on, and why I wanted to switch industries. I received the offer within the week, negotiated my pay, and set a start-date for three days after my move-in date.
For the record, I never had to use Java or C++ in that role, so whoever wrote that job description missed the mark.
You could say that my first project was baptism by fire; I was dropped into a high profile project with little direction. I learned about virtual environments, bash scripting, and automation, as well as the ins-and-outs of our product.
What is great (and terrible) about software development is that you are constantly learning what you don’t know. And you don’t know a lot. It opens up this great cavernous maw of books to read, articles to reference, and code shortcuts you scramble to write down.
I didn’t know what to expect when I took the software job, to be quite honest. I know all the stereotypes, and I was not coding silently in a basement somewhere, hoodie over my noise-canceling headphones, grunting unintelligibly at the project managers. The socially-awkward but wickedly smart engineer still existed, but he was a minority.
Coding did not fit the stereotypes
Instead, I ran meetings, wrestled with workflows, argued over architecture, and spent most of my days collaborating AND coding.
After delivering the first project, I swapped teams.
One of my coworkers went rogue and wrote an entire application by himself, but quit the day before it launched. The next day, I was on-call to support users, despite not having any more of a clue of how it worked. I got several calls that day when they couldn’t figure it out and I guided them through it with a mask of confidence I did not feel.A lot of software engineering for me has been this: working to solve complex issues I don't quite understand with a confidence I don't quite feel. But you stay for the challenge. Click To Tweet
Ultimately, I’m thankful for my entry-level job because although it all felt overwhelming at the time, it prepared me to launch into a new career.
Some people ask if I regret not doing mechanical engineering work. It’s hard to miss what you haven’t done, and I am sure that a job as a mechanical engineer would look very different than school. Besides, the skills from mechanical engineering easily translate into software development. In both industries, you design and build new things while solving different problems each day.
Overall, I’m quite pleased with the switch, as coding provides flexibility and a ton of transferable skills. Certainly managing this blog has been much easier since I can change the code to make it work how I want!
There is also a great expanse of things to learn. I don’t think I could ever be bored at work. I learn something new daily, and I don’t see that stopping any time soon. Even software engineers that have been coding longer than I have been alive learn new tricks. I’m glad that I pursued software engineering even though I didn’t have the ‘right’ degree.
What about you?
Have you gotten a job without the ‘right’ degree? How do you approach applying to new jobs?