2 ms·
I've expressed disagreement in another sub-thread with the idea that programmers need to understand or be able to code simple data structures, not because I thi
by napoleond 13y ago
I've expressed disagreement in another sub-thread with the idea that programmers need to understand or be able to code simple data structures, not because I think that knowledge is unimportant, but because "need" is a very strong word. (My previous objection was in the context of hiring--for 99% of CRUD web apps being built, the ability to use or implement a binary tree won't matter, and even when it does matter it won't need to matter for more than a few members of the team.)
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.