The way I think of it, a frontend <i>developer</i> specifies REST APIs and writes controllers and routes, while the backend developer is the one required to know their algorithms and data structures cold, and writes/architects the model and business logic. A site like the Google homepage obviously requires both kinds of these developers. CRUD only requires the frontend developers, though, so we call the code-monkeys munging Photoshop mock-ups into CSS "frontend developers" and call the actual frontend developers backend developers.