I’ve seen teams with very high affinity between developer and story. For instance, the team decides it can deliver 5 stories (A, B, C, D and E) with its 5 developers (1, 2, 3, 4 and 5). At the beginning of the sprint developers form affinity to the stories (A1, B2, C3, D4, E5) throughout the sprint.

I think this is quite harmful for several reasons. First, there is little reason for pairing. Team members work in silos and hardly know what each other is up to, both technically and in terms of domain knowledge. It completely destroys daily stand-up meetings because whatever the guy next to me is talking about has absolutely nothing to do with me. Worse, quite often you get 5 incomplete stories at the end of the sprint.

In my view it is better for the team to pair up and attack a story at a time by story priority/value. The team feels they are in it together. They talk about their collective accomplishments/problems together at the daily stand-up. They talk out loud during pairing what they think about the problems are and the solution to the problem. In a good cross-functional team there is rotation of roles so every developer knows every part of the system. And at the end of the sprint you get at least some stories that are properly done based on value. As a bonus the team is less susceptible to failing the bus test.