An Introvert's Guide to Landing a Software Engineering JobBy: Kevin Graham, CodingNomads Graduate
One year ago I was working as an accountant, and everything felt more or less the same at work. Each month I'd record the same transactions, fill out the same spreadsheets and create the same reports. I was bored and wanted a challenge.
I was drawn to software development because I was motivated by the idea of creating software to be used in the future. With my background in finance, pursuing the financial tech industry - AKA FinTech - seemed like a logical next step. I also aspire to work remotely someday, and know that software developers have great opportunities to become digital nomads.
After 1 year of study and over a hundred job applications, I got my first software engineering job
It was 2 months after I graduated from my coding bootcamp, without stepping foot in a networking event. I know most of the advice out there says that networking is key, but as an introvert that just wasn't practical for me. I had no connections in NYC before getting my job there, and I'm much more productive hacking it on my own. So for anyone out there dreading the job search, here's what worked for me.
First, I started to learn to code on my own
I began by using freeCodeCamp, which was a great introduction to front-end development. I quickly realized I'm not great with design and user experience, which are basic tenets of front-end / client-side development. I tend to be more analytical and data-oriented, so I decided to pursue back-end development.
For a few months, I woke up at 5 am every day to spend 2-3 hours studying before my full-time job. This soon began to wear on me. I knew that if I really wanted to make a career change, I needed to start learning full-time, and I needed support.
Then I quit my accounting job and moved to Thailand
I decided the best way to learn full-time was to completely remove myself from home. So I booked a one-way ticket to Thailand and promised myself I wouldn't come back until I had strong enough skills to apply for junior developer positions.
May sound a little crazy, but going abroad made it easier to get really focused on learning while living on the cheap. With vacation rental sites and coworking spaces worldwide, it's easy to get settled and meet other digital nomads.
Before leaving for Thailand I also discovered CodingNomads' Java bootcamp in Bali. I knew that Java was popular in the FinTech industry, and thought that CodingNomads' travel-focused community would be a great group to learn and travel with. Now I had two things motivating me to learn: trips to Thailand and Bali.
Learning to code abroad helped me get serious about learning full-time, while also living an exciting, affordable lifestyle.
I studied 30 hours/week and explored Thailand in my free time
I spent two months in Chiang Mai, Thailand—a city popular amongst digital nomads that I had traveled to before. I found a comfortable apartment with dozens of nearby coffee shops to work from. I put in about 30 hours each week of studying while still having plenty of time to enjoy the city and nearby mountains by motorbike. By staying in one place long-term, I was able to strike a balance between adventure and study, and make a lot of progress.
Before my coding bootcamp, I learned some Js, Python, C and Java
By the time I arrived in Bali, I had explored various programming languages online, and completed CodingNomads' online Java fundamentals prep course. Until this point, however, I only ever learned the basics.
My coding bootcamp provided the structure to stay focused on Java and the support to utilize the language at a deeper level in projects. I probably learned as much in the first few weeks with CodingNomads as I learned in the previous six months of studying alone. That said, learning the basics beforehand definitely primed me to understand the more advanced topics in class, so I knew my preparation time was well spent.
Here's me (left) with my coding bootcamp classmate Donda, laughing about using an entire bottle of aloe on my Bali sunburn. That and my mustache.
During the bootcamp, I built relevant projects for open jobs
Since I knew I wanted to work in FinTech, I looked at software engineering job postings for FinTech developers in NYC. Seeing the tools and technologies that were most in demand for real-world jobs helped me curate my learning towards becoming the best fit for these positions. If postings mentioned technologies I didn't know, I incorporated them into a class project. I also built finance-related projects so that my interest in FinTech was supported by relevant skills and experience.
I took on challenging tasks, and it paid off
I also took the opportunity during my coding bootcamp to explore a challenging topic that became a great talking point during interviews.
At the encouragement of my Java bootcamp instructor, I implemented OAuth2 security for our group project. At first I was intimidated by the documentation, and spent a long time struggling through the difficult language of the Spring Security documentation and OAuth2 specification. It took hours. Days. But in the end, I managed to code a working implementation.
The project I built, called Forex Guru, came up during several of my interviews due to its basic version of OAuth2 security. Now as I learn about the Open Financial Exchange (OFX) specification for my current job, I often look back at this as a valuable, worthwhile experience.
Interview prep: coding challenges every day
Two books that I found extremely useful for interview prep were Programming Interviews Exposed and Cracking the Coding Interview. In addition, towards the end of the bootcamp, I began practicing problems from HackerRank and Leetcode every day. I would write the answer on paper before testing in IntelliJ. I also created a repository on Github to push all my own implementations of common data structures and algorithms.
Although practical, project-based skills are crucial for getting the interview, demonstrating knowledge of computer science topics are crucial for passing the interview. I feared the dreaded "whiteboarding" interview and wanted to be as prepared as possible so it wouldn't hold me back from applying to jobs.
Interview prep: the "soft" skills interview
I knew I would feel more comfortable during the interview if I practiced answers to common non-technical questions beforehand. I practiced the key takeaways I wanted to impress upon the interviewer and had plenty of questions ready to ask, too. I made sure I could briefly explain any technology on my resume and my hands-on experience with it.
I got strategic with my search and applied to over 100 jobs
Six months after leaving the US to study full-time, I returned home to New Jersey and started applying for jobs immediately. Treating the search like a full-time job, I split my time into three major areas each day: applying to jobs, practicing coding challenges, and building relevant projects.
I tried multiple outreach methods like cold-connecting on LinkedIn, emailing hiring managers, and applying on Indeed, FlexJobs, AngelList, and more. I tracked it all in a spreadsheet so I knew when to follow up.
I was ok with bombing an interview or two
I had several interviews including phone screens, a live Hackerrank coding interview, an in-person "whiteboarding" interview, and multiple choice tests on Java and Spring. Even with all of this preparation, I still failed some interviews. But each failed experience taught me what to prepare for the next, and I was much more comfortable by the time I interviewed with the company I currently work for.
I didn't let rejection get me down
Staying motivated and positive was my biggest challenge throughout the process. Finding a job, especially in a new industry, isn't easy. I applied to so many jobs that I felt like a great fit for, only to never hear back. While much of the job search was out of my control, only I could decide how much effort to put in. I kept reminding myself that I do have valuable skills, and someone will eventually see that and take a chance on me.
So I kept pushing hard, and ultimately found my current company through LinkedIn Jobs. It took another month to get the offer, so I continued interviewing elsewhere in the meantime. All in all, it took two months from my first application until landing a full-time Java Developer position in NYC.
Taking breaks after class helped me keep my spirits up during my Java bootcamp, and job search thereafter.
What worked best for me - domain knowledge + coding bootcamp abroad
I credit a large part of landing my job to my interest in and knowledge of FinTech from my time in accounting. Not only did it help me get interviews and the job, I utilize these skills every day when working with clients. Demonstrating that I understand the specific needs of the business beyond just coding definitely helped me as an entry-level applicant.
It's also worth noting that learning to code abroad was an incredibly productive and exciting experience. Being away from home and surrounded by my cohort who shared the same goals helped me stay focused on learning. I had a cheap, comfortable accomodation in Bali with home cooked breakfast every day, so I didn't have to stress so much about finances or cooking.
While the majority of my time was spent coding, the weekends were full of adventures with CodingNomads' welcoming cohort. It helped me get out of my comfort zone and become open to new travel experiences, and new friends.
It was fun to unwind during weekend happy hours in Bali with my coding bootcamp classmates and other digital nomads.
For any of you in my same shoes
Try a programming course before you commit to making a career change. Harvard's CS50 is the most challenging and rewarding introductory course I have taken, and I highly recommend it. You will quickly learn if coding is right for you.
If it is, an immersive coding bootcamp is probably the fastest way to make the change. And if you're an introvert like me, don't believe that networking is the only way to find a job. There are hundreds of software engineering jobs posted online for a reason. You just have to put in the work to rise above the other junior dev applicants, and demonstrate that you're the one to hire.
This is a sponsored post by CodingNomads.