Slide 1

Slide 1 text

THE TECHNICAL INTERVIEW REFACTORING

Slide 2

Slide 2 text

WHY EVEN BOTHER? REFACTORING THAT IS

Slide 3

Slide 3 text

MARK SIEMERS RUBYCONF 2018 THE HIGH COSTS OF BAD HIRING DECISIONS ▸ Time ▸ Money ▸ Resources ▸ Opportunity Cost ▸ Reputation ▸ Morale ▸ Technical Debt REFACTORING THE TECHNICAL INTERVIEW

Slide 4

Slide 4 text

MARK SIEMERS RUBYCONF 2018 THE HIGH COSTS OF BAD HIRING DECISIONS ▸ Time ▸ Money ▸ Resources ▸ Opportunity Cost ▸ Reputation ▸ Morale ▸ Technical Debt HOW MUCH IS IT COSTING YOU? REFACTORING THE TECHNICAL INTERVIEW

Slide 5

Slide 5 text

IS ANYTHING WRONG?

Slide 6

Slide 6 text

DO NEW CANDIDATES WRITE CODE DURING THEIR INTERVIEW? Joel Spolsky - The Joel Test (#11)

Slide 7

Slide 7 text

MARK SIEMERS RUBYCONF 2018 ANY CODING QUESTION IS FINE, RIGHT? ▸ Find min (or max) in a list ▸ Implement reversing a string ▸ Implement a sorting algorithm ▸ FizzBuzz (not actually FizzBuzz, but any contrived algorithm) ▸ “Now can you do it recursively?” REFACTORING THE TECHNICAL INTERVIEW

Slide 8

Slide 8 text

IN A CARPENTRY INTERVIEW… ASK ANY QUESTION

Slide 9

Slide 9 text

MARK SIEMERS RUBYCONF 2018 EQUIVALENT CARPENTRY INTERVIEW QUESTIONS REFACTORING THE TECHNICAL INTERVIEW

Slide 10

Slide 10 text

MARK SIEMERS RUBYCONF 2018 EQUIVALENT CARPENTRY INTERVIEW QUESTIONS ▸ How do you build a drill? REFACTORING THE TECHNICAL INTERVIEW

Slide 11

Slide 11 text

MARK SIEMERS RUBYCONF 2018 EQUIVALENT CARPENTRY INTERVIEW QUESTIONS ▸ How do you build a drill? ▸ How do you build a circular saw? REFACTORING THE TECHNICAL INTERVIEW

Slide 12

Slide 12 text

MARK SIEMERS RUBYCONF 2018 EQUIVALENT CARPENTRY INTERVIEW QUESTIONS ▸ How do you build a drill? ▸ How do you build a circular saw? ▸ Imagine a structure where ▸ Every 3rd plank is birch ▸ Every 5th plank is maple ▸ If the plank is divisible by 3 and 5, it must be maple and birch ▸ how many maple/birch planks in a 3 story structure? REFACTORING THE TECHNICAL INTERVIEW

Slide 13

Slide 13 text

MARK SIEMERS RUBYCONF 2018 EQUIVALENT CARPENTRY INTERVIEW QUESTIONS ▸ How do you build a drill? ▸ How do you build a circular saw? ▸ Imagine a structure where ▸ Every 3rd plank is birch ▸ Every 5th plank is maple ▸ If the plank is divisible by 3 and 5, it must be maple and birch ▸ how many maple/birch planks in a 3 story structure? REFACTORING THE TECHNICAL INTERVIEW WTF???

Slide 14

Slide 14 text

WHY???

Slide 15

Slide 15 text

WHY??? DO YOU WANT ME TO USE THIS ON THE JOB?

Slide 16

Slide 16 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (CARPENTRY) ▸ Solved ▸ Building drills and circular saws was solved long ago ▸ Standardized ▸ These tools are trustworthy and widely available ▸ Trivial ▸ Last example is an arbitrary and trivial task REFACTORING THE TECHNICAL INTERVIEW

Slide 17

Slide 17 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) REFACTORING THE TECHNICAL INTERVIEW

Slide 18

Slide 18 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved REFACTORING THE TECHNICAL INTERVIEW

Slide 19

Slide 19 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) REFACTORING THE TECHNICAL INTERVIEW

Slide 20

Slide 20 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) ▸ Merge Sort ~ 1945 (The year World War II ended) REFACTORING THE TECHNICAL INTERVIEW

