Reference: Clinton Keith, Agile Game Development with Scrum, Chapters 8 and 9.
What are the characteristics of a great team?
- Follow a shared vision and purpose
- Complement other team members' skills
- Exhibit open and safe communication
- Share decision making, responsibility, and accountability
- Have fun together
- Deliver value
- Demonstrate shared commitment
Scrum fosters the following qualities of teams:
- Cross-discipline teams deliver features and mechanics that have clear value to customers and stakeholders
- Self-management allows teams to select the amount of work they can commit to every sprint and complete that work through whatever means they find appropriate
- Self-organization provides teams with a degree of authority and responsibility to select their membership
- True leadership focuses on mentoring and facilitation to free the best performance possible from the team
Typical Scrum team size is 5 to 9 people. Large projects may require larger teams or several teams. However, team productivity does not grow linearly with the increased team size, primarily due to the overhead of communication.
To help manage multiple teams, the product owner may delegate some responsibilities by creating a hierarchy of product owners. As with Scrum teams, a product owner team must have a shared vision and ensure the consistency of the shared vision everywhere.
When multiple Scrum teams are involved in a project, their sprint dates could be aligned, which provides some benefits:
- Teams can exchange team members
- A single integrated build can integrate the builds produced by separate teams
Scrum teams are formed by members representing different disciplines and specializations. Establishing communities of practice can help share the knowledge and eliminate the duplication of effort.
Iterations add a substantial overhead.
- Compile and link times to see the change in the game
- Tuning changes that adjusts some behaviors
- Asset changes to see it in the game
- Approvals from art direction, etc.
- Integrating change from other teams
- Defects, recovering from, and fixing them prior to a stable build
Personal iteration time includes the time it takes to do the following:
- Exporting and baking assets for a target platform a developer is iterating on (baking is the process of translating exported assets into a particular platform's native format).
- Changing a design parameter and trying it in the game
- Changing a line of code and testing it in the game
Commits are changes made to a project repository for the rest of the team to access.
- The commits should be safe and not break the build
- The build is in a working condition so that any failure is more likely to be tied to the last commit and quickly fixed.
Once changes are committed, a number of more extensive tests are made to ensure that those commits haven't broken anything in the build.
- Ensure that the build is solidly tested before it is released to the team
- Balance testing needs with the need to iterate quickly on build changes