I interview a lot of people who want programming jobs.
What I find is: almost nobody can program, and almost nobody knows basic CS 101 data structures.
It does not matter if you are a self-taught programmer with ten years of experience in the best companies, odds are that you cannot solve a trivial coding exercise.
It does not matter if you have a masters degree in Computer Science, odds are that you cannot successfully build a tree structure.
I have no idea how these people keep their jobs or how they graduated, but this is the norm. People who can do CS at all, and people who can code at all, are both rare. Or at least, are rare in the pool of people applying for work.
If a person is a self-taught programmer with ten years of experience working in a good company, then you are obviously programming for that company in a sufficient capacity even if you are unable to solve puzzles offered up by human resource managers that found them on Google by typing in "Questions for Programming Interviews." Programming is not about being able to solve brain teasers. Programming is about being able to deliver quality code. If the language handles most of these data structures for you or if you have used them before without actually considering it, then you obviously know their importance even if you cannot put it into words under stress. Do not degrade people that cannot repeat verbatim some useless information they read in a book or solve brain teasers in minutes (unless they had already seen those puzzles.) Being able to work hard, clean, in a team, and supply a functional product on time according to specifications are the most important traits.
Sure - so I prefer to ask people to write a small program that solves a small, practical task. And I try to make it feel like we're pair programming, instead of just me watching them code, so we can see what it's like to collaborate.
You are the only one who said anything about brain teasers and puzzles. The parent lamented the fact that so many programmers can not solve basic programming problems. Fizzbuzz for example. If you can't write fizzbuzz, you are not qualified for a programming job. It has nothing to do with computer science, or brain teasers people googled, and everything to do with writing actual working code to accomplish a trivially simple goal.
I had to look up "FizzBuzz" to know what you mean, but you are correct. (I have actually been asked to write programs like this, and this is great even if it is minimal. I think the questions may need to be a bit more complex than this, but at least it is possible to solve in one sitting.) Asking an applicant to write simple programs like this would be good. Or, if the person is a front-end JavaScript developer, you can ask them how they would handle thumbnail mouseovers to display larger versions of the images in a separate div. Things like this are fine and have purpose. Asking a database administrator about the difference between joins makes sense. Another question might be how would you write a class to represent a deck of cards including methods for shuffling the deck. In comparison, sometimes you will have technical questions thrown at you that have no real world applications or literal brain teasers, and I think those types of questions are pointless. There is a difference between asking programming questions and asking programming puzzles, and I wanted to voice the opinion that puzzles should not be misconstrued to the point of suggesting that people cannot program because they cannot solve them.
Real programming projects are best. I think one of the best methods would be to give a person a reasonable assignment that should only take a couple hours to complete (if that long) and ask for the results within a few days. (This will give them plenty of time to clean it up, add surprising features, and create a nice design and front-end after they are finished with it. A day can be used for the promise of completion, and the remaining time can be used to overdeliver.)
>In comparison, sometimes you will have technical questions thrown at you that have no real world applications or literal brain teasers, and I think those types of questions are pointless
My point was that nobody else is talking about that. You just brought that up completely out of the blue, but in response to someone. When you reply to a post, those of us reading the thread tend to assume your post will in fact be in reply to the parent post, not a completely unrelated post just stating your opinion on something else entirely.
Probably because the vast majority of the "programming" field as it stands today barely exercises computer science knowledge. Linked list optimizations, heaps, that stuff isn't even on the radar of most devs hacking on a startup, frankly, because the language hides it away. And they are not inferior programmers if they can execute on their knowledge, are they?
I hate that, to most folks who are into CS, CS is a yardstick for how much value a hacker will develop. "Can't optimize this from O(n^2) to O(n)? I have no idea how you keep your job." There is far more to the value produced by a hacker than the typical interview questions, and this elitist attitude out of most compsci folks is obnoxious.
This is why, even though I understand CS, grilling me on theoretical CS in your interview is automatic points off and I'll accept the position that actually quizzes on practical. I'm definitely of the mind now, being a self-taught programmer with a working knowledge of compsci, that I will learn things when they're needed to execute (not so they'll sit around in my brain waiting for the manager that Googled hard interview questions to ask).
I avoid quizzing people on CS, but I do have a practical problem that I pair program with candidates on where most (but not all) say "hmm, I guess I want to store this in a tree structure", and then start implementing one - so they quiz themselves.
Did you really not notice that your reply is to a strawman you made up? The person you are replying to did not say anything about CS vs programming. He stated that most people who claim to be programmers can't do basic programming, and most CS grads can't do basic computer science. Incompetence is widespread on both sides. There was no claim that one side is more important than the other, yet your reply is almost entirely "you are elitist for thinking computer science matters".
Every programmer should be able to fizzbuzz. 95% can't. This is a problem. Every CS grad should be able to build a tree. 95% can't. These are serious problems.
What I find is: almost nobody can program, and almost nobody knows basic CS 101 data structures.
It does not matter if you are a self-taught programmer with ten years of experience in the best companies, odds are that you cannot solve a trivial coding exercise.
It does not matter if you have a masters degree in Computer Science, odds are that you cannot successfully build a tree structure.
I have no idea how these people keep their jobs or how they graduated, but this is the norm. People who can do CS at all, and people who can code at all, are both rare. Or at least, are rare in the pool of people applying for work.