I intend to eventually formally learn CS algorithms and data structures. So far, I haven't run into a situation where not knowing them has catastrophically hindered the viability of my code. I understand that I don't know what I don't know. [1] I often see comments along the lines of, "I learned algorithms and data structures while getting my CS degree, but rarely (or never) used them in practice. Without reviewing them, I wouldn't likely pass a technical interview that heavily relies on whiteboarding and CS theory."
Is this most often the case, or is it just the case that is most often verbally expressed? For each professional programmer who doesn't know or rarely uses CS theory in practice, is there one or more that uses it regularly? I understand there will be specific positions that rely on CS theory more often, but my questions are meant to cover the general range of professional programmers.
I prioritize the list of topics I wish to learn or improve as there's too many to learn them all within a given time period. I often push algorithms and data structures down the list below topics I immediately need to know to complete parts of projects following best practices as well as I'm aware. The strongest case I can see for learning or memorizing algorithms and data structures before I encounter a situation that requires I implement them in practice is in order to do well in a technical interview. I wonder if I'm really restricting my ability to code better because my thoughts on this are misguided. Should I at least skim through resources on CS theory so that I can better recognize situations where I should utilize it?
[1] http://en.wikipedia.org/wiki/Dunning–Kruger_effect