A person recently graduate from the U. Perfect scores in algorithms and that stuff.
Now, is in a company. That make web things. Don't know databases well (if any). Don't know JS. Don't know html5. Don't know CSS3. Don't know django, or ruby, or whatever.
But know BIg(O)! Know how do a Black tree!!
And that is almost useless in his job!
You know what is that? A incompetent.
Competence is the match of skills to the tasks.
You will say "A person that know algorithmic stuff can learn web development easy!" (I will say: Why think a web developer can't learn how build a algorithms?)
Real-life disagree. People are not equally good across the full spectrum of skills.
Thinking that "web development" is trivial in contrast with "real engineering" is wrong. Both are hard. Requiere different skills and mind-sets.