It's very possible to make a positive programming contribution in a professional context (and in a wide variety of fields) without having ever implemented a hash table (I had not, before just now). Obviously it's more important in some contexts than others, and that's fine, but the suggestion that programmers who don't have that experience are not programmers or that they're incompetent programmers is nonsensical--the context in which they work makes the difference.
Now obviously, it's been a bit embarrassing making essentially this same post multiple times recently, so I just implemented a hash table and read a few sources for heaps and binary trees--yay! But this isn't rocket science--if I ever encounter data which doesn't conveniently fit in the basic structures available in my environment, I go find out what works (so, for example, I'm working on a project where I need to find the closest points in a data set according to Euclidian distance, and discovered that VP trees fit the bill).
It is entirely possible that the ability to synthesize a simple data structure is a valuable signal of programmer competence for people with a formal computer science education (because they were presumably taught and tested against that knowledge multiple times, and if they can't reproduce it afterwards they might be bad at learning) but my suspicion is that the implementation of domain-specific algorithms is more often limited by a lack of domain knowledge than a lack of CS knowledge.
Well, do they? Being able to code simple data structures is not a pre-requisite to being paid to write code.
I can't base this statement on cold hard numbers, but I feel comfortable stating that the majority of dev positions in the world today do not require this particular skill set.
Thus : no, they (programmers) don't need to be able to understand or be able to code simple data structures.
If the inverse were true - namely, that a large percentage or majority of dev work required knowledge of and the ability to implement basic data structures - then you would be quite correct.
> You might feel OK about what you're doing now, but a career spent redesigning unit test suites and coming up with ever- more- elaborate HTML templating schemes is unlikely to be fulfilling.
That's a bit dismissive. Also, are you speaking generally or referring to me as an individual?
This is a learning task that might take a competent developer all of 2-3 days. If you're rationalizing not figuring out how to write a heap or a hash table, consider asking yourself whether you actually want to be a developer. You might feel OK about what you're doing now, but a career spent redesigning unit test suites and coming up with ever- more- elaborate HTML templating schemes is unlikely to be fulfilling.