WCSEA 2015: Jake Goldman — 10 Interview Questions I ask Devs

I’m at WordCamp Seattle today and will be posting notes from sessions throughout the day. These are posted right after the session, and could be a little rough.

This is a talk from Jake Goldman, owner of 10up. The WordCamp.org session description is here. Find Jake Goldman at @jakegoldman on Twitter and at 10up.com on the web.

Jake’s Credentials

Jake has vetted hundreds of candidates, made a lot of great hires, also made many valuable mistakes as he’s grown 10up to over 100 team members.

Here’s how Jake approaches an interview with software engineers:

You are not Looking for Polish

This is the biggest mistake people make: Assuming that if they’re a great communicator, and make a great sales pitch, then they must be a good engineer.

Jake’s found on the contrary that people who are the most polished are often worst for development. They may be good on the PM or the account side, but Jake would predict not the dev side.

[Clarified during Q&A:] These aren’t always mutually exclusive. Jake isn’t looking for terrible communicators. It’s important to be able to string sentences together. But in a team, you need people focused on different strengths. People who show up ready to hard sell you on them tend to not work out.

Here is What you Are Looking for

  1. The candidate “gets” the platform. Core principles of the software and what it’s for
  2. How much do they know about building on WP and its core technologies. It’s becoming increasingly important for them to understand complementary set of technologies that the platform is more dependent on, like JavaScript, Backbone, etc.
  3. Does the candidate think critically about his/her work? Are they strategic thinkers? Jake says this is the most important.

Rule Book

  1. There is not always one right answer, but there are better and worse answers.
  2. Answers can show beginner, advanced, or profoundly senior level knowledge
  3. There are some very wrong answers.
  4. Not knowing everything is ok.
  5. Pretending to know everything is not ok. This is important for teamwork. A big red flag is people who don’t know how to say “I don’t know,” and try to wing it. This suggests they will just pretend they know what they’re doing, and managers will find out there’s a problem 3 weeks into a project instead of on day 1 or day 2.

Questions, Part 1: Basics of WordPress Understanding

Honestly, now, do you “WordPress”? (sic — lowercase _p)_

Question 1: Tell me what a “hook” is, and talk about the two basic hooks in WordPress, and the difference between them.

Answers, in order from very wrong to very good:

  • “A hook is a killer feature that gets users addicted” (Jake’s favorite ever BS answer)
  • An answer: A way to extend WP. “Themes and Plugins”
  • A technique used to alter or augment the behavior or software.
  • WordPress has action and filter hooks.
  • “Actions fire ‘hooked’ functions at specific points during execution. Filters pass data through “hooked” functions just before WordPress takes an action …”

Question 2: Explain what a taxonomy is

Answers, in order from very wrong to very good:

  • A method to preserve unused (dead) code.
  • The various types of content in WP: posts, pages, media, menus, etc. (this answer is confusing meta data with content types)
  • A way to group things together. (Not a bad generic explanation.)
  • WP posts have two default taxonomies: categories and tags. You can add others through
  • Bonus: A few lesser known default taxonomies.
    • link category
    • navigation menu
    • post format

Question 3: Let’s say you see wp_list_pluck() for the first time. How do you figure out what this does?

Answers, in order from very wrong to very good:

  • Google (not a bad answer, probably an honest answer, but it doesn’t tell you much as the interviewer.)
  • Code reference — this is a better answer than it used to be.
  • Look at the source code. They’re ideally using a configured editor or an IDE to shortcut to this quickly.

Questions, Part 2: How Senior are you?

Here we want to learn just how experienced you actually are, if you’re beyond beginner.

Question 4: Explain what sanitizing and validating data means, and apply that to WordPress.

Answers, in order from very wrong to very good:

  • Checking database integrity and ensuring the database hasn’t been corrupted. (Wrong)
  • Testing data to make sure it’s what you expected. (Not a bad beginning, but layman, generic.)
  • Answer explains the concept of untrusted data: “Untrusted data comes from many sources (users, third party sites, your own database!) and all of it needs to be validated both on input and output.…”
  • WP includes helper functions… like wp_kses, etc. Describe correctly which of these exist, what they do, and when to use them.

