470 likes | 793 Views
Cracking the Coding (& PM) Interview. Advice and Strategies for Software Engineering and Product Management Interviews. Gayle Laakmann McDowell Founder / CEO, CareerCup.com Author of Cracking the Coding Interview, Cracking the PM Interview , & The Google Resume. My Background.
E N D
Cracking the Coding (& PM) Interview Advice and Strategies for Software Engineering and Product Management Interviews Gayle Laakmann McDowell Founder / CEO, CareerCup.com Author of Cracking the Coding Interview, Cracking the PM Interview, & The Google Resume McDowell | CareerCup.com January 2014 @ UW Seattle
My Background • Software Eng @ Google, Msft & Apple • CareerCup.com, Founder / CEO • Author • Cracking the Coding Interview • The Google Resume • Cracking the PM [Product Management] Interview • Interview coach for acquisitions & acquihires McDowell | CareerCup.com
everyone programmers McDowell | CareerCup.com
Most Common CS Jobs McDowell | CareerCup.com
What is a Product Manager? Product Manager (“PM”) == “Associate Product Manager” (Google, Yahoo, Facebook, etc.) == “Program Manager” (Microsoft) McDowell | CareerCup.com
What is a Programmer? Programmer == Software Engineer == Software Developer (Dev) == Software Design Engineer (SDE) (Microsoft) McDowell | CareerCup.com
What is a Programmer? • Write code (duh) • Architect systems • Plus sometimes: • Write specs • Talk to users • Figure out feature set • Etc McDowell | CareerCup.com
What is a Product Manager? • Manage the PRODUCT, not the PEOPLE • “Build a great product for the users” • Who are the users? • What are the features? • When will we launch? • How do we launch? • etc McDowell | CareerCup.com
What is an SDET? Software Test Engineer (SET)(Google) == Software Design Engineer in Test (SDET) (Microsoft) != Quality Assurance (QA) McDowell | CareerCup.com
What is an SDET? • Figure out what needs to be tested and how • Write code to automate testing McDowell | CareerCup.com
TODAY • Software Developer + PM • Experience • Resumes • Interviews • Offers McDowell | CareerCup.com
Big Company Evaluation (Devs) Testing aptitude, not knowledge McDowell | CareerCup.com
Start-Ups • Coding + Intelligence • “Hit the ground running” • Do you know “their” technologies? • Entrepreneurial • Have you started things? • How much direction do you need? • Personality • Will you fit with the team? but… it varies! McDowell | CareerCup.com
PM Roles • Communication Skills • User-Focused Thinking • Passion for Technology • Analytical Skills • Technical Skills (position dependent) McDowell | CareerCup.com
Resumes & Application Process McDowell | CareerCup.com
How to Get an Interview • Your “Pedigree” • Education • Work Experience • Projects • Github / Online Profile • Make an awesome resume • Career office • Be [nicely] aggressive! McDowell | CareerCup.com
Did I mention… PROJECTS??? McDowell | CareerCup.com
Projects • SHOW YOU CAN CODE • Hard classes with lots of projects • Build your own iPhone/Android app • Write a web app • Join an open source project WHAT YOU BUILD IS LESS IMPORTANT THAN THAT YOU BUILT SOMETHING McDowell | CareerCup.com
How We Review Resumes • Pull resume out of giant stack • Spot-check: company names, positions, projects, schools. • Skim bullets to see if you’ve written real code. “Glanced at,” not read. 15 – 30 seconds Reject Interview • Go to next resume & whine about how many more you have left. McDowell | CareerCup.com
How CS Resume Should Look Observe: No Objective! Objectives / summaries are almost always useless. One Page Only! Unless > 10 years exp. A Real Resume Format with organized columns Short (1 – 2 line bullets) Focus on Accomplishments not responsibilities GPAif at least 3.0 max (in-major, overall) 3 – 4 Projects Courses & independent Finished or unfinished List of Technical Skills Short! Cut the “fluff.”
Talking to Recruiters • Show: • What you’ve done (mobile app? Show it!) • What you’re excited about • Have a “pitch” ready • Weird is okay • (arrogant is not) McDowell | CareerCup.com
The Interview McDowell | CareerCup.com
Common Interview Questions • Behavioral/Resume Questions • Product Design Questions • Estimation Questions • Software Engineering Questions • Coding & Algorithms • Object Oriented Design • Scalability • Factual / Trivia / Language-Based McDowell | CareerCup.com
How You Are Judged How did you do RELATIVE to other candidates on the SAME question? It’s not about how quickly you solved the problem… … it’s about how quickly you solved it relative to other candidates. McDowell | CareerCup.com
Behavioral Questions McDowell | CareerCup.com
Goals of Your Answer • Answer the question. • Deliver a goodanswer. • Communicate well. • Nugget First • S.A.R.: Situation, Action, Result McDowell | CareerCup.com
Preparing for Behavioral Qs • Create Preparation Grid for Projects + Behavioral Grid [for PM & less tech. roles] McDowell | CareerCup.com
Structure 1: Nugget First • Lead with your “thesis” / nugget • Grabs the listener’s attention • Gives them context for where you’re going. Q: What accomplishment are you most proud of? A: I’m most proud of the way I re-architected the … McDowell | CareerCup.com
Structure 2: S.A.R. ituation ction esult S What was the issue? A What did you do about it? R What was the impact? McDowell | CareerCup.com
Interviews McDowell | CareerCup.com
Coding & Algorithm Questions • Study the basics • Complex algorithms generally unnecessary. • Guide yourself by interview questions • Basic data structures, algorithms + Big O • Practice solving questions • Don’t memorize! • See: CtCI & CareerCup.com • Push yourself! • Write code on paper McDowell | CareerCup.com
Coding & Algorithm Questions • Understand the question • Clarify, remember key details, etc. • Draw an example • “Sufficiently interesting” • Talk out loud • Analyze • Does it work? What’s the big O time / space? • Do YOU understand it? • Code (SLOWLY) • Test + fix (CAREFULLY) If you’ve heard a question before, admit it. McDowell | CareerCup.com
What does a “good coder” do? • Be methodical. Don’t try to rush. • Don’t code if you don’t understand • Reasonably Bug Free • Thorough testing (and careful fixing) • Check for error conditions • Clean coding • Use other functions • Good use of data structures (define own if useful) • Concise and readable McDowell | CareerCup.com
Whiteboard Coding Tips • Code in the FAR top left corner • Write small & straight • Pseudocode if you’d like • Use arrows to insert new code snippets • Use “good” variable names, then abbreviate • Modularize code as you go • “Drill down” into details as you go McDowell | CareerCup.com
Common Mistakes • Ignoring information given • Not using examples • To design algorithms • While writing code • “Pushing through” code when confused • Incoherent thoughts -> incoherent code • Diving into code too quickly • Writing unnecessary code • The details: • Off-by-one, < vs <=, division (and any math) McDowell | CareerCup.com
How To Solve Algorithm Questions Compare to similar problems. Solve first for a simplified / tweaked problem. Solve for n = 1, and build solution for n = 2. Try to apply data structure to solve problem. McDowell | CareerCup.com
Object Oriented Design Handle Ambiguity Is it a single restaurant, or part of a chain? Design the Core Objects Guest, Party, Table, Server, Host, … Analyze Relationships Server and Host are both Employees… Investigate Actions A Party is seated at a Table by a Host… How would you design the data structures and objects for a restaurant? McDowell | CareerCup.com
System Design Given millions of documents, find all documents which contain a list of words. Handle Ambiguity Do the words need to be in a specific order? Make Believe Assume everything can fit on one machine. Get Real Must split up data across machines. Solve Problems Divide hash table by file or by keyword? McDowell | CareerCup.com
Evaluation is RELATIVE, not absolute. <Gulp> This is a lot of stuff. Do I need to get everything right? It’s not about how quickly you solved the problem… </Gulp> … it’s about how quickly you solved it relative to other candidates. McDowell | CareerCup.com
So RELAX! Interviews are supposed to be hard! Everyone makes mistakes. Everyone! McDowell | CareerCup.com
After Your Interview • Follow-up with your recruiter • No response != rejection • You have no idea how well/poorly you did. • Seriously. I know you think you do. But you don’t. • Lots of randomness. • So if you fail, get up and try again. McDowell | CareerCup.com
Negotiation McDowell | CareerCup.com
But I hate negotiating! • Welcome to the club! • You ARE in demand. • Your offer will not be revoked. Is this conversation SO terrible that you’re willing to give up $1000+**? ** and likely more McDowell | CareerCup.com
Negotiation • Most->least negotiable (generally) • Signing bonus/relocation • Stock • Salary • Other benefits • Easier if you have another offer • Counter-offer • What matters to you? McDowell | CareerCup.com
Closing Advice • Do projects • Study for your interviews • Chase interviews • … but don’t chase money • If possible, go to an “elite” tech company • (But don’t stay too long if that’s not what you want!) • Check-in on your career. • Is this what you want to do with your life? McDowell | CareerCup.com
Other Resources • CareerCup.com • Interview Questions • Interview Videos • Resume Review • Mock Interviews • Or, follow me online at… • twitter.com/gayle • facebook.com/gayle • technologywoman.com • gayle@careercup.com • quora.com McDowell | CareerCup.com