¿Es un buen enfoque: hacer el backend y la API REST y luego el front-end?

Sigo el modelo del Árbol de decisiones cuando trabajo en un proyecto.
Creo que es muy importante tener una arquitectura de información lista (un diagrama aproximado sería bueno al principio) ya que te da una idea clara de los flujos.
Lo siguiente que hago es decidir sobre las API REST y anotarlas en una HOJA DE EXCEL.
Lo llamo Definiciones API

Una vez que mis ingenieros frontend y backend están contentos con estas definiciones de API, comienzan a trabajar en paralelo.
Angular ofrece un servicio realmente útil llamado $ httpbackend que le permite simular un back-end para realizar pruebas. Por lo tanto, reduce el tiempo y el esfuerzo para construir cada parte de manera diferente y ahorra muchísimo tiempo tratando de conectar tanto el backend como la interfaz.

También nos da la oportunidad de evaluar la API rápidamente y cambiar una API en particular rápidamente en lugar de esperar a que termine todo el trabajo de back-end. Siento que es más ágil.

Este es casi siempre el enfoque que prefiero seguir al desarrollar aplicaciones de tamaño mediano a grande. Es útil tratar su servidor y API como una caja negra con funcionalidad determinista.

Esto hace que sea más fácil establecer expectativas al desarrollar el front-end. Una vez que haya clavado la API, ahora puede concentrarse en diseñar componentes frontend que interactúen con los datos y los manipulen.

Por mi experiencia lo hago de forma iterativa. En primer lugar, creo RESTed Back End con funcionalidad básica (autenticación, vista, etc.), luego, al desarrollar Front End, agrego funcionalidad adicional a Back End.

Ayuda a simplificar algunas cosas cuando está haciendo el trabajo solo.

Pero para equipos grandes donde un grupo está trabajando en el front-end y el otro en el back-end: trabajar en conjunto no es una mala idea. Como ya tiene el sistema resuelto en maquetas, DFD y demás, un grupo puede seguir adelante (por ejemplo, front-end) crear un formulario y luego solicitar al equipo de back-end que entregue los datos en ese formato, por ejemplo, JSON.