Slide 21

Slide 21 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) ▸ Merge Sort ~ 1945 (The year World War II ended) ▸ Radix Sort ~ 1887 (About 35 years before the electric circular saw) REFACTORING THE TECHNICAL INTERVIEW

Slide 22

Slide 22 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) ▸ Merge Sort ~ 1945 (The year World War II ended) ▸ Radix Sort ~ 1887 (About 35 years before the electric circular saw) ▸ Standardized REFACTORING THE TECHNICAL INTERVIEW

Slide 23

Slide 23 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) ▸ Merge Sort ~ 1945 (The year World War II ended) ▸ Radix Sort ~ 1887 (About 35 years before the electric circular saw) ▸ Standardized ▸ What language or library doesn’t have sort, max, min, reverse, etc. built in? REFACTORING THE TECHNICAL INTERVIEW

Slide 24

Slide 24 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) ▸ Merge Sort ~ 1945 (The year World War II ended) ▸ Radix Sort ~ 1887 (About 35 years before the electric circular saw) ▸ Standardized ▸ What language or library doesn’t have sort, max, min, reverse, etc. built in? ▸ Studied REFACTORING THE TECHNICAL INTERVIEW

Slide 25

Slide 25 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) ▸ Merge Sort ~ 1945 (The year World War II ended) ▸ Radix Sort ~ 1887 (About 35 years before the electric circular saw) ▸ Standardized ▸ What language or library doesn’t have sort, max, min, reverse, etc. built in? ▸ Studied ▸ Hundreds of publications dedicated to the coding interview REFACTORING THE TECHNICAL INTERVIEW

Slide 26

Slide 26 text

MARK SIEMERS RUBYCONF 2018 ISSUES WITH THESE QUESTIONS (SOFTWARE DEVELOPMENT) ▸ Solved ▸ Quicksort ~ 1959 (Pre-dates cordless electric drill by about 10 years) ▸ Merge Sort ~ 1945 (The year World War II ended) ▸ Radix Sort ~ 1887 (About 35 years before the electric circular saw) ▸ Standardized ▸ What language or library doesn’t have sort, max, min, reverse, etc. built in? ▸ Studied ▸ Hundreds of publications dedicated to the coding interview ▸ Trivial (FizzBuzz, Bubble Sort, etc.) REFACTORING THE TECHNICAL INTERVIEW

Slide 27

Slide 27 text

WHY DO WE ASK THESE QUESTIONS?

Slide 28

Slide 28 text

I’M NOT SURE…

Slide 29

Slide 29 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW OPTIMAL FOR ▸ Algorithm Writers ▸ Procedure Implementers

Slide 30

Slide 30 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW OPTIMAL FOR ▸ Object Architects ▸ System Designers ▸ Application Developers ▸ Many, many other roles NOT OPTIMAL FOR ▸ Algorithm Writers ▸ Procedure Implementers

Slide 31

Slide 31 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW While the skills on the left are valuable, Often, the skills on the right are more valuable. OPTIMAL FOR ▸ Object Architects ▸ System Designers ▸ Application Developers ▸ Many, many other roles NOT OPTIMAL FOR ▸ Algorithm Writers ▸ Procedure Implementers

Slide 32

Slide 32 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW TWO QUESTION LITMUS TEST FOR YOUR INTERVIEW

Slide 33

Slide 33 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW TWO QUESTION LITMUS TEST FOR YOUR INTERVIEW ▸ Would you be happy or upset/confused if someone did this on the job? ▸ What if someone actually implemented bubble sort on the job? FizzBuzz?

Slide 34

Slide 34 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW TWO QUESTION LITMUS TEST FOR YOUR INTERVIEW ▸ Would you be happy or upset/confused if someone did this on the job? ▸ What if someone actually implemented bubble sort on the job? FizzBuzz? ▸ Which book would best prepare someone for your interview …

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

THIS ONE?

Slide 37

Slide 37 text

THIS ONE? OR THIS ONE?

Slide 38

Slide 38 text

ANSWERED YES TO EITHER QUESTION?

Slide 39

Slide 39 text

ANSWERED YES TO EITHER QUESTION? CONSIDER A SLIGHTLY DIFFERENT APPROACH.

Slide 40

Slide 40 text

WHAT IF I STILL NEED AN ALGORITHM WRITER?

Slide 41

