Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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 @toomuchpete What is a “Coding Interview”

    • Reviewing Code Samples or GitHub Profiles • Code Tests (Codility, etc) • Code Challenges • Live Coding or Pair Programming
  2. The Code-Free Developer Interview @toomuchpete The big lie of coding

    interviews is that they don’t replicate real work.
  3. 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
  4. 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
  5. 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?”
  6. 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
  7. 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)
  8. 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
  9. 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
  10. 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
  11. 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?”
  12. 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?
  13. 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?
  14. 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 (❄)