4 ms·
If you program, you are a programmer. By definition. I suspect what you're really asking is: why do so many companies thinking programming == solving puzzles?
by gaylemcd 12y ago
If you program, you are a programmer. By definition.
I suspect what you're really asking is: why do so many companies thinking programming == solving puzzles?
The answer is that:
(1) Based on what you're defining as a puzzle, they don't.
(2) It is valuable skill (but it's also not the only skill).
-- (1) --
While there are stupid companies that ask "puzzles", this is not the norm at Google, Facebook, and similar companies. The "puzzles" listed at that Google link are basically fake. Link bait. While it's possible that each of those was asked at Google, I doubt that's where the author of that blog post got them from. They are certainly not representative of Google questions.
The "puzzle" questions you're referring to are really more like:
- Design an algorithm to return a random node from a binary tree
- Design an algorithm to find the nth number divisible by only 9, 13, and 15
You can define "puzzle" however you'd like, and I'm not going to engage in some debate over whose definition is "right." Doesn't matter (and there probably isn't a "right") here.
In the real questions asked at companies like Google, there's typically no sudden insight you need or trick in the wording. Rather, these questions are about working through a different problem and creating optimal solution (and recognizing tradeoffs along the way).
-- (2) --
That is an important skill for a developer. It is valuable for a developer to be good at that, and even enjoy it.
Maybe you don't care about making your solution better. Get it done. Get it out the door. Even if it's not perfect.
That probably makes you a less awesome developer, but it doesn't mean that you are necessarily a bad developer. There are lots of parts of being a "perfect" developer.
- Enjoying testing.
- Understanding what users want.
- Architecting a system.
- Understanding the lower level computer architecture.
- Being a perfectionist.
- Not being a perfectionist and knowing when you just need to get something done.
- Knowing how to scale a large system.
- and so on.
There are a TON of things here. No one has all of them.
You might be missing one of them, and it's a fairly important one. But it's not the only one.
I once worked [worked = prepping the startup for acquisition interviews] with a developer who was, honestly, quite stupid. He was exceptionally poor at developing good algorithms. His code however was correct.
He would be terrible at a company like Google. But at this company, he was very good. You see, he was very detail-oriented and thorough. If you want someone to write a correct bit of code for a very tedious and boring problem, he's your guy.
Is he a good developer? In the right role, yes.
This doesn't mean that Google is flawed for doing interviews this way - not at all. Their goal is not to hire all good developers. Their goal is to hire enough good people and to not hire bad people.
Problem solving/algorithmic skills and coding skills is a decent filter for that purpose.
- throwmeout 12y agoFirst off, I've read most of your books. Great job with them! Now, your response seems fair enough and I completely understand what your trying to say. However, without going into specifics. How does an interviewee handle/convince an interviewer with a preconceived solution? For example, Interviewer A has an interview tomorrow and plans on asking this really slick problem that has one way of being solved well. A looks this way up and knows the ins and out of it. Now as an interviewee,if B were to come up with a 100 ways of handling the problem (starting from brute force) but fails to reach the "cool" solution because he has only 45 minutes of time . Do you think the interviewee would be considered a good candidate? I'd say that the interviewer has hardly learnt anything about the candidate by asking such a problem. But then again, I could be wrong.
- gaylemcd 12y agoEh... it depends. You could have a question that can really only be solved optimally one way but that still provides adequate room to demonstrate problem-solving skills (even without knowing the "slick trick"). Such a question could still be a reasonable question. Of course, many questions with slick tricks aren't like that. The interviewers who ask these questions also tend to be worse, which exasperates the problem. In the situation you described - the candidate might still be considered a good candidate. It depends what the interviewer is looking for.
- seanflyon 12y ago> but fails to reach the "cool" solution I think it is rare for an interviewer to have a "cool" solution in mind and reject a better (or as good) solution. If they did I would be suspicious of the quality of the company.
- vonmoltke 12y ago> He would be terrible at a company like Google. I don't think you can adequately back up that statement. Google is a massive company with very broad needs in each engineering discipline they hire for. My most significant criticism of Google's hiring practices is that they feed every software engineer through the same sieve. The sieve is calibrated as you describe, and that calibration is appropriate for many of their core positions. But, they need some developers like the one you describe as being a "terrible" fit as well. They need some developers who have a foot firmly planted in another engineering discipline, or various non-engineering domains. There are a whole lot of things they need that they don't test for because they spend all the available time testing for traits that are only critical to a portion of their business.