Question 5: A client needs to selectively exclude posts from their blog home. How would you achieve that?

This is a more open-ended question than it seems, because people give different answers (that can both be correct) depending on if they’re more UX minded or more code minded.

UX Answers, in order from very wrong to very good:

  • Add a new post category called “Exclude From Home.” — Not a great answer, because not resilient. Ask what happens when user deletes that data, etc.?
  • Add a new custom meta box with an “Exclude…”
  • Someone who’s really advanced might answer something like: “Hook into post_submitbox_misc_actions to add an ‘Exclude from home’ checkbox to the “publish” box. (This shows deep understanding of how hooks are powerful, with a deep UX understanding.)

Dev answers, in order from very wrong to very good:

  • Add an ‘if’ statement inside of the loop checking my ‘hidden’ criteria before outputting the post. (“This answer makes me cry.” You don’t want to do this after getting posts back. What if all ten satisfy that criteria? You have an empty home page.)
  • “Create a new post query at the top of my home.php template, excluding posts based on my criteria.” (Not a good answer — running two queries. Plus, if anything else alters the home page query, you have a problem. You’ve probably forgotten about pagination.)
  • Use pre_get_posts to modify the main post query before it runs and modify it there. (This is the right answer.)

Question 6: What’s “use strict” all about?

Correct answer:

  • Directive indicating that JS code should be executed in strict mode’. Catches common coding mistakes and throws errors when relatively ‘unsafe’ actions are taken. (definition from w3c I think.)

Question 7: You need to retrieve data from a remote source once/day. Tell me about some of the WordPress APIs you’d use.

Correct answers we’re looking for:

  • Use wp_schedule_event() (WP Cron API).
  • Indications of performance awareness, caching, etc. e.g. using wp_remote_post().
  • Another answer along those lines: Use set_transient() (Transients API).

Questions, Part 3: So you can code. Can you think?

Good, smart people can not care, not be passionate. Good, thoughtful answers to these show me people are really into this and care.

Question 8: Tell me what you’re thinking about? What are you finding interesting? Say our company gave you 3 months of sabbatical — what would you do with it?

Examples of some good interesting answers:

  • CMS as simply a data source. APIs everywhere: the emergence of a JSON API for WP, and APIs standard in other platforms, suggests the future of the CMS will be as a data store
  • Tiny devices, huge devices. Responsive design has “figured out” mobile to desktop UX patterns. But what about very tiny watches, and very large televisions? Have we figured out how to present content in these formats?
  • HiDPI (“retina”). Technical hurdles remain (like media uploads), and at some point this is going to be a standard requirement. It feels like Responsive Design circa 2009.

Question 9: What frustrates you about WordPress?

Answers, in order from very wrong to very good:

Correct answer:

  • Taxonomy / term architecture could be improved. No term meta data, strange artifacts due to way tags and categories of the same name are linked. No mechanism in core to handle metadata for taxonomy terms, etc.
  • No standard methods to create direct relationships between two content objects (post objects).
  • Having to develop community modules to the lowest common base WP requirements (PHP 5.2) — Jake thinks smarter people often answer this way.
  • Some areas don’t handle conflicts in plugins well, for example registering two custom menu items in the same spot.

Question 10: Why do you want to work day in and out with WordPress?

Answers, in order from very wrong to very good:

  • It’s the dominent CMS on the web (a fine answer)
  • It’s the only platform where customers don’t call me back in every month asking for retraining.
  • Because I value the freedoms inherent in open source, and WP is an awesome open source platform. (deep thinking engineers frequently answer this.)
  • The community. It’s more than just a piece of software; they feel at home here, etc.

Note regarding Question & Answer

Jake gave an interesting answer to a question “do resumes matter?” that I didn’t catch. It’s worth reviewing the wordpress.tv session for this later.

Add your thoughts

%d bloggers like this: