I personally would prefer to see this divide:
- Product developer - implements the functionality, from the database to the functional UI. Lives in Ruby/Python/PHP/etc. AND Javascript
- UI designer - creates and implements visual designs. Lives in Photoshop and HTML/CSS
- Dev Ops - maintains the infrastructure, optimizes resources, manages deployment. Lives on the command line
Of course, all these rolls have crossover. And hopefully that's a good thing, your team shouldn't be segregated by knowledge barriers.
A big problem I see is that "front-end" is right now defined as "HTML/CSS/JS". Being good at the first two is a completely separate skill from being able to write and design software in a programming language like JS. I see much better results from designers who can deliver built templates than I do from those who can just deliver photoshop files