how to hire software engineers: best and worst practices

49
Gayle L. McDowell | Founder / CEO, CareerCup gayle in/gaylemcd gayle Dev Interview Training How to Interview Developers: Best & Worst Practices Oct 15, 2015

Upload: gayle-mcdowell

Post on 12-Apr-2017

1.596 views

Category:

Software


1 download

TRANSCRIPT

Page 1: How to Hire Software Engineers: Best and Worst Practices

Gayle L. McDowell | Founder / CEO, CareerCup

gayle in/gaylemcdgayle

Dev Interview TrainingHow to Interview Developers: Best & Worst Practices

Oct 15, 2015

Page 2: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 2

Hi! I’m Gayle Laakmann McDowell

Author Interview Coach Interview Consulting

<dev>

</dev>

(CS)

(MBA)

Page 3: How to Hire Software Engineers: Best and Worst Practices

Core BeliefsPhilosophies around hiring01

Page 4: How to Hire Software Engineers: Best and Worst Practices

Gayle Laakmann McDowell 4gayle in/gaylemcdgayle

#1: Interviews don’t need to mirror the real world

Page 5: How to Hire Software Engineers: Best and Worst Practices

Gayle Laakmann McDowell 5gayle in/gaylemcdgayle

#2: Good candidate experiences matter

Page 6: How to Hire Software Engineers: Best and Worst Practices

Gayle Laakmann McDowell 6gayle in/gaylemcdgayle

#3: You’ll never have a perfect process

Page 7: How to Hire Software Engineers: Best and Worst Practices

Gayle Laakmann McDowell 7gayle in/gaylemcdgayle

#4: You need to THINK about your process

Page 8: How to Hire Software Engineers: Best and Worst Practices

The InterviewGoals & Questions02

Page 9: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 9

Goals

Great employees, not great interviewees

Good in 6 months, not 6 days Reduce false negatives Keep candidates happy

9

Page 10: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 10

Core Question Types

Experience/Behavioral Questions Knowledge Design/Architecture Problem Solving/Algorithms Coding

10

Can be mixed and matched!

Page 11: How to Hire Software Engineers: Best and Worst Practices

Behavioral/ExperienceWhat do you ask and why?03

Page 12: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 12

1. Why?

Is this a person you want to work with?

Technical expertise Has made good, interesting technical

decisions Culture fit/personality

Not arrogant, curious, initiative, etc Communication

Can they articulate impact?

Page 13: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 13

2. Bad Practices & False Negatives

Undefined “cultural fit” Interviewer assumptions Overly specific questions Not focusing on self

“We” not “I”

Page 14: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 14

3. Best Practices

Probe deeper Be nice and friendly

(Even if you feel differently) Stick to more technical discussions Challenge YOUR assumptions In every interview

Page 15: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 15

4. Evaluation

A factor in ALL interviews Err towards listing minor concerns

Even if it’s just a “feeling” Challenge your assumptions

Page 16: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 16

5. Examples

Dive into a technical project Walk through design on whiteboard Discuss tradeoffs, key decisions, etc Extensions to project (scaling, etc) Focus on personal impact

Page 17: How to Hire Software Engineers: Best and Worst Practices

KnowledgeWhat do you really need?04

Page 18: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 18

1. Why?

Do they know the stuff they should? Do they have the relevant job

skills?

Page 19: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 19

2. Bad Practices & False Negatives

Only basic knowledge Requiring stuff you don’t really

need Too many factual questions

Page 20: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 20

3. Best Practices

Hard to acquire OR a red flag Relevant to job Discussions > fact grilling

Evaluation should be mostly qualitative OR: Questions easily Googled are bad

Page 21: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 21

4. Examples

How does ____ work? How do you think it’s implemented?

Page 22: How to Hire Software Engineers: Best and Worst Practices

DesignBig, meaty problems05

Page 23: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 23

1. Why?

Tests: Ability to tackle open-ended problems Communication/teamwork skills A different side of problem-solving

Respects experience of senior candidates

Page 24: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 24

2. Bad Practices & False Negatives

Unreasonable knowledge expectations

