A succinct way I’ve framed the split is that a front-of-the-front-end developer determines the look and feel of a button, while a back-of-the-front-end developer determines what happens when that button is clicked.
Doing it right requires a different pace of working and a much broader thought process than “ok, let’s get this thing out the door.” Which is super tough because most workplaces place a huge emphasis on getting things out the door, and fast. Little agile tickets that are expected to be completed in micro sprints to me seem to be antithetical to doing it right.
Fascinatingly, one of the other big complaints people had about agile is no iteration. I don't understand how being in an agile environment makes people less iterative, but somehow that seems to be the case. And I think it's because people misunderstand and think that agile is just about putting features out faster, and not about the important part, which is getting something in front of users faster so that you can get feedback on it and make it better.
People are afraid to let design have time to actually figure out the right thing to make, because "whatever will the engineers do?" – fuck you, there's plenty for the engineers to do. Go fix some technical debt. Go fix those 700 bugs that you de-prioritized or marked as won't fix because you're an asshole.
I'm sorry, I love engineers. I don't know why I'm yelling at them. But you know, there's plenty for the engineers to do. There's all sorts of cleanup. They can work on dev-ops stuff! They can work on their build process! Make it faster! I'm not worried about keeping the engineers busy. If you think that the only thing that engineers can do is build yet another stupid feature that nobody is going to use, then you're a garbage designer and you should quit.