How I Landed a Software Engineering Job in a Year
Many of us think the path to becoming a software engineer requires years of education and an extremely high IQ. While software engineering is one of the brightest professions, don’t let that discourage you from learning to code and becoming a software engineer.
I thought it was too late for me to transition into computer science, but no matter where you are in life, it’s never too late to learn and pursue your passion.
My non-traditional background
I did not attend a top rank university nor have a technical background. I didn’t have a passion for solving puzzles as a kid nor compete in math competitions. I actually strayed away from troubleshooting computers as a kid after the many failed attempts of getting the wifi to work.
I graduated with a Business Administration degree and worked two finance jobs that didn’t challenge me. They were easy simple jobs, but it got mundane and boring really fast. I didn’t feel like the work I was doing was fulfilling and was turned down every time I asked for more analytical tasks. I then decided to better my skill set and create my own opportunities.
A little over a year ago, I picked up SQL since it’s a popular skill in financial analytics. After learning the syntax, coding didn’t seem as intimidating anymore. It was kind of like learning a new language. Once you are able to read and write, you can understand things that once looked completely foreign. I really enjoyed learning a new language and being technical in my work, so I knew that this was something I had to pursue.
Choosing the right path
I considered the different routes to pursue a career in development. I did not want to spend another two years in undergrad nor did I want to learn everything on my own. I heard success stories of people who attended coding bootcamps and were able to transition into a software engineering role. After doing much research, I decided this was the best option for me and applied for the next Hack Reactor cohort.
I needed to pass a technical interview in order to be admitted into the program so I spent all my time either after work or on the weekends learning as much as I could. It was difficult making time to learning something completely new after being drained from a full-time job, but my motivation to reach my goal kept me going.
I completely bombed my first interview, but I learned from my mistakes and I booked another interview on the day of the deadline. I made sure this time I was prepared and communicative with my entire thought process. The next day I received my letter of acceptance and my journey to becoming a software engineer had officially begun.
Hone your craft
The campus I decided to attend was in San Francisco, one of the biggest tech hubs in the world. Being in SoCal all my life, it was definitely a major change and it wasn’t easy saying goodbye. I packed up all my things and moved into a shared apartment in SF.
During the first few days into my program, I got to know my classmates. A majority of them came from highly respected universities and had STEM degrees. Many of them had prior knowledge of other scripting languages and experience with Object Orientated Programming. I knew I had a lot to catch up on if I didn’t want to fall behind.
They call it a coding bootcamp for a reason. Classes were scheduled from 9am — 8pm, six days a week, but I would usually stay till 10pm or midnight. I pretty much lived, breathed, and slept code.
The first few weeks I really struggled. I would cram as much information as I could while making sure I still retained the previous days’ information, and repeat this process again the next day. There were moments where I doubted myself and didn’t think I had what it takes to be a programmer. I sacrificed so much to be there and my friends and family were all counting on me to finish strong. I knew this was my only shot, so I persisted and weathered through the storm.
Days and weeks began to fly by and I slowly started to get into the flow. I began to learn “how to learn” and be reliant on my own skills to figure out the problems I faced. Google is any developers best friend and it’s very likely that someone else came across the same error you ran into.
Let’s build something
Once the foundation was set, my program’s curriculum shifted toward building projects. I would work on capstone projects with teams that would emphasize either frontend or backend. They say you get what you put in, so I made sure to show my absolute best work into these projects. Not only did it have to work, but the code had to be clean and readable in case potential employers reviewed my git repositories.
The last capstone project was called MVP, also known as Minimal Viable Product. We basically had 72 hours to create anything we wanted as long as it was a full stack application. The limited time was a challenge to make sure I was able to manage my time efficiently. I couldn’t be over ambitious with my project, but I also wanted it to be something I would be proud of.
My first idea was to build a decentralized app that would utilize the Ethereum blockchain. It sounded impressive for employers, but I wasn’t familiar with Solidity language and wasn’t sure if I would be able to complete the entire dapp in time. Another idea I would joke about was a boba rating app for all the nearby boba shops my classmates and I would visit.
When it came time to decide, I remembered I picked up coding because it was fun for me. I felt like I would put in 110% into something that I would enjoy, rather than something I would constantly stress about. I ended up choosing the boba rating app and loved every second of it. Once I got the basic functionality down, I would keep implementing additional features to it. It eventually became a passion project and will always be a memorable project that I’m proud of. Don’t do something because it may look impressive to others, do it because you truly enjoy it.
By the end of the 13th week, my entire mindset changed from when I started my program. I felt more confident as a developer and proud of everything I accomplished. I learned so many new technologies that would have taken me years to learn on my own. I’ve become more autonomous and rely on my own skills to solve problems. I was finally prepared to jump into my job search and couldn’t wait to start.
Before my program ended, I knew I had to hit the ground running. I had prepared for months and now it was my chance to show employers what I got. I knew the entire MVC and how to build the full stack, but when I had mock interviews, I would get so nervous and completely blank out. At that point, I would blank out, it would be a downward spiral and my entire thought process would derail. How was I going to pass an actual technical interview when I couldn’t even handle mock ones?
I double downed on studying data structures and algorithms while grinding Leetcode questions. I had to make sure that I wasn’t memorizing specific problems, but understanding the problem solving process to tackle any question. Once I was able to come up with a basic solution to a problem (also known as brute force), I knew interviewers would be looking for an optimal solution. They want to know if you can be efficient with your algorithms with respect to both time and space.
Once I built a better problem solving foundation, it was time for me to face my fear of interviewing. I heard of the concept of shock therapy, basically facing your fears head-on. Similar to how Batman overcame his fear of bats by surrounding himself in a cave full of them, I had to practice interviewing more.
I used a site called Pramp that would pair you with another person and you would take turns interviewing each other. I mustered up the courage and scheduled my first interview. I would talk out my thought process and the solution naturally came to me. I could slowly feel my nervousness fade away and I started to enjoy interviewing. By the end of the mock interview, I asked for feedback and learned what I could improve on. After it was all over, I felt great! Interviewing wasn’t all that scary and you can really benefit from them. I then practiced every day so I would be prepared for an actual interview.
“Success is not final, failure is not fatal: it is the courage to continue that counts.” — Winston Churchill
All a numbers game
While I was preparing for interviews, I started applying to jobs as well since the application process would take some time, especially for larger companies which could take weeks or months. I noticed it was a common trend for new developers to solely focus on preparation prior to applying, but that could be a costly mistake. There is always something to study when it comes to software engineering so you can’t prepare for everything. I’ve been asked all sorts of topics such as data structures and algorithms, system design, frontend design, testing, and domain knowledge. By the time you’ve studied “everything”, it may take months to get your first interview.
One strategy is to interview with companies that you know aren’t your first choice. This way you will be more prepared and know what to do correctly when you do get a chance to interview for your dream companies.
I knew attending a Bootcamp was not going to guarantee me a job. I was competing with those with Computer Science degrees and previous industry experience. Being an applicant without a technical degree nor relevant work experience, I was going into the job search with a disadvantage.
I applied to any engineer or developer role I came across and reached out to any connections at potential companies I would want to work at. I have sent out over 300 cold applications and received an incredibly low response rate. I was being filtered out and received countless automatic rejection emails.
What I found to be the most effective method of getting in touch with a recruiter was through referrals. Referrals make complete sense from the employer’s standpoint. Why trust a complete stranger that you haven’t met when you have a candidate vouched by a current employee that you can trust? One thing anyone can do is expand their network by going to meetups and events. LinkedIn is a great tool for finding mutual connections at companies; utilize it to the fullest.
There will be many obstacles in your first job search. I’ve killed it multiple times in technical screens and received great feedback from the interviewer, only to get a rejection email from the recruiter later on. You just need to be persistent, learn from past interviews, and keep going. If you keep doing everything right, you are bound to eventually find the right opportunity and land an offer.
Honest hard work pays off
By the end of my three-month job search, I was invited to five on-site interviews and received three offers. After much thought, I am happy to announce that I will be joining Zume Inc. in the San Francisco Bay Area. I love the mission and everyone I have met. All my hard work and long nights finally paid off and I couldn’t be any happier with where I am in my life right now. I am so thankful for everyone that has supported me on this journey. I know I will be challenged every day and make more of an impact with my work.
What I love about software engineering is that it doesn’t matter what background you have. Anyone can learn how to code and hone their skills. If you are coming from a non-traditional path like me, it may take a bit more work than the rest, but it will all pay off. Life is too short to settle for less, so do something you love.
Wishing you the best of luck on your endeavors — Andrew
Feel free to connect and follow me on LinkedIn as I help inspire those wanting to break into the tech industry: www.linkedin.com/in/andrew-ngo/