Some candidates don’t know “the flow” Can’t ask questions More of a factual answer Don’t drive the process

Page 25: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 25

3. Best Practices

Ask open-ended problems Encourage follow up questions Have candidate walk through Let candidate drive

Page 26: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 26

4. Evaluation

Ability to make tradeoffs Ability to identify issues Separate knowledge from attributes Response to feedback

Page 27: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 27

5. Examples

Design API for… System for Amazon book rank System for TinyURL OOD for a music library

Page 28: How to Hire Software Engineers: Best and Worst Practices

AlgorithmsMake ‘em think06

Page 29: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 29

1. Why?

Smart people do good work Hires adaptable people Very effective if done well

Page 30: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 30

2. Bad Practices & False Negatives

Easy questions Questions with “a ha” moments Well known problems (or patterns)

Page 31: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 31

3. Best Practices

Ask the right questions Be nice and friendly Coach

MAKE THEM THINK

Page 32: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 32

3a. The Right Questions

Medium-to-hard questions Multiple hurdles Unusual questions Avoid obscure knowledge

Page 33: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 33

3a. Reasonable KnowledgeData Structures Algorithms ConceptsArrayLists Merge Sort Big O Time

Hash Tables Quick Sort Big O Space

Trees (+ Tries) Breadth-First Search

Recursion

Graphs Depth-First Search

Memoization / Dynamic Programming

Stacks / Queues Binary Search

Heaps

Page 34: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 34

3b. Be Nice and Friendly

Intimidated candidates do poorly Candidates cling to every word

Use this! “Good job”, “great point”, etc.

Especially if they’re struggling or nervous

Page 35: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 35

3c. Coach

Give hints as necessary Encourage examples (input/output) Remind them of key details Stop them from writing code too

early

Page 36: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 36

3d. Phone Interviews vs. Onsite

Don’t “go easy” on the phone But avoid problems needing

diagrams Strings, hash tables, linked lists are easy

to draw Trees and graphs are hard

Page 37: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 37

4. Evaluation

Not just correct vs. incorrect How optimal? How quickly? How many

hints? Compare to other candidates

Early on you won’t be calibrated More of a “gut feel” than a metric

Page 38: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 38

Rand7: Given rand5(), implement rand7() Has “a ha” moment

5. Bad Questions

Page 39: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 39

Sub Permutations: Given two strings, s and t, find all permutations of s within t.

5. Good Question

Page 40: How to Hire Software Engineers: Best and Worst Practices

CodingPractical stuff07

Page 41: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 41

1. Why?

Code quality matters Not everyone can translate

algorithm into code

Page 42: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 42

2. Bad Practices & False Negatives

Requiring every detail Tedious questions Taking over the testing Letting the candidate code too

early

Page 43: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 43

Goal: “Seemingly compilable” code. Don’t waste time

Do you really need that Node class? Encourage abbreviations, skipping

uninteresting parts, etc. Make it clear when they should/shouldn’t

code Encourage testing, refactoring, etc

3. Best Practices

Page 44: How to Hire Software Engineers: Best and Worst Practices

Gayle Laakmann McDowell 44gayle in/gaylemcdgayle

4. Whiteboard vs. Computer

More communication

More thought More focus on

essentials

BUT: slow & tedious

Can be more comfortable

Can write faster

BUT: compiling can be distracting

Page 45: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 45

5. Evaluation

Look at structure and style But differentiate what’s trainable

Not about complete vs. incomplete Let the candidate test

Page 46: How to Hire Software Engineers: Best and Worst Practices

Final ThoughtsThings to remember07

Page 47: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 47

Remember:

It’s on YOU to get the info you want Challenge your assumptions Separate “did they do X?” from

“can they do X?”

47

Page 48: How to Hire Software Engineers: Best and Worst Practices

gayle in/gaylemcdgayleGayle Laakmann McDowell 48

Remember:

Err towards noting it on feedback

Be nice and friendly MAKE THEM THINK

48

Page 49: How to Hire Software Engineers: Best and Worst Practices

THANK [email protected]

gayle in/gaylemcdgayle