Why do I need to know how to code on paper if it is only useful during an interview?
Why do I need to know how to code on paper if it is only useful during an interview?
Joseph Eames, Software Engineer with 20+ years experience, Google Developer Expert, Instructor Originally Answered: Why do I need to know how to code on paper?
You absolutely don’t. I’ve been interviewed hundreds of times, including big silicon valley firms, I’ve performed hundreds of interviews, and I’ve taught dozens of students techniques for interviewing well in coding interviews, and in my experience whiteboard coding interviews are far less effective than alternatives, mainly pair programming interviews.
Whiteboard coding is an anachronistic practice driven more by momentum and a lack of imagination, time, and effort in interviewing than anything else. It’s no more effective to interview this way than it is to interview chefs using an easy bake oven. Unfortunately most people who interview find it to be a simple solution to a complex problem. Unfortunately it’s an inappropriate one.
A whiteboard interview with a simple algorithmic problem to solve is seductive in that it’s easy to google and find a problem to ask, and the solution is relatively easy to judge in its correctness. This allows interviewers to have a nice neat rating for interviewees, and involves very little preparation. Combine that with a bit of personality judgement based on a 10 minute conversation and it seems a simple way to weed out potential employees.
The truth is that much like standardized testing in schools it often measures the wrong thing, or at least too little of the right thing. Whiteboard coding measures how much syntax of a particular language you have memorized. Since you’re given a simple logic problem to solve, it also measures your ability to break down a problem into parts and construct a solution. The latter is a very valuable skill, the former not so much. Of all the valuable skills that a programmer can have, an encyclopedic knowledge of the syntax of a specific language is probably not even in the top 10.
For example, this interview technique doesn’t directly measure your knowledge of the ecosystem of the language, your knowledge and exposure to best practices, your testing strategies and experience, your understanding of design patterns in a real environment, your ability to write performant programs (different than a performant algorithm), your ability to debug and troubleshoot, your architectural design abilities, your data storage design abilities, your ability to read and comprehend other’s code, your knowledge of the editor/IDE you will be using (ever watch an expert using vim or Visual Studio?), your ability to develop innovate solutions, not to mention many soft skills: your ability to work with others, your ability to communicate effectively, your ability to write maintainable code, your work ethic, your work habits, your ability to take criticism, your ability to mentor and be mentored, your leadership ability, how you deal with stressful situations, etc.
The argument that if you are good without the tools then you’ll be good with them is a bit of a fallacy. If you stick a chef in an average apartment kitchen and ask him to cook mac and cheese, then using that to judge how well he’ll perform in a modern professionally stocked restaurant kitchen is ludicrous.
Whiteboard coding suffers from the problem with any single-dimension measurement. It effectively measures only a tiny percent of the number of skills a developer uses in his day to day job. Unfortunately it’s the world that we live in. You can address it at your own company by holding different kinds of interviews, but that’s about it.
John L. Miller, 25 years at: Microsoft, CMU, Amazon, Google, Oracle, JPRC, etc.: PhD in C.S.
Originally Answered: Why do I need to know how to code on paper?
The short answer is, you don’t need to know how to code on paper.
Being able to code without an IDE - for example in a simple text editor - IS a useful skill if you’re a commercial developer on a large project. In particular, it allows you to easily begin producing code on a cleanly installed machine, or if you borrow someone else’s machine who uses a different IDE - or the same IDE but customized - than you. Even though it’s useful, it’s by no means required.
Coding on paper and whiteboards is useful for interviews because it helps measure how much you’ve internalized the syntax and common libraries for a given language and environment. Other than that, consider it a convenience for small amounts of code, or a nifty geek parlor trick.
Denise Michelle, Software Engineer with 15 years experience
Originally Answered: Why do I need to know how to code on paper?
Coding on paper without the aid of an editor or an IDE is one of the characteristics of a programmer with experience. Generally, if your job or hobby involves writing code all day, then typically, you will get so proficient at it, that you will be able to express anything and everything in code, even the recipes to your favorite food, or anything else for that matter.
Coding on paper or on a whiteboard is a sign that you have reached that level of fluency and proficiency in the language. At this point, the types of problems that you will typically want to start pursuing will likely be similar to the problems that Elon Musk is pursuing, i.e. using code, algorithms, and logic-based problem-solving skills to tackle the greatest challenges of our times. But to get to that point, you have to have atleast one language in which you can express the solutions to those problems and also be able to do it, without the need for specialized IDEs or even a computer or keyboard at your disposal, since those things are just tools that are used to aid in the process of problem-solving but they are not intrinsic or fundamental to the thought process that helps to evolve the solutions.