Slide 41 text

WHAT IF I STILL NEED AN ALGORITHM WRITER? OR I’M NOT SURE OF THE RIGHT BALANCE?

Slide 42

Slide 42 text

WHAT IS THE POINT OF AN INTERVIEW?

Slide 43

Slide 43 text

WHAT IS THE POINT OF AN INTERVIEW? TO SEE IF SOMEONE CAN DO THE JOB

Slide 44

Slide 44 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW JOB EXPECTATIONS

Slide 45

Slide 45 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code JOB EXPECTATIONS

Slide 46

Slide 46 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code ▸ Understand It JOB EXPECTATIONS

Slide 47

Slide 47 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code ▸ Understand It ▸ Make it better JOB EXPECTATIONS

Slide 48

Slide 48 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code ▸ Understand It ▸ Make it better JOB EXPECTATIONS JOB INTERVIEW EXPECTATIONS

Slide 49

Slide 49 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code ▸ Understand It ▸ Make it better ▸ Read Code JOB EXPECTATIONS JOB INTERVIEW EXPECTATIONS

Slide 50

Slide 50 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code ▸ Understand It ▸ Make it better ▸ Read Code ▸ Explain It JOB EXPECTATIONS JOB INTERVIEW EXPECTATIONS

Slide 51

Slide 51 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code ▸ Understand It ▸ Make it better ▸ Read Code ▸ Explain It ▸ Make it better JOB EXPECTATIONS JOB INTERVIEW EXPECTATIONS

Slide 52

Slide 52 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW ▸ Read Code ▸ Understand It ▸ Make it better ▸ Read Code ▸ Explain It ▸ Make it better JOB EXPECTATIONS JOB INTERVIEW EXPECTATIONS What about writing new code?

Slide 53

Slide 53 text

“IT’S HARDER TO READ CODE THAN TO WRITE IT.” Joel Spolsky, A Fundamental Law of Programming

Slide 54

Slide 54 text

“CODE IS READ MANY MORE TIMES THAN IT IS WRITTEN.” Sandi Metz

Slide 55

Slide 55 text

"THE RATIO OF TIME SPENT READING VERSUS WRITING IS WELL OVER 10 TO 1.” Robert C. Martin, Clean Code

Slide 56

Slide 56 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW READING CODE VS WRITING CODE

Slide 57

Slide 57 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW READING CODE VS WRITING CODE ▸ Do you want to ask about the part of the job that is: ▸ 90% of the technical work and more difficult ▸ 10% of the technical work and easier

Slide 58

Slide 58 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW READING CODE VS WRITING CODE ▸ Do you want to ask about the part of the job that is: ▸ 90% of the technical work and more difficult ▸ 10% of the technical work and easier ▸ Even with “new” code on the job, do you expect: ▸ Starting from scratch without referencing any other code? ▸ Referencing examples and applying them to the problem at hand?

Slide 59

Slide 59 text

GREAT, BUT WHAT CODE SHOULD THEY READ?

Slide 60

Slide 60 text

GREAT, BUT WHAT CODE SHOULD THEY READ? YOURS

Slide 61

Slide 61 text

LET’S TRY IT.

Slide 62

Slide 62 text

READ CODE. EXPLAIN IT. MAKE IT BETTER.

Slide 63

Slide 63 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. WHAT IS THIS CODE DOING?

Slide 64

Slide 64 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. ‘ORDER’ AND ‘SORT_BY’ - IS THERE A DIFFERENCE?

Slide 65

Slide 65 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. WHY THE TERNARY?

Slide 66

Slide 66 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. WHY THE ‘TO_S’? WHY THE ‘TO_I’

Slide 67

Slide 67 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW EXPLAINING CODE - REVIEW

Slide 68

Slide 68 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW EXPLAINING CODE - REVIEW ▸ What is the code doing? ▸ Learn how they translate code into human understanding

Slide 69

Slide 69 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW EXPLAINING CODE - REVIEW ▸ What is the code doing? ▸ Learn how they translate code into human understanding ▸ Explain the differences between ‘order’ and ‘sort_by’ ▸ Depth of knowledge of tools used on the job ▸ Do they consider tradeoffs and the potential for breaking things

Slide 70

