I think that people's definitions of "quality" web programming vary a lot. Google's Web UI Engineer interviews do ask for C++/Java knowledge, how to design a programming language, and Big-O notation, for example. And then people complain about how Google's interviews have nothing to do with reality.
The thing is - they do. Everything I was tested on in my interview was pretty analogous to something I've faced in my job. If you don't know your server's language, how will you write code that interfaces with the client-side software you're writing? If you don't know how to design programming languages, how do you evaluate various templating systems on the server side or JS libraries on the client side? If you don't know Big-O notation, what'll you choose when faced with the choice of attaching event handlers to each child in a DOM tree vs. using event bubbling and dispatching on the particular target? (Never mind that most Google interview candidates don't know about event bubbling in the first place and wouldn't be able to write a tree-walk if their job depended upon it.)
I'm a web UI engineer. My last two days at work were spent writing a JIT with LLVM for a templating language. Google Wave is all based on implementing operational transforms (a grad-level CS concept) in JavaScript. Maps has a fair share of computer-graphics concepts embedded in it.
You don't need to understand CS to do a web UI, but that limits you to the same type of web UIs that other people have already done. Pulling JQuery or Prototype snippets off the web and sticking them together. There's a whole other level of performance and flexibility you get by understanding the fundamentals, which most web developers completely ignore, and then they wonder why they don't need CS concepts.
The thing is - they do. Everything I was tested on in my interview was pretty analogous to something I've faced in my job. If you don't know your server's language, how will you write code that interfaces with the client-side software you're writing? If you don't know how to design programming languages, how do you evaluate various templating systems on the server side or JS libraries on the client side? If you don't know Big-O notation, what'll you choose when faced with the choice of attaching event handlers to each child in a DOM tree vs. using event bubbling and dispatching on the particular target? (Never mind that most Google interview candidates don't know about event bubbling in the first place and wouldn't be able to write a tree-walk if their job depended upon it.)
I'm a web UI engineer. My last two days at work were spent writing a JIT with LLVM for a templating language. Google Wave is all based on implementing operational transforms (a grad-level CS concept) in JavaScript. Maps has a fair share of computer-graphics concepts embedded in it.
You don't need to understand CS to do a web UI, but that limits you to the same type of web UIs that other people have already done. Pulling JQuery or Prototype snippets off the web and sticking them together. There's a whole other level of performance and flexibility you get by understanding the fundamentals, which most web developers completely ignore, and then they wonder why they don't need CS concepts.