- Agile teams should be motivated and self-organized.
You see this in principles five and 11
in the Agile Manifesto.
Many organizations have found
that the best way to keep teams self-organized
is by running them differently
from the rest of the organization.
Many organizations are split up into functional areas.
These are often called silos,
because they look like the vertical buildings
used to store grain.
In an organization, each of these silos
has their own area of responsibility.
So you might have a vertical stack for business people,
then another for software development,
maybe another for quality assurance.
Each of these silos will have their own managers
and common practices.
That's why a typical team will have representatives
from each of these silos.
So you might have a business analyst
who coordinates with the customer
to write the product's requirements.
Then you'll have software developers who write the software.
Then you'll have testers who make sure
that the product doesn't have any bugs.
Each of these team members will have their own manager.
This manager might pull them from the team
to work on another project.
Now, remember, in the penny game,
we talked about how handoffs can slow down your work.
So if each team member has their own area of responsibility,
then you're encouraging them to create handoffs.
Plus, if each person has their own manager,
then you're in some danger of being pulled from the team.
This will create backups
as work waits for the missing team member.
An agile team should be cross-functional.
A cross-functional team
has each team member working horizontally
through these functional areas.
That means that you might have software developers
that help you write requirements.
You might have quality assurance people
who are also developing software.
Each person focuses on the work,
and not on their own functional role.
In the penny game,
you saw that when everyone works together,
you can quickly have work move through the system.
It's true that it's much easier to find people
who can flip a penny than develop software.
So cross-functional teams
spend a lot of time cross-training.
That means that everyone
spends a little time training and learning.
It's nearly impossible to have everyone on the team
equally skilled in all the functional areas,
but agile teams should strive to have everyone good enough
to be able to contribute something
to every bit of work on the team.
If you have work that only one person can complete,
then you'll create handoffs and backups.
This expert needs to train the other people on the team
so you can be sure to continuously deliver
at a predictable pace.