Slide 70 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW EXPLAINING CODE - REVIEW ▸ What is the code doing? ▸ Learn how they translate code into human understanding ▸ Explain the differences between ‘order’ and ‘sort_by’ ▸ Depth of knowledge of tools used on the job ▸ Do they consider tradeoffs and the potential for breaking things ▸ Why the ternary? Why the ‘to_s’? ▸ Knowledge of the language’s treatment of operations on different types

Slide 71

Slide 71 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. HAS THIS IMPROVED?

Slide 72

Slide 72 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. HAS THIS IMPROVED? IS IT MORE READABLE?

Slide 73

Slide 73 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. HAS THIS IMPROVED?

Slide 74

Slide 74 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. WHAT MAKES THIS A NAIVE SOLUTION? HAS THIS IMPROVED?

Slide 75

Slide 75 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. HAS THIS IMPROVED?

Slide 76

Slide 76 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. ANY ISSUES WITH THIS SOLUTION? HAS THIS IMPROVED?

Slide 77

Slide 77 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. HAS THIS IMPROVED?

Slide 78

Slide 78 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. ANY ISSUES WITH THIS SOLUTION? HAS THIS IMPROVED?

Slide 79

Slide 79 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW RECAP OF FIRST EXAMPLE - DID THEY ASK GOOD QUESTIONS

Slide 80

Slide 80 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW RECAP OF FIRST EXAMPLE - DID THEY ASK GOOD QUESTIONS ▸ About writing tests?

Slide 81

Slide 81 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW RECAP OF FIRST EXAMPLE - DID THEY ASK GOOD QUESTIONS ▸ About writing tests? ▸ About the database? ▸ Foreign key constraints, Indexing, Postgres vs MySQL, etc.

Slide 82

Slide 82 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW RECAP OF FIRST EXAMPLE - DID THEY ASK GOOD QUESTIONS ▸ About writing tests? ▸ About the database? ▸ Foreign key constraints, Indexing, Postgres vs MySQL, etc. ▸ About Rails version and Ruby version

Slide 83

Slide 83 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW RECAP OF FIRST EXAMPLE - DID THEY ASK GOOD QUESTIONS ▸ About writing tests? ▸ About the database? ▸ Foreign key constraints, Indexing, Postgres vs MySQL, etc. ▸ About Rails version and Ruby version ▸ About commit messages or reasons behind the initial implementation?

Slide 84

Slide 84 text

BUT DOES IT SCALE? Jeff Bezos - Philosophy on Life Also credited to every anonymous Ruby hater, ever.

Slide 85

Slide 85 text

READ CODE. EXPLAIN IT. MAKE IT BETTER.

Slide 86

Slide 86 text

READ CODE. EXPLAIN IT. MAKE IT BETTER. WHAT ARE SOME CONCERNS WITH THIS CODE? HOW DO WE MAKE IT BETTER?

Slide 87

Slide 87 text

READ CODE. EXPLAIN IT. MAKE IT BETTER SMALLER. WHAT ABOUT A NEW OBJECT?

Slide 88

Slide 88 text

READ CODE. EXPLAIN IT. MAKE IT BETTER SMALLER.

Slide 89

Slide 89 text

MARK SIEMERS RUBYCONF 2018 CURATING YOUR OWN INTERVIEW QUESTIONS ▸ When doing a bug fix or code refactor, save a gist/snippet of before and after with notes ▸ Or search commit history ▸ Pull a ticket from your current sprint ▸ Run a churn vs complexity report or flog score REFACTORING THE TECHNICAL INTERVIEW

Slide 90

Slide 90 text

No content

Slide 91

Slide 91 text

Move this way

Slide 92

Slide 92 text

WHAT IF MY CODE IS CONFIDENTIAL?

Slide 93

Slide 93 text

WHAT IF MY CODE IS CONFIDENTIAL? USE OPEN SOURCE!

Slide 94

Slide 94 text

MARK SIEMERS RUBYCONF 2018 REFACTORING THE TECHNICAL INTERVIEW USE OPEN SOURCE REPOSITORIES ▸ Use Open Source Repositories ▸ Ruby - 539k Repos ▸ Crystal - 908 Repos ▸ C - 197k Repos ▸ Python - 517k Repos ▸ C# - 173k Repos ▸ Elixir - 3k Repos ▸ JavaScript - 749k Repos ▸ Java - 753k Repos ▸ Objective-J - 443 Repos

Slide 95

Slide 95 text

THANK YOU Mark Siemers Refactoring the Coding Interview [email protected]