{"id":2076,"date":"2021-07-15T09:39:48","date_gmt":"2021-07-15T16:39:48","guid":{"rendered":"https:\/\/coderpad.io\/?page_id=2076"},"modified":"2021-09-16T12:38:31","modified_gmt":"2021-09-16T19:38:31","slug":"whiteboard-for-programmers","status":"publish","type":"page","link":"https:\/\/coderpad.io\/resources\/learn\/whiteboard-for-programmers\/","title":{"rendered":"Whiteboard for Programmers"},"content":{"rendered":"\n<p>Whiteboard programming has long been a staple of the creative process. After a long time spent looking at a keyboard and monitor, it\u2019s easy enough to develop writer\u2019s block. Using a whiteboard lets you abstract yourself from the raw nuts and bolts of brackets and strings, building at the data structure layer instead. Once you create an architecture for your program, it\u2019s easy to hop back onto the text editor and write out your code. For programmers, whiteboards may represent one of the best and simplest productivity tools imaginable\u2014here\u2019s how to master them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Whiteboard Coding?<\/h2>\n\n\n\n<p>Whiteboard coding is what it sounds like. You set up a whiteboard (or a notebook and pencil) and write code there instead of in your IDE. Whiteboard programming is often used to assist the ideation process during everyday programming. It can also be used to help gather ideas during meetings or collaborative programming sessions. More frequently, however, you\u2019ll find whiteboard programming in use during the technical interview process.<\/p>\n\n\n\n<p>Whiteboard code can be used to express ideas in programming that don\u2019t necessarily translate well to the format of an IDE. It\u2019s easier and faster to write down a binary tree first as opposed to implementing it within a text editor from scratch. The same goes for other data structures as well.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why do Programmers use Whiteboards?<\/h2>\n\n\n\n<p>For programmers, whiteboards can be valuable for several reasons. The first, as we\u2019ve already mentioned, is to get past writer\u2019s block by using a medium that isn\u2019t subject to the usual constraints of an IDE. The second reason is so they can collaborate with other programmers without the hassle of setting up a networked environment.<\/p>\n\n\n\n<p>In addition, whiteboards help break down applications down to their pure concepts better than an IDE (at least in some cases). You&#8217;re able to think through the logic of the code, rather than the syntax of your programming language. By removing the stricter environment an IDE provides, you can think purely about edgecases and logic structuring rather than implementation detail.<\/p>\n\n\n\n<p>By contrast, using a whiteboard sets programmers up for instant feedback. As soon as a programmer writes down a line, their collaborator can approve it and offer advice. Although this approach requires more programmers and can take longer, the instant feedback is worth it when it comes to more complex or mission-critical components of the application.<\/p>\n\n\n\n<p>The last reason programmers use whiteboards is the most common one: so programmers can practice for a job interview. This can be a problem\u2014one we\u2019ll get to in a moment\u2014in which companies select candidates based more on their ability to provide good answers to interview questions as opposed to their skill level.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why do companies conduct whiteboard interviews?<\/h2>\n\n\n\n<p>Companies like whiteboard interviews for two reasons: they\u2019re easy to set up, and it\u2019s theoretically easier to understand a candidate\u2019s thought process by watching them work on a whiteboard.<\/p>\n\n\n\n<p>Although it\u2019s preferable to set up an online collaborative IDE for the technical interview process, many companies still resort to a text editor and a screen-sharing program for remote interviews. Since there aren\u2019t many ways to express creativity within a text editor, the second round of interviews has traditionally involved an in-person meeting where the candidate demonstrates their whiteboard coding skills.<\/p>\n\n\n\n<p>All the benefits of whiteboard programming should apply to the technical interview. It\u2019s easy to collaborate, so the interviewer can see how well the candidate works in a team. It\u2019s easy to edit, and the output doesn\u2019t matter as much, so there\u2019s less of a chance that the candidate will freeze up if they make a mistake. Lastly, using a whiteboard is more imaginatively freeing than using a barebones text editor.&nbsp; This means that the interviewer can see the candidate at the height of their creativity.<\/p>\n\n\n\n<p>All this being said, there are a few downsides to using a whiteboard for programmers in an interview context. We\u2019re not saying that whiteboard programming should be eliminated from the interview process, but there are several elements that should be scrutinized more closely.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Downsides of Whiteboard Coding Interviews<\/h2>\n\n\n\n<p>Although setting up a whiteboard for programmers might be traditional, it may not be the best way of gauging a programmer\u2019s skill.<\/p>\n\n\n\n<p>One issue is that while using a whiteboard is a common productivity tip, it\u2019s not a primary coding method. Ordinarily, a programmer sticks to their IDE and then uses a whiteboard only when they\u2019re stuck on a big problem or need help. They might use a whiteboard only once or twice a week. Therefore, if your goal is to simulate an average workday and watch how your candidate tackles the challenge, asking them to solve a problem using a whiteboard is going to detract from the accuracy you\u2019re looking for.<\/p>\n\n\n\n<p>This leads to another problem related to whiteboard code: it\u2019s a skill that not everyone has, and it\u2019s a skill that\u2019s not primarily deployed in the workplace. In other words, nearly anyone looking for a programming job is going to practice whiteboard interviews and memorize the solution to a few common whiteboard problems. The result is that you\u2019re going to hire people who are good at whiteboard interviews\u2014and those people won\u2019t necessarily be the best at the job you\u2019re hiring for.<\/p>\n\n\n\n<p>Finally, there\u2019s an argument to be made that whiteboard interviews can be biased against people who don\u2019t have good penmanship, who are physically disabled and can\u2019t hold a pen, those who have dyslexia, etc. These are important concerns that should be addressed in proper whiteboarding interviews. Let&#8217;s take a look at how we can do them correctly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tips for conducting a whiteboard interview<\/h3>\n\n\n\n<p>Interviewers must prepare carefully to make sure that they hire a candidate who\u2019s good at their job they\u2019re interviewing for\u2014as opposed to someone who\u2019s good at whiteboard programming. Here are some best practices.<\/p>\n\n\n\n<p>First, if you make your questions too difficult, you will filter out everyone <em>except<\/em> individuals who have memorized certain rote techniques for creating algorithms and data structures. Make your questions more grounded and representative of issues you&#8217;re likely to encounter in the real world &#8211; rather than obtuse and arcane algorithm questions<\/p>\n\n\n\n<p>Second, don\u2019t get too worried about whether a candidate solves your problem perfectly. It\u2019s more important that a candidate shows their work, demonstrates creative problem-solving skills, and works collaboratively.<\/p>\n\n\n\n<p>Third, remember to ask open-ended questions about whether the candidate is happy with their solution, how they\u2019d improve on it, or what they\u2019d add if they had more time. This gives you a sense of what the candidate would do if they had the resources of the company at their disposal.<\/p>\n\n\n\n<p>Finally, make sure to add options for accessibility. Some talented programmers might not be able to hold a marker, see the whiteboard, or stand for long periods of time. Take this into consideration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tips for acing a whiteboard interview<\/h3>\n\n\n\n<p>If you\u2019re a candidate, how can you demonstrate that your whiteboard code is the best there is? Maybe you\u2019ve memorized a bunch of algorithms, but hopefully your interviewer is looking for more than that.<\/p>\n\n\n\n<p>One of the biggest tips we can offer is to make sure to set a strong foundation. This means that you must make sure you understand the question, so first repeat it back to the interviewer and then <em>write it down<\/em>. This will help keep you on track.<\/p>\n\n\n\n<p>Next, don\u2019t rush ahead. Writing slowly and smoothly will make your penmanship neater, which in turn will make it easier for the interviewer to understand your thought process. Speak out loud as you write so the interview knows what\u2019s going on inside your head.<\/p>\n\n\n\n<p>Lastly, don\u2019t be discouraged by slip-ups! Even if you can\u2019t finish the problem in the allotted time, and even if you\u2019re not sure you have the right answer, your ability to show your work and demonstrate creative problem-solving skills should hopefully give you an edge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Virtual whiteboards for remote interviews<\/h2>\n\n\n\n<p>One last consideration for interviewers\u2014distance. Even though the pandemic appears to be ebbing away, remote work will continue, especially in the programming sector where you may be hiring candidates from other countries. Short of screen-sharing a copy of MS-Paint, how can you create an equitable and enjoyable whiteboard programming experience for remote interviews?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How CoderPad facilitates whiteboard interviews<\/h2>\n\n\n\n<p>With the<a href=\"https:\/\/coderpad.io\/resources\/docs\/interview\/drawing-mode\/\"> Drawing Mode<\/a> inside of CoderPad, interviewers have a way to create collaborative remote interviews in which participants can sketch out systems, describe technical architectures, and let their creativity run free. Drawing Mode allows both interviewers and candidates to add their input to a collaborative whiteboard space\u2014creating shapes, lines, text boxes, as well as erasing them at will. In short, CoderPad helps bring the functionality and accessibility of whiteboard code into context of a remote interview.<\/p>\n\n\n<aside class=\"\n    cta-banner\n        \"\ndata-block-name=\"cta-banner\">\n    <div class=\"inner\">\n        <div class=\"content\">\n                            <h2 class=\"headline\">Need a better way to interview candidates? Try CoderPad.<\/h2>\n            \n                            <div class=\"cta-buttons\">\n                                    <a href=\"\/demo\/\" class=\"button  js-cta--get-a-demo\"  data-ga-category=\"CTA\" data-ga-label=\"Need a better way to interview candidates? Try CoderPad.|Get a demo\">Get a demo<\/a>\n                                <\/div>\n                    <\/div>\n            <\/div>\n<\/aside>\n","protected":false},"excerpt":{"rendered":"<p>Whiteboard programming has long been a staple of the creative process. After a long time spent looking at a keyboard and monitor, it\u2019s easy enough to develop writer\u2019s block. Using a whiteboard lets you abstract yourself from the raw nuts and bolts of brackets and strings, building at the data structure layer instead. Once you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":280,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2076","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/pages\/2076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/comments?post=2076"}],"version-history":[{"count":5,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/pages\/2076\/revisions"}],"predecessor-version":[{"id":2789,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/pages\/2076\/revisions\/2789"}],"up":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/pages\/280"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=2076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}