6 Things I Learned on the Job Hunt in 2020
By: Andrew Jyan
Tags: Job Search, Careers, Bootcamp

After over 400+ applications, 350+ rejections, 12 rounds of interviews, and 5 final rounds, I have finally received a full time job offer. A year ago, I had just moved home and was wondering what I was going to do with my career, and after leaving my job right before a global pandemic, spending over 800 hours in a 3 month program, and 4 additional months looking for a company that I would be able to contribute as a software engineer, I have accepted an offer to start the new year in 2021 with a new career.

While it goes without saying that I’m unbelievably relieved to be done with grinding for this job search, the first acknowledgement I have to make is that in all likelihood, this won’t be the last time in my life I will have to look for a job. The second thing I have to acknowledge is that I didn’t get here myself and my inclination is to find a way to return the favor to the public. All those StackOverflow threads, open source materials, well written documentation, YouTube tutorials, and Medium articles helped me get here and I wanted to take the lessons I’ve learned from changing my career in this insane year to Medium to both reflect and hope to offer value to anyone who reads this.

1. Know what you know. Know what you don’t.

One reason that education is tightly coupled with opportunity and success is that knowledge is a versatile tool. Knowledge gained, whether through academics, experience, or practice, cannot be taken away. While preparing for my interviews, I wasn’t only studying coding challenges and technical materials, but also learning about new concepts that weren’t taught in the coding boot camp. I enjoy diving into subject matters that interest me and allow my curiosity to lead the way. When I find something that I don’t know, I make it a point to learn about it, digest it, and update my mental models to include the new framework.

For a real estate advertising company that I interviewed for, they asked me how I would create a series of websites that served as apartment catalogues. The primary consideration of the website would be effectively handling the volume and size of the apartment photos. I came up with an approach of compressing the photos and hosting them in an online storage tool like an AWS S3 bucket, and then serving them to the website as the user navigated their way through the pages.

Wrong answer. The interviewer responded that while that approach would work, it would be redundant as the user clicked through the application, where a request for the landing page photo for example might happen over and over again. He then asked me if I had ever worked with a static site generator, to which I replied no. After receiving a rejection from the company, I took that as an opportunity to fill the gap in my knowledge.

A static site generator (SSG), as its name suggests, works best with websites consist of static assets (photos, text, etc.). The SSG takes in data, content, and templates, processes them, and outputs a folder full of all the resultant pages and assets. This way, when the client requests the data for the website, it has already been pre-rendered, improving the load time and speed.

Another company I interviewed for was in the business of creating medical education websites. When I spoke with the CTO, he described how the websites bring together content from 3-D graphic artists who made visual models of the medicine, typewriters who wrote the informational content explaining the disease or application of the medicine, and web designers who brought interactivity to the digital experience.

It sounded like a perfect use case for a static site generator. The assets from the 3D graphics and text were unlikely to change very much over the lifetime of the website, and thus could be optimized by being prerendered, making the retrieval of the data much quicker. The CTO smiled in response to my observation, saying that it was the exact mentality that he had when he came across Gatsby, a SSG solution. We spent the rest of the interview talking about strategies for improving the performance of static websites and their tradeoffs.

I only made the connection between the medical education websites and static site generators because I had researched the topic extensively and knew it very well, but that was only because I was willing to own what I didn’t know in the apartment catalog question.

In the job search, it is possible to not get the offer and still walk away with a win. The knowledge that you gain from preparation is yours to keep once you have synthesized and digested it, so I shifted my perspective of high pressure performance based job interviews into informal learning opportunities. The wider range of situations you can appropriately apply a piece of knowledge to, the more valuable it becomes, both on the job search and on the job itself. Make it a priority to gain the relevant knowledge and challenge yourself to connect the dots. The goal then becomes not just landing a job offer at every interview, but to walk away with a new nugget of knowledge.

2. Find out how you like to solve problems

Successful problems solvers have the ability to understand the underlying structure of a problem before they jump to a solution or an immediate approach. When faced with a problem, the first question I have to ask myself is: what kind of problem am I looking at? In preparing for technical interviews, this was my biggest takeaway.

