  Self-assignment, where software developers choose their own tasks, is a
common practice in agile teams. However, it is not known why developers select
certain tasks. It is important for managers to be aware of these reasons to
ensure sustainable self-assignment practices. We investigated developers'
preferences while they are choosing tasks for themselves. We collected data
from 42 participants working in 25 different software companies. We applied
Grounded Theory procedures to study and analyse factors for self-assigning
tasks, which we grouped into three categories: task-based, developer-based, and
opinion-based. We found that developers have individual preferences and not all
factors are important to every developer. Managers share some common and
varying perspectives around the identified factors. Most managers want
developers to give higher priority to certain factors. Developers often need to
balance between task priority and their own individual preferences, and
managers facilitate this through a variety of strategies. More risk-averse
managers encourage expertise-based self-assignment to ensure tasks are
completed quickly. Managers who are risk-balancing encourage developers to
choose tasks that provide learning opportunities only when there is little risk
of delays or reduced quality. Finally, growth-seeking managers regularly
encourage team members to pick tasks outside their comfort zone to encourage
growth opportunities. Our findings will help managers to understand what
developers consider when self-assigning tasks and help them empower their teams
to practice self-assignment in a sustainable manner.
