If you are a company and have to select between two front-end developers where one has a vast portfolio of production apps that you find impressive and the other knows BFS by heart (but has never shipped something to production), who would you choose?
If the developer doesn't understand performance (or at the very least, basic tree operations like searching/sorting/traversing), they're going to write some horrible code. Google and Bloomberg have their pick, they don't want a shitty developer.
So let me rephrase this. Isn't it possible that a developer knows about computer performance but at the same time does not know <insert your favourite algorithm here> by heart?
Do you really think that "knowing BFS by heart" equals "knowing everything there is to know about computer performance"?
In your scenario, a developer might just google BFS if that is really needed (when a custom component is needed). Is this so important that he/she has to know BFS by heart beforehand during the interview?
bool bfs(int x) {
q = new LinkedList<Node>;
q.push(root)
while (q.size != 0 && q.peak() != x);
return q.size ? true : false;
}Oh, well...
The person who has to try to understand what the hell is going on and how to add new features after the original developer has moved on to other things probably cares quite a lot. The difference between a good programmer and a mediocre programmer is not that one can solve the problem and the other can't, but that the good one can solve the problem in an easy to understand and easy to maintain way.
Is this Hacker News or Script-Kiddie News?