- Provide structure.
- Encourage independence.
- Encourage growth.
- The list goes on...
Agile development environments go a long way to help with the well-being of a team.
There is a basic structure that provides routine to the developers' time. Plan, develop / work, evaluate, repeat. This routine provides a structure for everything else. As a developer, I appreciate when I know that a release will occur every 15 business days, or that a planning session is scheduled for next Monday, so I should make my dentist appointment for Tuesday. I know (generally) what to expect when I come into work.
This structure, this sameness, provides a framework for the "scary" stuff - like trying to figure out what the customer really wants. Or how to save a binary stream into an image file. Or how to set up a data structure that the DBA will like, but that won't require 20 joins in every query.
The self-organizing part of agile encourages independence. As a ScrumMaster, I can be there to get obstacles out of the way, but the developers have the responsibility for determining what needs to be done, and for doing it (follow-through - big issue with teens as well).
Likewise, self-organizing encourages each developer to take the lead when they are able to. This allows them to play with leadership without leaving the security of their current job. It allows for some stretching in learning other areas of development too. If an agile team is well-cultivated, there will always be more than one expert. And if one expert leaves, another will have to jump into that role.