Now that a few weeks have passed since the Edmonton Oilers, a professional hockey team, heartbreaking game 7 loss in the Stanley Cup Finals, I’ve had a chance to reflect on the season they had. They started the season as one of the worst teams in the league, went on a record-matching win streak, won their conference finals, and made it to the very last game in the Stanley Cup Finals. To make this even more impressive, the turnaround in their season was under the leadership of a rookie NHL coach, who joined the team when the Oilers were near last place in the league.
When Kris Knoblauch joined the team, the CEO of Hockey Operations for the Edmonton Oilers said “He knows how to take the star players and empower them, but more importantly he gives everyone a role, and they know what their role is, and there is accountability at the end of the day, and that’s the thing that I’ve watched over the years with Kris.”. As the Oilers progressed through their season, you would see more and more signs of this. Connor McDavid, arguably the best hockey player in the world, was no longer playing on every possible shift or being thrown at every challenge. His time on the ice became more balanced, allowing him to perform at his best when he was on the ice. Similarly, struggling players were given specific roles on the team, allowing them to focus and excel. One example of this is Edmonton’s penalty-killing group; they created the best penalty-killing group in the league by the end of the season, without any of their star players involved.
In the world of professional sports, the significance of well-defined roles cannot be overstated. The Edmonton Oilers' recent playoff run highlighted this perfectly, with coach Knoblauch constantly emphasizing the need for each player to know and execute their specific role. This approach is not only vital on the ice but is equally critical in technology delivery teams.
Drawing parallels between a hockey team and a technology delivery team can provide us with insights into how roles should be structured and understood to create high-performing teams. Having a common goal helps guide teams, but it’s not enough. Team members need to clearly understand what their role is and how to achieve it, together. Let’s break down these roles into three layers: the general expectations for each role, the value a team member adds to the delivery process, and the value team members are expected to bring in different scenarios.
Setting expectations: What’s in a role?
In hockey, a player’s general value to the team is outlined by their overall responsibilities. For example, a defenseman’s job description is to protect their goal, disrupt the opposition’s offensive play, and support the forwards in transitioning the puck.
Similarly, in a technology delivery team, each member’s job description forms the foundation of their role. A software developer’s primary responsibility might be to write code, fix bugs, and develop new features. A project manager’s general value is in coordinating tasks, managing timelines, and ensuring the team stays on track. This foundational layer ensures everyone knows their basic duties and the skills they need to bring to the table.
The value a team member adds to the process
Beyond their general role, players bring specific value to the team’s overall strategy and execution based on their position and line. A first-line player is typically a top performer, relied upon to score goals and set the pace of the game. A second-line player supports this effort by maintaining high performance and providing depth. Third and fourth-line players, while perhaps not scoring leaders, are crucial for their defensive skills, energy, and ability to disrupt the opposition.
In a delivery team, each member’s role in the delivery process is just as critical. While a developer’s job description might broadly state, “write code, fix bugs, and develop new features,” the day-to-day nuances of working in an agile team add depth to these roles. For instance, during a sprint, developers constantly collaborate, participate in daily stand-ups, and adapt to changing priorities based on feedback from sprint reviews and retrospectives.
A senior developer might be responsible for breaking down complex tasks into manageable user stories, mentoring junior developers, and maintaining coding standards. They also play a pivotal role in architectural decisions and technical debt management, which are crucial for the project's long-term success.
Mid-level developers often act as the bridge between senior and junior developers. They take on significant features, ensure their integration with the broader system, and help troubleshoot issues that arise during development. Their role is critical in maintaining momentum and ensuring the team adheres to agile principles and practices.
Junior developers, while still honing their skills, contribute by tackling well-defined tasks, writing unit tests, and assisting with documentation. They bring fresh perspectives and often work closely with mid-level and senior developers to understand the intricacies of the codebase and the project.
Additionally, developers engage in paired programming, code reviews, and continuous integration and deployment processes. These practices foster a collaborative environment where knowledge is shared, and the code quality continuously improves. The value each developer brings to these interactions and the overall delivery process goes beyond what is typically outlined in a job description. It’s about how they work together, support each other, and contribute to a cohesive and efficient team dynamic.
Understanding these specific contributions and the collaborative nature of development helps align efforts toward a common goal and ensures that each member’s strengths are leveraged effectively.
The value a team member adds in different contexts
Hockey players also have specialized roles during different phases of the game, such as power plays or penalty kills. These "special teams" require players to adapt their skills and approach to maximize their effectiveness in specific situations.
In delivery teams, the value each member brings is akin to these special team roles. During sprint planning, a senior developer might take the lead on technical feasibility and solution design discussions, ensuring the team can deliver on the proposed features. Meanwhile, in a sprint review, the same developer might focus on demonstrating completed work and gathering feedback from stakeholders. Throughout any given week, a developer likely acts as a leader, coach, and presenter as the context of their engagement shifts. If a senior developer attempts to lead in every situation, especially those that they shouldn’t own, it can create confusion within a team. Recognizing the specific contributions needed in each context and the value each role is expected to bring in those scenarios helps ensure every member’s input is optimized for the task at hand.
Conclusion
Just like any successful team, a high-performing delivery team thrives on the clarity of roles, responsibilities, and the value each person is expected to deliver. Understanding the general value of each role, the specific contributions to the delivery process, and the tailored input in different contexts can significantly enhance team cohesion and performance. By taking a page from Kris Knoblauch’s leadership with the Edmonton Oilers, we can see the power of well-defined roles in aligning teams to a common goal and creating successful teams.