$30 off During Our Annual Pro Sale. View Details »

The Code-Free Developer Interview

The Code-Free Developer Interview

When it comes to evaluating candidates for software engineering roles, it's hard to keep up with the latest and greatest techniques. We know logic puzzles don't work. Writing pseudocode on a white board is so tired and cliche at this point that companies brag about not doing that. Teams have resorted to what seems like an obvious choice at first blush: just have the candidate write some code. This new trend may have some unintended consequences, though.

Presented at RailsConf 2018 in Pittsburgh, PA on April 18, 2018.

Pete Holiday

April 18, 2018
Tweet

More Decks by Pete Holiday

Other Decks in Technology

Transcript

  1. The Code-Free
    Developer Interview
    Pete Holiday
    @toomuchpete

    View Slide

  2. The Code-Free Developer Interview @toomuchpete

    View Slide

  3. The Code-Free Developer Interview @toomuchpete
    My Goal For This Session:
    ERADICATE CODING INTERVIEWS

    View Slide

  4. The Code-Free Developer Interview @toomuchpete
    What is a “Coding Interview”
    • Reviewing Code Samples or GitHub Profiles
    • Code Tests (Codility, etc)
    • Code Challenges
    • Live Coding or Pair Programming

    View Slide

  5. The Code-Free Developer Interview @toomuchpete
    Disfavored Interview Techniques
    • Whiteboarding
    • “Clever” Riddles
    • Language Trivia

    View Slide

  6. The Code-Free Developer Interview @toomuchpete
    Why Interview with Code?

    View Slide

  7. The Code-Free Developer Interview @toomuchpete
    The big lie of coding
    interviews is that they
    don’t replicate real work.

    View Slide

  8. The Code-Free Developer Interview @toomuchpete
    The Problem With Coding Interviews
    • Disadvantage people without a lot of free time
    • Live coding and pairing are stressful
    • They’re difficult to develop and maintain
    • Many passive candidates just won’t do take home tests

    View Slide

  9. The Code-Free Developer Interview @toomuchpete
    What Should We Do Instead?
    Talk to the candidates

    View Slide

  10. The Code-Free Developer Interview @toomuchpete
    General Interviewing Tips
    • Define what you’re looking for ahead of time
    • Ask all candidates a consistent set of questions
    • Interviewers should write down their thoughts before discussing them
    • Interviewing is a skill that must be developed and practiced

    View Slide

  11. The Code-Free Developer Interview @toomuchpete
    Dig Into Their Experience

    View Slide

  12. The Code-Free Developer Interview @toomuchpete
    Dig Into Their Experience
    • “What was your role on this project?”
    • “How does that system/feature work?”
    • “Where’s the worst technical debt in this project?” “How would you fix
    it?” “Why hasn’t the team fixed it yet?”
    • “Has it had any bugs our outages in production?” “What happened?”
    “How did the team fix it?”

    View Slide

  13. The Code-Free Developer Interview @toomuchpete
    Have Them do Review Code

    View Slide

  14. The Code-Free Developer Interview @toomuchpete
    Selecting Code to Review
    • Avoid production code
    • Actively reduce complexity
    • Include realistic bugs, but don’t emphasize Bug Hunts
    • Best Options:
    • Completely contrived (maybe your old code challenge?)
    • Open Source Repo with a contrived Pull Request

    View Slide

  15. The Code-Free Developer Interview @toomuchpete
    Evaluating a Code Review
    • Bad Pull Request or Commit Habits
    • Non-idiomatic Code
    • Overly Complex code (things that need refactors)
    • Bad/confusing naming of variables or methods
    • Overly architected classes / YAGNI
    • Actual Bugs (Bonus Points Only)

    View Slide

  16. The Code-Free Developer Interview @toomuchpete
    Collaborative System Design


    View Slide

  17. The Code-Free Developer Interview @toomuchpete
    What is “Collaborative System Design”?
    • Hypothetically Build a Tool, Platform, or Project
    • No Code or Pseudocode
    • Work With The Candidate
    • Usually Pretty Quick

    View Slide

  18. The Code-Free Developer Interview @toomuchpete
    How To Pick A CSD Project
    • Should be easy to understand
    • Excellent if your company’s software has an obvious use case
    • Related to the skills you’re hiring for; Rails is very different from Angular
    • When in doubt, pick something generally well-known

    View Slide

  19. The Code-Free Developer Interview @toomuchpete
    General Tips for Running CSD
    • Time-box the exercise; tell them they won’t “finish” the design
    • Pre-populate boring, boilerplate sections ()
    • Let the candidate lead
    • If the candidate is moving fast or seems comfortable, increase complexity

    View Slide

  20. The Code-Free Developer Interview @toomuchpete
    Case Study:

    Let’s Build Facebook!

    View Slide

  21. The Code-Free Developer Interview @toomuchpete
    Build Facebook: The MVP
    • Get Rid of Boilerplate: We Have Users and Auth Already
    • What’s Included in a Facebook Clone MVP?
    • Friending
    • Status Updates / Feed
    • Caution: Likes, Comments
    • “Where would we start to build out this MVP?”

    View Slide

  22. The Code-Free Developer Interview @toomuchpete
    Build Facebook: Status Updates
    • “How do we implement status updates?”
    • Go Deeper: How do we implement basic privacy controls?
    • Even Deeper: What about granular privacy controls?
    • Keep Digging: How do we solve the obvious performance problem?

    View Slide

  23. The Code-Free Developer Interview @toomuchpete
    Build Facebook: Friending
    • “How do we implement friendship status?”
    • What do we do about the bi-directional nature?
    • How do we implement requests?
    • How do we add blocking?

    View Slide

  24. The Code-Free Developer Interview @toomuchpete
    Should You Ever Resort to a
    Coding Interview?

    View Slide

  25. The Code-Free Developer Interview @toomuchpete
    When To Use Coding Interviews
    • Weak interviewer skills; this should be temporary
    • Determining whether entry-level candidates can program at all
    • When a very specific programming skill might determine seniority
    • Your organization mandates Pair Programming
    • When you’re transitioning to code-free (❄)

    View Slide

  26. The Code-Free Developer Interview @toomuchpete
    I believe we’ll come to
    see coding interviews as
    an anti-pattern.

    View Slide

  27. The Code-Free Developer Interview @toomuchpete
    THANK YOU!

    View Slide

  28. View Slide