I guess I don't understand the 'I failed to do this, let me give you advice now' movement. From his own description the author is woefully under qualified.
Being unable to program on a whiteboard means you don't really know the language you are using. Relying on an IDE to prompt you every time you make an error is a huge crutch, and IDE's can only help you with obvious cases, there are many times where you can get code past the IDE as syntatically correct but logically wrong.
Being unable to program on a whiteboard means you don't really know the language you are using.
Btw, I use Emacs much more than an IDE, and much of the knowledge I have for syntax is built into my typing fingers.
Coding with pencil/paper is in the same league as coding on the whiteboard. It's not nonsense and you know it too. You just deliberately missed the point of his post just so you could brag about being from MIT and all the stuff you worked on.
It is nonsense. I feel more strongly than you can apparently imagine about this issue, and I would never knowingly interview for a job that requires coding on a whiteboard or on paper. I made a single exception for Google, and I had to take tranquilizers not to throw up during the interview. I consider this kind of interview to be borderline abuse. It serves no useful purpose that can't be better achieved through different means other than to humiliate those whose brains don't function well under this kind of pressure.
Btw, as far as I'm aware, Google didn't traditionally allow coding on paper--they always required coding at a whiteboard. As I understand it, Google Boston softened this requirement because it's rather counter to MIT culture. In four years of undergrad schooling at MIT and quite a few additional classes as a special grad student, no one ever made me work on a whiteboard, or do any kind of work at all with someone staring over my shoulder.
"I made a single exception for Google, and I had to take tranquilizers not to throw up during the interview. I consider this kind of interview to be borderline abuse. It serves no useful purpose that can't be better achieved through different means other than to humiliate those whose brains don't function well under this kind of pressure."
Is this really because of the whiteboard though? Interviewing is a stressful thing to go through, and no process is going to be perfect for everyone. I agree that in general it can be harsh on candidates who are not glib and extrovertive, but this doesn't have much to do with the whiteboard.
Yes, I have no problem at all with a "traditional" job interview. Even ones where I've been given a paper exam and then left alone for a while have been okay. Though I also find that kind of interview to be rather distasteful, I've never actually had any problem doing well on the exam. Doing well on written exams (with solitude) is a skill that anyone who has graduated from a good school probably has already been forced to acquire.
Yeah, I'm very curious to find out how this whiteboard stuff got to be considered universal. I too am an emacs user who programs in diverse languages (and never uses an "IDE" unless you count emacs), and find it disturbing that corporate gatekeepers really seem to believe things like, "Being unable to program on a whiteboard means you don't really know the language you are using."
I have two whiteboards and a chalkboard at home; I never code on such contraptions. (I like to draw pictures for programmers, but using Balsamiq or something.)
Now, obviously if I were in a situation where showing off whiteboard-coding were useful to me, I'd practice until fluent. But it's so bizarre, this fetishization of whiteboard technology.
Maybe it's good to communicate using pictures, rather than symbols. But if that were the real reason for whiteboard interviews, interviewers would speak of pictures; not whiteboards, nor syntax. Or one can argue that companies like rely on whiteboard tech to communicate; but then why not ask prospective workers to practice it as they would vi or emacs? Or spread the gospel somehow? Is this some weird entrance test, to see if a candidate proactively adapts to this weird obstacle?
As an interviewer, I'd feel I've ironically failed a meta-test, if I didn't accomodate a significant number of people's feelings on this matter. I would therefore not be fit to judge anyone's ability to think effectively.
Knowing how to program means knowing how to program a computer. Not a whiteboard, not a piece of paper, and certainly not with someone standing behind or over your shoulder. This is not a test of whether you can program; it's a test of whether you can tolerate extremely stressful and potentially humiliating situations without vomiting.
Part of programming is laying out your data structures and algorithms in advance; you can perfectly do that on paper or a whiteboard. A whiteboard is even better at demonstrating pointer manipulations, since you can easily wipe out arrows with your hand and draw new ones.
Someone standing behind you, looking over your shoulder, might be a bit intimidating at first, but if you have your reasoning figured out for yourself, there is no reason why you couldn't speak out your thoughts out loud and let others know the way how you came to a solution.
You are a victim of the apparently common misconception that everyone smart thinks exactly the same way that you do. I don't work the way that you think I should and I don't want to. I often just write a little bit of code to get my brain primed, with no intention to keep even one byte of that code in my final program. It may even be utterly wrong, but that doesn't matter--it helps me get started. Or, I might just stare at the wall for ten minutes until inspiration hits me. Or I may decide to go do something else entirely and let my subconscious mind work on the problem. Then the answer often just comes to me in the middle of something else. Sometimes the answer comes to me, literally, while I am sleeping.
When you would ask me how I came to the answer, I wouldn't be able to tell you: I primed my brain and then eventually a lightbulb turned on.
But doesn't this just show that I'd never come up with a timely answer? Not at all. I took many tests as an MIT student in which I got A's and which I worked in precisely this manner. I didn't know how to solve a certain question, so I moved onto another question and then came back to the unsolved question. Often by the time I did, I just now knew the answer. On other problems, I'd do work and then cross it off and start over.
I could work this way because I didn't have someone staring over my goddamn shoulder asking me what I'm thinking every goddamn step of the way. If I have to explain myself constantly, I just get flustered when I realize that I said something completely stupid, and then I can't continue with my natural thought processes.
I cannot assert strongly enough, that the process that you claim that anyone smart should be good at, does not work for me.
At MIT I did almost no coding on paper. For programming classes, most of the grade was always determined by very substantial coding projects and problem sets.
There was the occasional exam with some coding, but the coding was typically rather easy (i.e., to demonstrate a CS concept that you would have been recently taught, and practiced on a problem set) and not time pressured. There was also certainly no one staring over my shoulder.