One year ago, I was working part-time as a route setter at a rock climbing gym in Tennessee. Today I’m working as a software engineer at a cyber-security startup in San Francisco.
My journey to this point has been unforgettable and life-changing. And yet as challenging as everything was, I think that any sufficiently-motivated person could do the same.
Knowledge has become democratized. All you need to reach a competitive level in your field is time and dedication. This is especially true for the field of software engineering.
In 2016, my life was falling apart
When I started learning to code in 2016, I guess you could say my life was falling apart.
I’d gone to college as a pre-med student, with degrees in biochemistry and anthropology. But I quickly became disenchanted with science and medicine, and left college with no clear path.
I started working as a routesetter at rock climbing gyms for almost 2 years, but things were not going so well. I knew I was in need of a big change.
I had been putting off learning to code for a long time, but I knew this was what I wanted to do. Finally, on my birthday in 2016, I committed to learning to code. I didn’t look back.
At this point in time, I was vaguely familiar with the coding bootcamps that have become quite ubiquitous over the last few years. Luckily, I quickly discovered freeCodeCamp. When I realized that finishing their curriculum entailed writing software for non-profit organizations, I promptly joined and resolved that I would finish freeCodeCamp’s open-source curriculum before even considering a bootcamp.
freeCodeCamp rapidly became the core of my education. I supplemented it with many other resources, such as podcasts, tutorials, open-courseware, and healthy doses of documentation and Stack Overflow when needed.
Typical days involved me working through freeCodeCamp challenges and projects, which allowed me to progressively improve my skills.
When sitting and writing code became unproductive, I would absorb material through other channels: audio, video, and so on. I moved back and forth between different learning methods, which was very useful in maintaining a strong level of engagement and focus. This was basically my process, and it allowed me to dedicate many hours to learning.
Here it is by the numbers (roughly estimated):
- Total duration learning: less than 12 months
- Total hours: ~2,500
- Total projects completed: 70+
- Total CS courses watched: ~10
- Total GitHub commits: 1,500+
Most of this learning took place in Knoxville, Tennessee, where I was living at the time. I had a strong desire to move to one of the major tech cities, so one day I woke up and naturally decided it was time to drive to San Francisco. That’s about exactly how it happened.
That night I left, and about three weeks later arrived in the Bay Area. Plenty of time to listen to podcasts on the road.
Arriving in San Francisco for my first real job search
After arriving in San Francisco and completing the core freeCodeCamp curriculum (front-end, data visualization, and back-end certifications) I had a brief go at job applications. Around 65 or so. Literally no response.
Remember, I had just driven into the Bay Area from across the country. I had no idea how competitive it would be, nor how much my skills were even worth to employers at their current level. Did freeCodeCamp actually measure up to the education of an in-person coding bootcamp?
These feeler applications gave me a clear reading: I had to do more. The market is pretty competitive. So I rapidly revised my plans, extended my time horizon, and reached out to freeCodeCamp to begin a non-profit project, since I was now eligible to start one.
Meanwhile, I began networking in the city as much as possible. The networking came easily enough, as freeCodeCamp has many self-organized campsites throughout the world’s cities.
I got a quick response from freeCodeCamp’s team about the nonprofit projects. Some of my React projects had caught the eye of Michael D. Johnson and Quincy Larson, and they asked me whether I’d be interested in helping write their React curriculum. (freeCodeCamp itself is a nonprofit.) I also helped build a conference management tool for the Conference on Crimes Against Women.
I was very excited about the opportunity to give back to this awesome community, so I quickly accepted the challenge. My React and Redux challenges are being incorporated into their newly expanded curriculum, which is now live in beta form live here.
In addition, I chose to advance my timeline to 2017. I would continue studying on my own for the remainder of 2016 before applying for jobs again. I left San Francisco, droving north through Portland and Seattle to Bellingham, Washington.
It was during these weeks in the pacific northwest that I worked non-stop to complete the React and Redux challenges. I collaborated with another freeCodeCamp contributor from New York, Peter Weinberg, and built around 80 coding challenges in total.
This was probably one of the key moves that helped set my resume apart, because it represented a significant project that served a real-world organization’s needs.
In late December, we finished the initial draft of the challenges and moved them into an official alpha release which is still generating feedback from the community.
My triumphant return to San Francisco
Back in San Francisco, I was almost ready to dive into job applications again. I had decided to join Outco, a crash course in interview preparation for software engineers. I had always been pretty opposed to spending money at a coding bootcamp (partly because I didn’t have the money), but I chose to join Outco because in my view they are trying to serve a different purpose. Outco is specifically targeting the interview process for software engineers, a process which causes friction for many, even experienced and skilled engineers.
And, a reality check: I had been going many months now at a strong pace of probably 50+ hours a week of coding and learning, and I was now literally risking it all on my ability to get a job in one of the most expensive and competitive cities in the US.
I had already made a sincere effort to apply to companies and failed miserably! The pressure and stress were definitely bearing down on me at this point.
I knew success was going to depend heavily on my performance of the next few months. I joined Outco because I expected that their structured program and support would prove indispensable in this last miles of my journey, and it did.
2017 arrived and I started Outco. I began to work even harder than before. Tons of algorithms and data structures practice, white-boarding questions, technical questions, pair programming, mock phone screens, systems-design questions—you name it, and lots of it. Not to mention applying to jobs again, and a lot more than I did the first time.
And, of course, once you begin to get responses from companies it becomes very time-consuming (not to mention very stressful) to begin juggling all of these interviews at once.
Practicing for interviews everyday is hard enough. Standing in front of a whiteboard in a real interview as they ask you about binary trees is much harder (and yes, interviewers asked me about binary trees).
Again, the numbers tell the story more eloquently:
- Total applications: 192 (including the 65 from 2016)
- Total phone interviews: 17
- Total take-home code challenges: 6
- Total technical screens: 5
- Total onsites: 3
- Total offers: 1
- Total time to offer: 6 weeks
- Success Rate: 0.52%
That one offer was from TruSTAR Technology, and I have been so happy to join their team! TruSTAR is building a platform that allows companies to share cyber-intelligence data in order to prevent and mitigate cyberattacks.
Lessons I learned over the past 12 months
Now, finally, here is some advice I would have for anyone looking to do something like this:
- You need real-world skills and you have to learn a lot. That means a lot of hours of work, there’s no way around it. Passion helps.
- Building projects is an excellent way to learn, and once you know enough it is not very hard to find open-source projects or other high impact projects to work on.
- It’s critical that you cultivate a community of others who are learning to code or working as engineers. Network in your city. Network online. Find collaborative projects to work on. Ask for help.
- If you can afford it, try to have some patience. This is what I struggled with the most.
There you have it — the journey that led me across the US to begin a career as a software engineer. I’m sure everyone’s path will look different, that’s part of the fun.
Find your own path and don’t be afraid to disregard other people’s views if you believe strongly enough in your own. That includes my views.
The opportunities in the tech industry are real, and if you want them badly enough, you can find a way there.
As an engineer, your job will be to solve problems, and if you are self-taught, the first problem you must solve is how do you teach yourself?