I commonly see stories that have back-end and front-end development. For example, consider a large dialog with a few tables and some dynamic controls. We'll make several stories (maybe one for each table and another for the dynamic control system).
The dev team will then split with one person on the back-end and another on the front-end. This makes it easy for the back-end person to just worry about the structure of the SQL layer while the front-end person focuses on stuff like layout. After the initial interface between back- and front-end is agreed, the two developers can focus their attention to get their part done by the end of the sprint.
Then comes the chaos. Who "owns" which story? What does "in progress" mean or "done"? Should we make two separate stories for back-end and front-end? If so, doesn't that break the idea of user stories based on feature? Our system has a notion of "sub-tasks", which eases some of these problems. But sub-tasks add an extra complexity. Is there a better way? Is this a "bad" way to use Scrum?
I have been using some form of Agile over the past few years at a couple places. I have no official training yet, so please forgive any wrong terminology or ideology. I'm just trying to learn practical ways to improve our process.