Wednesday, July 13, 2011

Creative Partnerships For Effective Development Teams

Application development teams transforming to a new development methodology, framework, or process are challenged with ensuring their new working relationship and responsibilities have a positive impact on the results of the transformation.  Development managers and leads can enable effective product and feature teams by ensuring the following topics are visible and well understood.

Pull, Don't Push
A basic undercurrent of an effective application development team is its culture of pulling work instead of reacting to work pushed upon it.  Pushing work removes creativity from the process to the point where team members lose the vision of the complete solution and only focus on their current work item.  Managers and leads should ensure the capacities of their teams are not 100% utilized with work that the team was not ready to pull.

Managers and leads can create effective team members by ensuring end to end integration of the entire value stream (using value stream analysis) and ensuring work is pulled just in time (JIT).  Teams enjoy the right to have pride in their workmanship, and barriers to this right should be removed to increase their effectiveness. 

With a pull system in place, an application development team can effectively partner with with other teams (as well as with its own team members).

Scrum Team Roles
In the Scrum framework for application development, the following three roles are identified to perform the work.  These roles have different individual goals and it is important to distinguish the individual goals from the larger team goals. 
  • Product Owner - The Scrum Product Owner for the team is responsible for providing the next priority and the answers to any product-related questions.  Individually, this person needs to ensure that the requirements conveyed to the team are correct and what the product minimally needs at that point in time.  At a team level, this person sets planning goals and is there to assist the team with priority.
  • ScrumMaster - The ScrumMaster is responsible for coordinating the team.  Individually, this person needs to ensure the team's practices are correct and followed, and that each team member's work flow is going as smoothly as possible.  At a team level, this person ensures the team is only committing to work it has the capacity for.
  • Team - The Scrum Team is responsible for completing the work.  Individually, the team is a set of individuals with the right to perform their roles as professionals.  At a team level, the team pulls work from the Product Owner when they have the capacity (see creative examples of how more than the team can work with the Product Owner).
The partnerships between these roles can become constrained if the roles are not fully understood.  If there is not a culture of pulling work, then the Product Owner and ScrumMaster may inadvertently push work on the team for which there is not capacity.  Managers and leads should enable their Scrum teams to partner effectively by clarifying the roles and assisting with implementing a culture of pull.

Project Managers and Teams
Project managers should partner with teams from a high level.  In large organizations, or projects within a program, project managers are needed to monitor, report on, and control dependencies between entities.  Teams are needed to self-organize and complete the work.  At intervals (just in time or regular intervals), the team should connect with the project manager to communicate any risk changes or issues that affect the dependencies the project manager is monitoring.

The project manager does not need to track or plan the individual work items of the team.  However, at intervals when coordinated efforts are required between entities, the project manager can then partner with the team to facilitate scheduling and coordination.

Project managers and teams need to work together especially when combining differing methodologies and frameworks.

Development Managers and Teams
Development managers should partner with the team with enabling in mind.  The team remains self-organized, while the manager enables the team to succeed in the greater enterprise.  Day to day, the manager assists the team with conflict resolution, providing guidance and objectives, and coaching.  The manager then works to strengthen the team by acting as a catalyst, removing barriers, and optimizing the team's value stream.

The team performs the work to meet the set objectives, and works with the manager to identify the barriers.  It is the manager's responsibility to provide leadership to the team.  The manager can blaze a trail while the team follows up by completing the road.

DevOps
A relationship exists between the application development team and the operations team that runs the application day to day.  Whatever the details are, a relationship does exist.  In some organizations, the teams are completely separate, where in others the teams are one and the same.

Compliance and regulatory requirements may affect the organization's ability to integrate these teams, but an effective practice is to ensure that the development team has a close relationship with and an understanding of the operational side of the application. 

The application development team should partner with the operations team to ensure the execution of and issues for the application are visible and known by each team.  Development team requirements, design, reviews, and showcase sessions should include the operations team.


Application development teams can increase their effectiveness by partnering with other teams.  An understanding of the differences in teams and their roles and requirements can increase the effectiveness of the partnership.  Application development managers and leads can enable teams by leading them into these effective partnerships.

No comments:

Post a Comment