Is there a necessity to have a good understanding of algorithms to be a good software developer?<p>I know some fantastic developers, who are great problem solvers, and they couldn't tell an algorithm from an apple.<p>It seems all interviews and discussions revert to a grading based on algorithm understanding, and it feels like too much emphasis is placed on one marker of competency.
Knowing as in being able to recall the specifics of implementation? No. For two reasons: 1. Unless your job involves custom data structures, you simply won't remember them after a few years. 2. If you do want to use a specific algorithm, in most cases you want a cache-friendly version of it. The naive implementations rarely have the characteristics you want in practice.<p>Knowing as in knowing rough categories and being able discuss big O characteristics when needed? Super useful. I could maybe implement one or two dictionaries. Badly. But I know what alternatives there are, what names to google for if I ever do need a custom dictionary, and how to define what I'm looking for (for example lockfree inserts, or ordered keys, or max 2 memory lookups per key, etc.)