This is the cause of an awful lot of technical debt, and "big, widely used consumer facing app" is the natural habitat of large technical debts.
Turns out the back end (they were micro-services - even though the term hadn't been invented at that point) didn't have a call for "total number of users" so the front end code (this was server side HTML generation - 10+ years ago) was getting a list of every user in the system and iterating over all of them in chunks and counting.
CSS and the DOM has it's own set of quirks and bits of required knowledge that good FE devs will all know quite well.
I totally agree, but even if you have a front-end and back-end communicating well, sometimes the front-end developers throw too much over the wall to the back-end, like when the front-end "thinks it is more intuitive if the request looked like this" instead of something else that would be just as easy to create and would be much less work on the back-end. And I'm sure the opposite is true as well with back-end putting too much work on the front-end.
And, in the argument against a single full-stack developer being the solution to this problem, I've seen extremely talented full-stack developers create some terrible user interfaces, and some who created great user interfaces that would struggle to create adequately performant server-side services to back them.
At Labs we practice pair programming with frequent (ideall daily) rotation, so skills tend to diffuse and stories tend to get looked at by people with different backgrounds.
I disagree with this and am tired of the coupling between front-end development and design.
Especially on large apps, dedicated designers do the designer. Front-end developers implement.
I don't think we need FE Devs who are full on designers, but FE devs who are design 'aware' are, in my experience, much better.
Developers need as much a design ability as designers need engineering ability.
Mono linguistic programmers don't tend to be very good, front end devs are almost by definition mono linguistic developers.
Started with C++, then moved to PHP, looked at Ruby, picked up JavaScript, built some ASP.NET apps in C#, did some Unity programming, wrote a bunch of stuff in Java, then finally moved to full time JavaScript programming.
Why the hell do you think a front end dev is "by definition" mono linguistic? It makes no sense.
That doesn't sound right to me.
No-one in their right mind ever called flash developers genius coders, in fact they were (generally rightfully) regarded more as designers than developers and yet that's exactly the same niche front-end devs occupy today.
I've seen it more than once now, massive load of javascript built around the 'recommended' design patterns that as soon as you turn back into simple functions and throw a few if statements into to stop them initializing every page load, boom, massive page load gain.
You can be an expert on hoisting and this and ES6 and still suck at engineering, in fact I've seen it more than once in multiple languages, guys who knew entire language specs and yet couldn't code their way out of a paper bag.
There are 4 types of front end dev:
1. Designer who can throw together a few scripts
2. Inexperienced developer/designer
3. Developer who happens to have moved to javascript with basic design skills
4. Unicorn who's great at design and development
Everyone thinks they're 3 & 4s, in reality 95% of front end developers are 1 & 2s.
Half the things that get posted here that have dedicated front end devs are juddering, slow, scroll jacking monstrosities. Don't try and tell me that's not the present state of the front-end development, because we all know the reality is there's very few, actually good, front-end developers out there.
You're always going to have a bell curve of skill for every profession, not just devs or a specific subset of devs.
You can get a back-end developer to do front-end. He might lack the experience to deal with some gotchas or browser compatibility but it's nothing that can't be solved with a simple Google search.
A front-end developer doing back-end, on the other hand, might not work as well.
In my experience they often fail to come up with anything remotely modular on their own, write maintainable code, understand the design concepts of more "advanced" frameworks like Angular or doing anything different than copy-pasting some jQuery snippet they found on yahoo answers.
It's not that JavaScript forces you to write spaghetti code, it's just that until very recently it was mostly written by clueless morons that didn't know any better.
How can you write your front-end in something like Reagent if most of your staff get micro-strokes when being asked to type {{ }} instead of <%= %> in your new template system or go la la la can't hear you when you mention the merits of CSS preprocessors?
Fortunately this is all changing as the result of front-end these days getting more "mentally stimulating" thus capturing the interest of back-end developers (the ones that more often than not happen to have degrees).
disclaimer: anecdotal evidence etc
As a simple counter-example, Google requires all "front-end" developers to pass through the same algorithms interviews as backend developers.
On a big, widely used consumer facing app however, front end developers really come into their own.
They have cross browser, cross device responsive design issues to contend with. Accessibility and graceful degredation. Performant JavaScript. They also need design skills.
Very few people have deep skills in back end and front end.