Hacker News new | comments | show | ask | jobs | submit login

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.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact