I am on a fairly new team that is also new to TDD and Agile/Scrum. Currently we are developing a project that consists of web API and a native iOS and Android application, with a small team of devs working on each one. We were having a discussion about how to solve issues in developing concurrently and all had differing opinions and were looking for insight.
Right now, when we start a story we all branch our respective projects in Git for the story where the work sits through the approval process. Frequently, the native mobile application devs are stuck waiting for code on the web API end to move further in the process so that they can consume it and start the work.
Some argue that it is the web API dev's responsibility to mock that data and API endpoint from the start based on a defined contract then swap that code out for the code that will actually sit at that endpoint while the mobile developers work. The issues with this are that the mobile developers will still have a (shorter) waiting period while the data is being mocked and it will require more work on the web dev's end.
Others argue that the mobile developers should be mocking that data in their tests and develop using that mocked data on their end for their unit tests, letting their integration tests fail while the web API devs work on their code since the approval of the story depends on the two party's code in unison either way. The downside of this is that it still allows for the mobile devs to get ahead of the web devs and makes their testing and implementation of their UI much harder.
What are some best practices regarding this? Are either groups right, is a mix of the two groups right, or are neither of the groups right and there is another way to avoid this problem all together?