Steven Dao – Software Engineer at LinkedIN
One year ago today, I started Software Engineer job at LinkedIn. Six months before that, I decided to leave Houston, Texas, my life-long home. I quit my software engineering job at JPMorgan Chase, sold my car, and bought a one-way flight out to San Francisco. I was all in. This is the story of my journey to Silicon Valley, how I hacked the job search, and the path I took to land a top-tier company.
Throughout college I’d always enjoyed writing code and building useful stuff. I studied Computer Science at the University of Houston. From very early on, I felt that I belonged where the best technology companies were, where the best tech people were. I love my city and Houston will forever be my home, but I had a growing realization that this wasn’t the right place for me. So, I decided. I’ll take a job at JPMorgan, learn as much as possible in this role, and spend exactly one year preparing myself for the move to San Francisco. I wanted to be as ready as possible for when I made the leap, so I spent almost all of my spare time outside of work studying for the notoriously difficult tech interviews. I would work my 8-to-5 job at JPMorgan, then from 5:30pm to 9pm I would hit the nearest Kung Fu Tea shop. I spent four hours everyday studying topics of the tech interview: data structures, algorithms, and software design. Then I’d go to the gym, go home, rinse and repeat. I did this for about ten months. I think I clocked in a good ~500-700 hours at Kung Fu Tea.
A short trip out to the Bay Area
Come August, I knew it was time for me to starting making moves. I applied for as many Bay Area companies that I could find. I requested time off and booked a two week round-trip out to San Francisco. This should be plenty of time to land my dream job, I thought.I’ll go to SF, interview and rack up some sweet Silicon Valley offers. Then, I’d come back to Houston, put in my two week notice, pack up my stuff, and return to SF to live my new life. There’s no way this plan could fail. I spent the past year preparing myself for success. I didn’t plan for failure.
A mentor of mine and also a former Houstonian, Kim Pham, offered to house me during this stay. Having made the move to SF a few years earlier, she was able to give me incredibly insightful advice and guidance over the past year. I took this time to explore the city. I also went on interviews with a few startups. I was so confident that with my studying over the past 8 months, I’d nail these interviews. Boy was I wrong… and the failures hit hard. I was able to land one offer from a tiny startup. I wasn’t too interested in this offer, but it was something. It gave me some hope that, given some time, I could maybe land something decent.
I knew that I couldn’t keep flying back and forth, though. Especially with a full-time job. If I learned one thing from my two week trip, it was that I wasn’t going to find my dream job like this. I needed to leave Houston. I needed to be in San Francisco. I chose an arbitrary Friday in mid-September. This would be my last day at JPMorgan.
In the few weeks leading up to my planned departure, I shared my goal of making it out to Silicon Valley with my close friend, Tung Dao (we’re not related). He’s also a software engineer and had a decent job at an oil company. I told him to consider moving with me. I’m not sure what was going on in his mind at the time, but with less than a month to think about it, he decided to take me up on my offer.
A one-way trip is the only option
At the start of September, we both put in our two weeks notice and began planning our trip. We bought our one-way flights out to San Francisco. We also booked an Airbnb to live in. We gave ourselves a runway of about 4 months, and had to find our new jobs by no later than December. Neither of us had much saved up, barely enough to make 1-2 month’s rent. I had a bunch of credit cards, though. All in, right? I was going to land my dream job no matter what.
Hello, San Francisco
On September 19, 2016, we departed from Houston, Texas and landed in San Francisco, California. Our new home.
We rented a bedroom in Daly City, in a house that we shared with other Airbnb guests. You can see my little bed in the corner. We didn’t spend too much time here. Most of the time we spent on our own. We realized early that our individual mindsets toward the job search were very different, and so for the most part, we each went on our own paths.
Hacking the Job Search
I landed in San Francisco with no companies in the pipeline and no job interviews lined up. I had no idea where to start. The typical thing to do would be to search “Software Engineer positions” into sites like LinkedIn, Indeed, Glassdoor, etc., and sift through all the companies one by one. This will take forever. What if I never reach the search result of what truly is my dream company?
From my recent experience in August, I learned that submitting online applications was absolutely terrible. I was confident it wasn’t my resume. In trying to “perfect” my resume, I spent more than 20 hours on it, going through 14 iterations of peer reviews and edits. Still, in August, my response rate was <2-3% for the ~50 applications submitted. There’s something very flawed with the current way of online applications. It’s tedious and inefficient–the exact problems that we as engineers set out to solve everyday. How could I hack this application process?
To me, these two questions posed a very interesting problem–an engineering problem–and I wanted to solve it for myself.
I figured that the best way to find the company most fit for me would be to collect data on every single tech company in the Bay Area. In a few days, I wrote scripts to aggregate data on as many companies I could find. I collected as much useful data as possible for each company, such as their size, location, technology stacks, valuations, etc. In the end, I had a database of over 6500 companies, from tiny startups to big techs. I even had links to their career pages, what engineering positions these companies had open. I also had their Glassdoor rating and number of ratings. This was a great start.
I thought it’d be useful to create a frontend for this database, so that I and others could easily use it. I bought a domain for it, created a Flask/Python app for the backend, a bootstrap interface for the frontend. This project eventually grew over the months into what is nowJobmate.io.
What was supposed to be a weekend project turned into a passion project that I worked on over the months, in-between studying and interviews. I didn’t know it back then, but creating Jobmate.io turned out to be a game-changing trump card that influenced the rest of my job hunt.
Finding the right people to talk to
I had this giant database of companies, but one problem still remained. How do I get my foot in the doors of any of them? The online application process was obviously unfair, perhaps broken. Well, if I wanted to get my resume read, who better to read it than a human-being? How do I find the right people to talk to? I thought of the people that would possibly be interested in hiring an engineer: recruiters, engineering managers, and maybe even CTOs and CEOs. Let’s automate this. I wrote scripts to find them. By the end of this, I had a list of over 50,000 recruiters, managers, and founders from these ~6500 companies. I used the “email permutation” method (google it) along with Rapportive (a Gmail extension) in order to find their email address.
Now, it was just a matter of reaching out to them. I created a template for my introductory letter that briefly described my experience and stated my interested in joining their engineering team. Then I automated it. (you can probably guess by now that I like automating things). 50,000+ recruiters/managers, 50,000+ emails ready to fire. All it took now was copy-pasting into the Gmail Compose form and clicking Send. With this, I was able to “apply” to one company every 15-20 seconds.
List of the best companies to apply for? Check.
Direct communication to someone internal to the company? Check.
Now, I was ready to get started on interviews.
Unending stream of interviews, unending failures
Email responses requesting phone screens were coming in like rapid fire. These were from companies that I dreamed of one day working for (you can see a portion of them in the image to the right!). I scheduled about 2-3 phone interviews on almost all of the days that I was not in an onsite interview. I was taking about 2-3 full-day onsites per week. It was unfortunate that I was horrible at interviewing, and for most of my time in SF, I performed terribly. Each and every one of those interviews, phone or onsite, was overwhelmingly nerve-wracking, and I froze up frequently, stuttered a ton.
For the first few months into it all, I had an unfaltering doubt that I wasn’t cut out to work for the top companies in Silicon Valley. Rejections and failures came in just as fast as the phone screens. Every morning, I would wake up to one or two emails that read, “Sorry, unfortunately the decision is not to move forward at this time.” Sometimes I was lucky enough to get a phone call that said the same. For the first month especially, it was mental torment, because I took every single one personally. I did manage to get a few offers from small startups, but I wasn’t too excited for them. I challenged myself to keep going.
Discipline was a priority. Routine, persistence, mental toughness; these were all important. As time passed, the rejection letters got easier to swallow. I welcomed any feedback, whether I succeeded or failed. Success in an interview meant that I had a checkpoint in my journey. It meant that even though this company wasn’t my top choice, I could stop here and accept the offer. Failure is where I learned the most. I didn’t just welcome failure. I dissected it. I did play-by-plays of every minute of the interview, and taught myself what I could have done differently. I thought back to every memory I had of an interviewer staring back at me with a blank expression or confused look on his or her face. This is how I figured out what I needed to improve on. I worked on these areas the most. Day in and day out, I practiced, and got better and better.
5 months. 145 days to be exact. From the day I landed in San Francisco, to the day that I received the happiest phone call of my life. It was a call from a recruiter at LinkedIn. She congratulated me for passing my onsite interview, and offered me a position as a Software Engineer. I’m finally done.
Some numbers from the job hunt
- I reached out to 145 companies, all of which had a 4.0+ Glassdoor rating and at least 20 reviews. I sent 243 cold emails to the employees (recruiters, hiring managers, etc.) of these companies
- I received a response from 123 companies, of which 54 rejected my resume and stated or that there was no fit position at the time
- 69 companies requested a phone screen, of which 30 passed on going any further
- 39 companies requested a phone interview, and I failed 25 of them
- 19 companies gave me the opportunity to go onsite, and I failed 12 of these onsite interviews
- By the end of the 5 months, I received 5 full-time offers: 2 big tech companies, and 3startups, small to medium-sized
- With each phone screen lasting about 20 minutes, each phone interview 1 hour, and each onsite interview 6 hours (on average), I racked up a total ~177.15 hours of interviewing
- I spent over 20 hours on 14 drafts of my resume, and went well over 1000 hours of studying and practicing interview problems since my days studying at Kung Fu Tea in Houston
The numbers certainly don’t lie. I’d still call myself a terrible interviewee. I also think that there are many things a standard tech interview fails to measure, and many potentially good engineers are passed up because of this. However, I learned something valuable about myself; that I have the dedication and persistence to go through all that I did. That, combined with patience and luck, was enough to reach any goal that I set for myself.
Lessons Learned During Software Engineer Job Search
Reframing my mind to learn from every failure
I didn’t think I’d last very long at this if every rejection and failed interview killed me a little bit each time. As time went on, I began reframing these failures as learning opportunities (which is definitely easier said than done). I disallowed myself to take the rejections personally, because that’s when they stung the most. I got better at this with practice. I also kept in mind that I only applied for the best companies in the Bay Area, and that the competition was tough.
For most people, they have all their hopes set on passing one interview to land at the one company that they aimed to work for. I was extremely fortunate that I had a good steady stream of interviews from good companies flowing in. I had no time to worry about failing this one interview, because I needed to focus on the next five coming up. It was a good problem to have.
I still don’t think I’m great at interviews. I just know now that it’s a practiced skill, and I can push myself to improve.
Things aren’t as risky as they seem
I didn’t have much money saved up when I set out for SF. I sold my 2008 Honda Civic for $3000 in cash. I also had about seven credit cards. I opened up two more while in SF, taking advantage of 0% APR promotions as much as possible. I maxed out most of them. I really was all in. I thought that if I failed to make it in the Valley, I could always return to Houston. I could always just get another job like my last. Maybe save up some money, and try again. But I knew that if I didn’t at least try, I’d always regret it. I figured that no matter how deep a hole I dug myself into, I’d land something great that’d enable me to climb myself out. (This was pretty crazy, and I wouldn’t recommend this approach.)
Mentorship is and will always be invaluable
I’ve always held a strong belief that those with great mentors will go the farthest and the fastest in life. A good mentor will not only have good answers to the important questions. A good mentor will know what the right questions are to ask in the first place. This idea was at the core of my psyche, and I sought advice from as many successful people that I could find. I used LinkedIn pretty aggressively to search for potential mentors. I looked into the alumni groups from the organizations I joined in school, and tapped into these vast networks. I reached out to dozens of people I’d never met, asking for a bit of their time to hear their story of how they made it to where they are today. One person I’d never met before, Timothy Santos, not only gave helpful advice, but he also generously offered his home for me to crash in at the beginning my job search (coincidentally, he’s now my colleague at LinkedIn).
I reached out to over 30 people through email or LinkedIn, all from many different backgrounds and life experiences. Almost everyone spent 30-60 minutes over the phone or a coffee/lunch, sharing their life story with me. I was astounded by the amount of people that were willing to offer their time and advice to someone they had never met. Some of the most cherished memories were being invited to visit some of my dream companies for the first time. I’ll never forget the day I had lunch with Khang Tran and was able to pick his brain on his work at Uber, or visiting Rong Zhao and learning about his life at Dropbox.
I’m forever grateful for all of the support I received from all of my mentors. Without them, I would not have gained the insights and experiences that I have today.
“In my walks, every man I meet is my superior in some way, and in that I learn from him.”― Ralph Waldo Emerson
Thank you for the mentorship, guidance, and all of the valuable advice, Kim Pham, Khang Tran, Rong Zhao, Gordon Wintrob, Jonathan Chao, Art Chen, Darren Chan, Victor Liu, Timothy Santos, Andrew Foong, Maxwell Tang, Jacky Lee, Calvin Tuong, Michael Liang, Fletcher Wu, Grantland Chew, Sam Wu, Henry Wang, Ramon Qiu, Nathan Park, Leo Rong, Mianna Chen, George Pai, Tony Wang, Aaron Wang, Jason Dewn
Most of whom I’d never met before, and all willing to share their time, knowledge, and experience.
Lastly, thank you Tung Dao, for being foolish enough to quit his job and go on this crazy journey with me.
Extra: My Daily Routine
It took me a few weeks to finally settle into a routine, and also to find a study spot that I really liked. Every weekday, I would wake up at 6:30am. I’d leave the house by 7am, and walk 22 minutes to the nearest BART station in Balboa Park. I would take the train into the city, and get off at Montgomery Station. Then I’d walk to 222 2nd Street, where there’s an Equator coffee and a spacious public workspace (shown in the main photo). I’d grab a table, and this would be my spot for the next 8-10 hours. I would spend this time studying, applying for companies, and working on Jobmate. Sometimes I would even do phone interviews here, although it could get a bit noisy. For lunch, I would usually go to The Bird on New Montgomery St. (best spicy chicken sandwich, ever). At 6pm, the workspace would close. I would then go to the gym, then make my commute back to Daly City to end the day.
Fun fact: The public workspace where I spent all my time studying is the same building as the LinkedIn San Francisco office!
Almost everyday for dinner, I would go to the 7-11 across the street, because I’d be too exhausted to cook anything. On the weekends, all these places would be closed, so I would find a Philz Coffee and do the same routine. This was pretty much my life during this time, seven days a week.
Thanks for reading! This was my first post of many more to come, where I’ll dive deeper in sharing more of my strategies and tips in hacking the job search. Make sure you follow!
-Steven Dao, Software Engineer at LinkedIN