Can you explain why a front-end position requires computer science fundamentals?
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?
Consider a scenario where the developer is required to write a custom directory tree. Each row contains a caret and a checkbox. When either of these are clicked, you'll need to perform some sort of tree traversal to ensure integrity of the view -- for example, checking the checkbox on a row may require that all children as selected too. Additionally, you may need an upward traversal to the root to ensure the parents are either in a mixed or unchecked state.
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.
In my example I did not say that the first developer is ignorant about performance. I only talked about knowing data algorithms by heart.
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?
BFS is a 4 line algorithm that doesn't need to be memorized. I wouldn't trust a developer who can't even reason this out with understanding runtime order complexity.
From a front-end developer perspective, I would google "navigation tree jquery", download some library that does this for me, and be done with it. If all children of a checkbox need to also be selected, that's like a single like of jQuery. Worst case scenario, something custom is written, and yeah it's not the best way and yeah it takes 100 milliseconds instead of 4, but who cares?
Worst case scenario, something custom is written, and yeah it's not the best way and yeah it takes 100 milliseconds instead of 4, but who cares?
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.
Which is for the most part the entirety of a degree's usefulness beyond the first year or two of employment. It's a signal, and it allows a company to easily take a stack of 250 resumes for a single position and cut it down to 80 without a significant hit to the skill distribution. Some of the best are likely eliminated, but most of the worst are as well.
My sub-3.0 GPA for a humanities degree a decade ago has no bearing on my skill as a programmer, but it almost certainly means I won't be working for Google or Facebook.
Is this Hacker News or Script-Kiddie News?