When solving a coding problem, a strong foundation understanding applications of data structures and algorithms is paramount. It is the foundation of computer science and is how real world objects can be represented and manipulated through programming. In a coding interview, programmers are asked to maneuver through the problem in the context of a data structure, such as traversal through a binary tree or leveraging the constant look up time of a hash table.

However, interviewers are not looking for your ability to regurgitate lines of code to perform a binary search. They want to see how you break a problem down, and also how you apply your data structure and algorithm knowledge. What they really want to know is that when this person is on the job and is building out features, how will this person address edge cases or constraints? Do they ask clarifying questions before they dive in to their approach? How explicit can they be and how clearly can they communicate their intent?

By nature, the solution to a coding problem is rarely obvious from the start. It is guaranteed that you will have to dissect the prompt and determine which data structure or algorithm best fits the shape of the problem. Without a consistent approach to problem solving, you have to make ad hoc decisions on the spot, which can be difficult and introduce undesirable unpredictability in an interview setting.

In your practice of coding interviews, take an introspective look and study your own good and bad habits. Ask yourself, when I reached a solution, how was I able to find my way to the correct approach? What was the moment that it clicked? How do I recreate that? When I get stuck, in the heat of the moment, how do I recognize that I’m stuck and avoid diving down a dead end? How do I get out of my own way?

Like a well conditioned boxer, once you’ve established a synergy between your technical repertoire and personal style, you become a formidable force. You don’t control the type of problem that you will be presented with, but you do control your own problem solving toolkit and system. Train it well, and when the time comes to step in the ring, you’ll be ready.

3. Make a system and simplify

The job search is challenging on multiple dimensions, it can often feel like so much is out of your control. It is inherently a noisy and chaotic process if you choose to brute force your way to interview prep, personal projects, outreach, networking, sleep, physical and mental health, relationships, and maintaining any sense of a normal life. This is why it’s imperative that when you are looking for a job to break down your problems into manageable chunks and systematize them.

One of the comforts that a job provides is the structured, scheduled environment and defined scope of work. When you’re looking for a job, no one is telling you what you need to do next or how to do it. That responsibility falls on your shoulders. Defining your own standards of success and setting up your systems allows you to progress in a direction without feeling like you’re not making any progress.

The tool that I utilized the most during this time was my calendar. By putting events on my calendar, I had allocated time to do everything I wanted to do: job search, algorithm practice, personal projects, but also take care of my life outside of work by scheduling time to check in with friends, cooking nice meals, and getting exercise. When I sat down at my desk, I didn’t have to spend time thinking about what I should be doing, a previous me had already decided. My schedule also included breaks, which allowed me to take a step back and not feel guilty if I wanted to go play video games or watch some YouTube or go for a walk.

By pre-deciding, you don’t pay the cost of the decision making fatigue, determining at each moment what the best thing is to do. Should I be working on my data structure knowledge or on outreach? Ideally, both, and if you have designated time for them, you don’t have to feel that you’re slacking off. If you know that you want to practice algorithms and improve your fluency, it will not happen overnight. You’ll be much better served giving yourself a consistent, shorter duration of practice rather than waking up one day feeling extra motivated to go for six hours straight and then deciding the next day that you’re too exhausted to do it again.

Think of your thoughts and time as currency. From an investment perspective, it is unwise to put all your eggs in one basket and hope for a huge payout. A healthier and more robust portfolio is a diverse one. Schedule time for your own personal wellbeing, alongside your professional goals, because even when you do land that job, you will want to be able to balance both. By attacking the job search on all fronts, you take small but meaningful steps in the right direction.

By making your job search system as a function of time, you allow yourself to make incremental progression in the direction that you have decided. No matter how small the time investment, compound interest is your friend and by making your investment based on long term valuation, you guarantee that your time is not going to waste and actually is culminating in a greater payoff in the end. To borrow an example from James Clear’s Atomic Habits: If you make just a 1% improvement every day, in six months, that results in a 6X return. If you continue that trend for an entire year, that results in a 37X return.

Choose which areas that you need that 1% increase in and schedule time to do them, then commit to it. Once your system is defined, all you need to do is put in the time. In a recent article written by Barack Obama about how he approached the toughest decisions of his presidency, he states:

Looking back, the number of complex situations I had to adjudicate seems remarkable — that’s the job of the President of the United States. But the truth is that, even as regular Americans going through our days, we face countless decisions — a reality made even more acute by the pandemic. We’re constantly assessing how to act and what to do, carefully weighing the safety of each choice. It can be exhausting. The best we can do is find a framework that helps us consider our choices, knowing that there may not be one perfect answer. That way, we can rest a little easier knowing that did the best we could in the circumstances, come what may.

4. Grow an appetite for rejection

Two months into the job search, I received a job offer to be a software engineer at a consultancy, working on a migration from a traditional REST API to a GraphQL based web application. It was my first real job offer and I had finally reached my yearlong goal of changing my career to become a software engineer. However, as advised in the boot camp, I was told not to accept right away and instead to continue looking for opportunities to strengthen my position in negotiation.

A week later, a professor at Columbia University reached out to interview me for a role developing an online platform for data scientists and professors to host and distribute AI models. It was a dream job. I would have the opportunity to combine my technical skillset in web development with my intellectual curiosity of artificial intelligence and I knew my passion for both would show through my interview and take home assignment. I spent hours while I was in Maine on vacation with my family to work on the assignment and submit it. The professor loved the implementation and invited me back for a final round interview.

The following Monday, I received an email from Columbia professor stating that they had chosen another candidate for the job. A few days later, the consultancy informed me that they had lost a major client and could no longer afford to bring me on as an employee. I went from being one step away from my dream job and having a safety net to absolutely nothing within the span of a week. After the one and a half months I had spent going through both processes, including studying for the interviews, learning a completely new set of technologies for a three hour live coding challenge, a take home that I spent four days on, and a combined five rounds of interviewing, I had absolutely nothing to show for it.

I was heartbroken. As cruel as 2020 had been, this was an exceptionally awful experience. If there was ever a point where I doubted myself the most in my ability to make this career change happen, it was after that week. I was so disappointed that I didn’t look at my computer or code for days.

People often say that the job search is analogous to dating. The courtship process can be lengthy, confusing and uncertain, but it all pays off in hopes of a prospective future and a match for both parties. Unfortunately, the sting and the numbness of rejection hurts just the same. The future that you imagined having together all of a sudden becomes a distant fantasy. After submitting yourself to that sensation of getting knocked down over and over again, one has to wonder if they’re going mad or if the journey is worth it.

However, if your goal is to find a partner or to find a job, you won’t find it laying on the ground. In an interview of Guy Raz of How I Built This, a podcast that tells the origin stories of the world’s most well known companies, he was asked if after interviewing all these different entrepreneurs if he had discovered any common thread between their paths to success. His response was that those who had developed an appetite for rejection ended up developing the resilience necessary to arrive at success.

Just like dating, it doesn’t matter if a thousand people tell you no if just one person ends up saying yes. Hearing no hurts, whether it’s from a company or a potential partner, but it is important to be able to separate the rejection from your own self-esteem. All feelings are transient and how you feel now is not how you’re going to feel forever. A rejection does not diminish what you bring to the table or your value, and thankfully, a single “no” does not eliminate the thousands of other opportunities out there. Remember to be kind to yourself. Give yourself time and space to process your pain, but when you are ready, muster up the courage to look again.

5. Discover a means of self-expression

In an attempt to avoiding burn out on the daily grind of the job search, I decided to find hobbies to pick up. Interspersed in my schedule were time blocks dedicated to reading, writing, and even just going on walks with friends. In the moment, these side projects may have not had a direct impact on me finding a job, but it drastically improved my tangential skills that made me a compelling candidate in the job market.

I discovered that writing helped me digest experiences and form them into valuable messages for both myself and others. The more adept I became at describing my internal thoughts and feelings in English, the more explicit and expressive I became in coding. A skilled programmer is someone who is able to take an abstract concept and write code that formalizes the process in a clear and concise manner. By forcing myself to sit down and write, I had to think from the perspective of my audience and how to best convey my intent.

On one of the walks with my friends, I shared that I felt that while I was aware of my own self-image and worth, I wasn’t always the best at portraying that in the context of a job interview. My friend found that hard to believe, as he noted that I have great speaking skills, but also added that I maybe had to think from the perspective of the interviewer and what they were looking for.

I connected that piece of feedback with a personal goal of creating my own podcast. On my podcast, I interview friends and family to tell their own stories and spend a lot of time crafting questions to allow the guests to become their own storytellers. One guest spoke about his sexual orientation and how it informed his art and his views on art in the digital age. The biggest revelation that I had was the power of storytelling and being able to convert your life experience into a narrative. While I had been good at listing off my personal achievements and skills, what wasn’t clear was how my narrative aligned with that of the company, and that’s exactly what I needed to do for the companies I was interviewing for.

Observing how the people that I interviewed were able to reflect on the challenges they faced and find a path forward was equal parts inspirational and informational. Anyone can identify all the problems that they’ve faced in their life, some can figure out a way over their obstacles, but one must take sober look at the past to be able to distill experience and lessons into the shape of a story. At each interview I gave for a job, I started to view the stories from the perspective of the company and how I might fit into that narrative.

The hobbies that I picked up could easily be misconstrued as frivolous, but they added a different perspective for me to pursue my job search through a unique lens. It allowed me to approach my job search through an orthogonal angle and gave me an ability to express myself with higher fidelity. By picking up a hobby that adds another dimension to your forms of personal expression, whether it be dance, art, exercise, gaming, etc., you can take the transferrable skills from those activities and gain more of an understanding of the unique merits that you provide as well as your capacity to share that value.

6. Find people who believe in you

During quarantine, I spent my job search at home in a desiccated market without professional experience as a software engineer. It was lonely. I hadn’t seen my friends or family in months and I had just received yet another round of rejections, meaning I would have to start my search from scratch yet again. However, despite all this, I had a partner who was in the midst of the complications of starting her own career as a teacher, and she is one of the main reasons for the preservation of my sanity and ultimately my job offer.

Without Alex consistently supporting me through failures and obstacles, I don’t know if I would have even made it this far. She was there to listen when I complained about work, and fully supported me when I came up with the idea to even commit to leaving my job and changing my career. During the boot camp, she let me stay in her 200 square foot apartment with her as she finished out graduate school. We moved in together in July and she offered to cover the majority of rent, confident that I would be able to land a job soon and pay her back. Having someone believe wholeheartedly in your ability to succeed and stand by you every step of the way is an absolute blessing that I am incredibly grateful for.

Right before my final interview, I was nervously pacing through the apartment when she grabbed me by the shoulders, looked me directly in the eyes and said “This is what you’re best at, you’re going to be great”. The very first question of the interview involved a concept that I was unfamiliar with, and I completely fumbled it, but instead of getting down about it, I continued to move forward and gained more positive momentum as the interview went on. Ultimately, the conversation went extremely well and I felt great after the interview despite botching the first question.

When you’re on something as independent as a job search, even though at the end of the day the company only gives offers to individuals, that journey doesn’t have to be travelled alone. There are people who will willingly give their time and resources just to help you realize own your goals. Those people do not necessarily have to be romantic partners, they can be friends, family members, managers, colleagues, anyone that you share a personal rapport and feel comfortable talking about your dreams with.

Once you’ve established your relevant knowledge, tuned your problem solving instruments, systemized your job search, harnessed the power of perseverance, and honed in on your narrative, all that’s left is surrounding yourself with a support network of people. After all, your title of friend and family member does not change when you get a new job. I went on this year long journey in hopes of securing a future for my career, my personal goals, and my life with my partner and have walked away with not just a new job, but a multitude of lessons that I hope might help you someday.