{"id":7607,"date":"2022-05-27T11:50:16","date_gmt":"2022-05-27T18:50:16","guid":{"rendered":"https:\/\/coderpad.io\/?p=7607"},"modified":"2022-10-26T03:57:52","modified_gmt":"2022-10-26T10:57:52","slug":"language-agnostic-interview-questions","status":"publish","type":"post","link":"https:\/\/coderpad.io\/blog\/interviewing\/language-agnostic-interview-questions\/","title":{"rendered":"Our Guide to Creating Language-Agnostic Programming Interview Questions"},"content":{"rendered":"\n<p>Our customers regularly ask us about the best way to tell if candidates will be able to perform well on their engineering teams.&nbsp;<\/p>\n\n\n\n<p>One of the best pieces of advice we give when asked this question is: <strong>make your question more about business practices and less about skills with specific programming languages.<\/strong><\/p>\n\n\n\n<p>When you\u2019re measuring their ability to answer a business case rather than something they could simply Google, you\u2019re getting a better measure of their actual success on the job.&nbsp;<\/p>\n\n\n\n<p>That\u2019s why many companies use language-agnostic interview questions that allow anyone with programming experience to answer them in a programming language they feel comfortable with.<\/p>\n\n\n\n<p>Pascal Zajac, Vice President of Software Engineering at <a href=\"https:\/\/coderpad.io\/case-study\/bigcommerce-stayed-one-step-ahead-of-the-remote-hiring-curve-with-coderpad\/\">BigCommerce<\/a>, believes that allowing candidates to \u201cshow their skills in the language they\u2019re comfortable with is crucial. It gives us greater confidence [that] we\u2019ve seen their best self.\u201d<\/p>\n\n\n<aside class=\"\n    cta-banner\n     cta-banner--bg-green      cta-banner--has-media \"\ndata-block-name=\"cta-banner\">\n    <div class=\"inner\">\n        <div class=\"content\">\n                            <h2 class=\"headline\">Ready to start interviewing?<\/h2>\n            \n                            <div class=\"cta-buttons\">\n                                    <a href=\"\/sales\/\" class=\"button  js-cta--get-a-demo\"  data-ga-category=\"CTA\" data-ga-label=\"Ready to start interviewing?|Get a demo\">Get a demo<\/a>\n                                <\/div>\n                    <\/div>\n                    <div class=\"media\">\n                <img loading=\"lazy\" decoding=\"async\" width=\"238\" height=\"146\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2022\/08\/illustration-of-two-people-chatting-in-app-windows.png\" class=\"attachment-large size-large\" alt=\"\" \/>\n            <\/div>\n            <\/div>\n<\/aside>\n\n\n\n<h2 class=\"wp-block-heading\">Enormous benefits from going language-agnostic<\/h2>\n\n\n\n<p>Allowing candidates to choose their assessment language comes with a list of benefits, including:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Increased candidate pool \u2013 <\/strong>When you\u2019re not just limiting yourself to Java engineers or React developers, you can drastically increase the number of candidates who can take \u2013 and pass \u2013 your assessment.<\/li><li><strong>Improved candidate experience \u2013 <\/strong>Candidates will have a more pleasant experience when they can code in a familiar language rather than one they\u2019re forced to use.<\/li><li><strong>Better understand a candidate\u2019s problem-solving process \u2013 <\/strong>When candidates can focus on solving the issue at hand rather than the nuances of coding in an unfamiliar language, you can better see how they can work through a problem.<\/li><li><strong>Question reusability \u2013 <\/strong>You won\u2019t need to rewrite the question for other languages.<\/li><\/ol>\n\n\n\n<p>Despite the benefits of language-agnostic programming questions, implementing them can be a little tricky.<\/p>\n\n\n\n<p>So we\u2019ll show you precisely what you need to do to make them work for you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Elements of a good language-agnostic question<\/h2>\n\n\n\n<p>Some critical themes in the example above make this a good language-agnostic question:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>It\u2019s \u201cgeneric\u201d enough that a candidate can code it in any language<\/strong> \u2013 For example, API and data visualization libraries are available in just about every language.<\/li><li><strong>It\u2019s based on an actual business case<\/strong> \u2013 nothing turns a candidate off more than having to do a project that\u2019s completely unrelated to the work they\u2019d be doing on the job.<\/li><li><strong>It\u2019s not an algorithm question<\/strong> \u2013 <a href=\"https:\/\/coderpad.io\/blog\/interviewing\/eradicating-whiteboard-interviews-with-jon-nguyen\/\">algorithm questions<\/a> are notorious for not really testing anything of importance. Instead, they just test a candidate\u2019s ability to memorize a not-often-used piece of university-level trivia.<\/li><li><strong>It explains why knowing how to do this task is important<\/strong>\u2013 in this case, it\u2019s a standard feature request that directly helps our customers.<\/li><li><strong>It emphasizes collaboration<\/strong> \u2013 By encouraging candidates to communicate issues they encounter, you create a greater rapport with them and improve the interview process. Additionally, the questions they ask will help clarify what areas they\u2019d need help with if they worked with you and what parts of the question you could communicate better.&nbsp;<\/li><li><strong>It has criteria for success<\/strong> \u2013 The candidate knows what they need to do to complete the task.&nbsp;<\/li><li><strong>All the resources are readily available<\/strong> \u2013 This includes links to documentation, request\/response code samples, or database schemas that a candidate would need to complete the task.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Language-agnostic programming interview question template with example<\/h2>\n\n\n\n<p>One of the best types of questions that lends itself to a language-agnostic format is the use of APIs to process and\/or present data.<\/p>\n\n\n\n<p>For example, at CoderPad, we have <a href=\"https:\/\/coderpad.io\/resources\/docs\/interview\/more-interview-resources\/api-key\/\">an API that allows users to communicate with different pad-related resources<\/a> (like the pad itself, the question bank, and other data related to pad usage).<\/p>\n\n\n\n<p>We regularly get requests from customers asking to view data related to their CoderPad usage, so for us, an excellent business-related question for our candidates looks something like this.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Give Context<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>Start with a brief introduction to the product or feature they\u2019ll be working with. Remember you want your question to be relevant to your business. What\u2019s the product or feature that the candidate will be interacting with?<\/li><\/ol>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>The CoderPad experience revolves around the \u201cpad,\u201d the interactive environment that interviewers use to assess candidate skills. We try to make it as close to an actual on-the-job coding experience as possible.<\/em><\/p><\/blockquote>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li>Describe why and how customers use this feature. Put the candidate in your customer\u2019s shoes \u2013 why is this product or feature important to the customer?<\/li><\/ol>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>Our customers often request new ways to visualize the data of their pad usage to help them improve their recruitment efforts.&nbsp;<\/em><\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">The assignment<\/h3>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\"><li>Make sure you include the end goal of the assessment. What results should the candidate produce from their assessment? Pass some test cases? Create a good-looking UI? Process some data? Let them know here!<\/li><\/ol>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>For this particular exercise, you will use the CoderPad API to determine the most used programming languages for an organization and create a simple chart to display that information in real-time.&nbsp;<\/em><\/p><\/blockquote>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\"><li>Important points to keep in mind \u2013 you want to avoid any \u201cgotchas\u201d that may come across as cheap interview techniques. Are there any nuances of working with your product or code base that the candidate should be familiar with? This is the place to note that.<\/li><\/ol>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>You can do this in any language you like. We also don\u2019t care how fancy the chart or graph looks \u2013 the important thing is that it\u2019s accurate and easy to understand.<\/em><\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Supporting information<\/h3>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\"><li>Supporting information like helpful links and text. Are you using a database or file? Is there a helpful request\/response JSON available for API questions?<\/li><\/ol>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>You can find the API documentation \u2013 including how to access your API key \u2013 <\/em><a href=\"https:\/\/coderpad.io\/resources\/docs\/interview\/more-interview-resources\/api-key\/\"><em>here<\/em><\/a><em>. We recommend using the <\/em><a href=\"https:\/\/coderpad.io\/resources\/docs\/interview\/more-interview-resources\/api-key\/organization-resource\/pads\/\"><em>GET \/api\/organization\/pads<\/em><\/a><em> endpoint to access the language information for each pad.<\/em><\/p><\/blockquote>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\"><li>Tips for successful completion of the task. Any other information that would help the candidate complete the task \u2013 like encouraging them to communicate with you!<\/li><\/ol>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><em>We highly encourage you to ask questions on anything that confuses you during the project \u2013 we want this project to showcase your skills and our ability to help you do your best work as well!&nbsp;<\/em><\/p><p><em>We also recommend taking advantage of the <\/em><a href=\"https:\/\/coderpad.io\/resources\/docs\/interview\/focus-time\/\"><em>Focus Time<\/em><\/a><em> feature at the start of the project to help you collect your thoughts before the interview begins.&nbsp;<\/em><\/p><p><em>Good luck!<\/em><\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Reviewing <\/h2>\n\n\n\n<p>When reviewing a language-agnostic assessment, your goal is more to analyze the thought process rather than give a right\/wrong judgment.<\/p>\n\n\n\n<p>For example, with the question above, we&#8217;d look at the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Did a candidate decide to go for a manual refresh or a polling system to get data from the API?<\/li><li>If they utilized polling, how often did they set it to?<\/li><li>Did they take API rate limiting into consideration?<\/li><li>Did they decide to handle HTTP status codes of 400, 500, etc., for generic error handling?<\/li><\/ul>\n\n\n\n<p>Ask them about their decisions regarding these questions. Why&#8217;d they pick a manual refresh over a polling system? Why or why not handle HTTP status codes?<\/p>\n\n\n\n<p>None of these are inherently right or wrong answers, but they provide insights into the candidate&#8217;s problem-solving skills and ability to rationalize their decisions. You can see what they sacrifice for their results to see if it aligns with your team&#8217;s values.<\/p>\n\n\n\n<p>For example, if you&#8217;re running an eCommerce app, does the candidate prioritize speed, loading, and time to interaction? If your product has stringent design requirements, is the candidate building pixel-perfect UIs and using best practices for CSS and accessibility?<\/p>\n\n\n\n<p>Use your team&#8217;s values and priorities to assess how the candidate&#8217;s priorities would fit with your team.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>It&#8217;s time to start interviewing better. With over 30 languages to choose from, you can create a pleasant and customizable coding experience for your candidates with <a href=\"https:\/\/coderpad.io\/register\/\">CoderPad<\/a>.<\/p>\n\n\n\n<p>If you&#8217;re looking for more interview guides, check out our list of interviewing resources:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/coderpad.io\/blog\/interviewing\/5-tips-for-interviewing-frontend\/\">How to Run Front-End Developer Interviews That Don&#8217;t Suck<\/a><\/li><li><a href=\"https:\/\/coderpad.io\/blog\/interviewing\/5-tips-for-interviewing-frontend\/\">5 Tips for Interviewing Frontend Engineers<\/a><\/li><li><a href=\"https:\/\/coderpad.io\/blog\/interviewing\/the-1-best-anti-cheat-interview-question-ever\/\">The #1 Best Anti-Cheat Interview Question Ever<\/a><\/li><li><a href=\"https:\/\/coderpad.io\/blog\/interviewing\/optimizing-your-technical-interview-process\/\">Optimizing Your Technical Interview Process<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Language agnostic interviews are an increasingly popular way to assess development skills. Here&#8217;s how to do one successfully.<\/p>\n","protected":false},"author":12,"featured_media":7609,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12],"tags":[],"persona":[],"blog-programming-language":[],"keyword-cluster":[],"class_list":["post-7607","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-interviewing"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/7607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/comments?post=7607"}],"version-history":[{"count":17,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/7607\/revisions"}],"predecessor-version":[{"id":21835,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/7607\/revisions\/21835"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media\/7609"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=7607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/categories?post=7607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/tags?post=7607"},{"taxonomy":"persona","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/persona?post=7607"},{"taxonomy":"blog-programming-language","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/blog-programming-language?post=7607"},{"taxonomy":"keyword-cluster","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/keyword-cluster?post=7607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}