Misc.Jan 16, 2021
FacebookjFxM83

Engineer's guide to getting the best offer - part1

[I didn't write this but found this old post in 'Tech Industry' group which not everyone has access to. Sharing this to more broad group to increase exposure. Original post: https://www.teamblind.com/post/SDE-guide-to-getting-the-best-offer---part1-isDNuYPU ] I left Microsoft some time ago. I switched job several times, each time getting 40% to 60% bump in tc, and Blind helped a lot so here is my contribution back. Current tc 260k New offer 390k (had another offer at 370k) 10+ yoe I encourage people to switch if they are unhappy with their job. I found it much easier to get tc/title bump when switching compare to working for promotion. Interview skills is very much learnablel. I bombed my first few interviews but as I do more practice problems and interviews, it gets a lot easier. Unless you plan to retire in your current comlany, having an ability to switch jobs easily helps when things don't go well such as layoff, boredom, sudden need for more $ If you have other tips, feel free to comment and I will update the post. ## Before applying ## - I suggest spending at least 2 months doing leetcode. Once you talk to recruiter, things move fast and you won't have enough time to prepare for interview. I recommend paying for the leetcode subscription and focus on the problem from your target companies. You most likely won't get the exactly the same problem, but something similar. That 2 months should give you enough time to do about 100 problems. - Just like learning to ride bicycle, you are building muscle memory by solving many problems. Memorizing problems is dangerous and should be avoided because sometimes interviewers change the problem slightly which lead to a completely different solution. - Don't bother reading Cracking the Coding Interview or other interview books or algorithm textbooks from college. In my experience, they don't help that much. ## Applying ## - Update your resume with relevant work experience. If you've been in the industry for a while, I would trim it so that everything fits in 1 page. Make sure you don't have typos. - Don't lie on resume. When I conduct interviews, I ask relevant technical questions around the candidate's claimed skills. Make sure your employment history is correct. Background check can show where and for how long you worked at a company. I will go into details of what things come up during background check in later section. - Before applying through companies' website, try referral first if you have any friends or past colleagues (better). Some companies do not provide referral bonus if the resume is already in the system (e.g. Amazon). In my experience, I did not hear anything from Google when applied through website but through a referral, they contacted me the next day. - Apply to as many companies as possible. In interviews the outcome depends on you 50% and luck the other 50%. Even after doing hundreds of LCs, if you are unlucky and asked very difficult question or your interviewer has a serious communication issue or inexperienced, you won't pass the interview. The only thing you can do is to increase your chance by applying to many places. You may get offer from a place you weren't considering, but your opinion could change during interviews (i certainly did). You could also use it as a competing offer. - Some of tech companies in Seattle: twitter, airbnb, lyft, uber, google, facebook, amazon, microsoft, indeed, stripe, oracle, splunk, pinterest, dropbox, apple , etc... - Some companies have headcount for the year decided in March. If you apply between January and March, you may not hear back from recruiters and this could be why. ## Before talking to the recruiter ## - Know: tc and title you are looking for in your next job and tc range of the open job. When talking to the recruiter, you want to avoid going into your tc expectation as much as possible. "Do i have to share it now?" usually works but some recruiters push hard, so you want to have the # in mind. - Use Blind and https://www.levels.fyi/ to research the tc range and level. - Read https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/ on how to negotiate. I know you are not negotiating at this stage, but it will tell you what NOT to say to recruiter, things that could affect tens of thousands of dollars. ## 1st call with recruiter ## - Again, avoid TC conversation as much as possible. DO NOT EVER share your current TC. If have to provide tc expectation, do not give a range; give one ideal number. Watch https://www.youtube.com/watch?v=iUAcoetDgH4 for more details. - Schedule the phone screen 1 month into the future. This allows you to line up all interviews very close to each other. This helps you get into the interview mode. You could also take PTO and cramp all interviews into a couple of days. - Schedule interviews in the order of least preference. If you don't care too much about company X, schedule that one first. - If you passed their phone interview recently (within a year) but failed onsite, ask if you can skip phone interview. Lyft let me do this. - Recruiter will tell you a lot about projects the company/office is working on, plan for office expansion, etc. Write it all down. It helps later when making decision and offer negotiation. ## Preparing for phone interviews ## - If aiming for senior position, don't worry about system design at this point. Phone interviews only ask coding question (but confirm with recruiter) so focus on doing more LC. - You should be really motivated to do LC, now that you have deadline. You probably can do about 50 more during this time. ## Phone interview ## - Really understand the problem by coming up with your own example inputs and asking many clarifying questions. - Don't bother writing code unless you have a working algorithm. Working algorithm means you have gone through it using the given inputs and additional inputs you came up with and verified it works by hand. Once you have working solution, translating it to code is easy and quick. For example, in my Uber phone interview, I came up with working algorithm (confirmed by the interviewer) 40 minutes into the interview but I was able to code it up in 5 minutes and passed the phone interview. - Have clear communication with interviewer. It is easier said than done because you can control what you do, but can't control the interviewer (maybe English is not their first language, the phone line has too much noise, the interviewer is distracted with her work). I found it very useful to type everything while working toward a solution. For example, if I am using stack I would type followings into the screen while speaking out loud to my phone (use speaker phone): // stack bottom: 1 2 // stack bottom: 1 2 3 (after pushing 3) // stack bottom: 1 (after popping 3 and 2) This may appear to take more time, but I found it really helpful because: a. Help the interviewer understand what the heck you are blabbing about. If you are stuck mid way, they can help you because they can follow your thought process. b. Help the interviewer when putting their feedback into the system. Your thought process is all there in the comment. Remember, if the interviewer can't understand, they can't give you a pass even if they wanted to. I sometimes see post about failing phone interview even after getting the right answer. It is possible you have the right answer but the interviewer doesn't know it or could not follow. c. You can read through the comment when validating your solution or translating into code. - In my experience, I usually pass 80% of phone interviews. If you can't get past phone interviews, I suggest spending more time doing LC and apply to many companies because again, luck plays a big role here.

Salary Negotiation: 6 Tips on How to Negotiate a Higher Salary
Salary Negotiation: 6 Tips on How to Negotiate a Higher Salary
YouTube
Ten Rules for Negotiating a Job Offer
Ten Rules for Negotiating a Job Offer
haseeb qureshi
Levels.fyi - Compare career levels across companies
Levels.fyi - Compare career levels across companies
Levels.fyi
Google blHd8 Jan 16, 2021

CTCI helped me a lot actually.

Uber UberDash Jan 16, 2021

Elements of programming interview is an awesome book that I suggest along with LC

Microsoft h0p Oct 17, 2022

Good one OP. In some cases they can also ask you to code + design (interviewer drives the design as he/she adds complexity). and for snowflake there are two screening rounds. one for coding and one for system design. So, prepare for both.