Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I was really surprised to see algorithms on this list. I would have presumed everyone at Facebook would be a cover-to-cover expert at the sorts of algorithms you'd see in coding interviews.


It's good to know algorithms, but in (for example) sorts, it is a much worse error to write your own sort (based on the best algorithm), than to check if your problem has already been well solved by an existing library you can import without great cost. Not everything needs to be an import, but really in over a decade of development for multiple different organizations solving different problems, I've never seen a case where writing your own sort was a good idea. The same is true of many other algorithm categories. Not to say it's not good to know about, but that's how you can be a quite productive programmer without knowing algorithms like bubblesort off the top of your head.

If, for example, you need to hash/salt passwords correctly and you haven't done that lately, even if you remember for certain how to do it, you should look it up to see if the best method has changed in the last year. Knowing algorithms off the top of your head might almost be a negative, if it makes you less likely to check with a bit of research first when it's time to use one.


According to his tweet [1], there is a separate hiring track for front end engineers that does not include that much algorithmic knowledge. I was surprised too.

[1] https://twitter.com/dan_abramov/status/1078658656344903683?s...


Facebook can afford (nay, NEEDS) to rise to that level of specialization. But that's only going to be true at the level of a megacorp, like Facebook, or Google, or Microsoft.

For even moderately sized companies, someone with wider knowledge will fare better, because such companies aren't going to spend $500k/yr on someone who doesn't know algorithms (or on someone who ONLY knows algorithms). The marginal cost to Facebook is near zero, the marginal cost to a smaller company certainly is not.


To be clear, once you get in, there is no actual distinction. People can choose any team, and "front end" people sometimes work on the backend or mobile or services or IDE or a compiler, etc. We try to hire generalists.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: