# Guide for Managers on Building Effective Software Teams
Written on
Creating High-Performing Teams
Dear Manager, this letter is a dialogue from one manager to another. Throughout my career at some of Finland's largest organizations, I’ve developed insights on establishing essential teams like Platform, DevOps, Developer Experience, and CloudOps. I hope this message finds you well.
"Things you wouldn’t believe" — a nod to Rutger Hauer's iconic line in Blade Runner. This article serves as a companion piece to "Team Needs From Your Development Teams," which delves into team capabilities and lifecycle management. Here, we will outline strategies to further empower your teams.
The Importance of Diverse Teams
Each team serves a distinct purpose, with specific goals and structures. The teams I mentioned are often recognized as platform teams, designed to enhance the effectiveness of stream-aligned teams by providing reusable and customizable platforms through plugins. This adaptability ensures resilience in the face of changing requirements. The concept of Platform Teams has gained popularity through literature like Team Topologies.
These teams can offer their platforms either as products (PaaP) or services (PaaS). Platform Engineering teams focus on creating products with a customer-centric approach, unlike the more generalized concept of Platform as a Service, which often requires users to make compromises.
In the current era, every organization is reliant on software systems, evolving into software companies themselves. Having been part of this transformative journey has been immensely rewarding.
My experience spans product and stream-aligned teams, but my true passion lies in supporting the latter. Our main goal has been to enhance developer productivity by providing tools, governance frameworks, and guardrails for autonomy. Importantly, I collaborate with developers to foster a supportive community, in contrast to traditional approaches that often prioritize hiring additional developers to boost productivity.
Understanding DevOps
The term "DevOps" carries a multitude of meanings, often tied to concepts like team autonomy and end-to-end responsibility. While these ideas promote teamwork and efficiency, they can also create unrealistic expectations. How often do we evaluate the demands we impose on teams?
Autonomy can significantly enhance a team's ability to fulfill its responsibilities. At the organizational level, it’s crucial to balance the fairness of actions required from teams, as every action influences the ultimate outcome.
Understanding Systems Thinking
DevOps encapsulates a holistic approach, encompassing the entire product lifecycle, including operations and continuous improvement of delivery processes. If you're uncertain where to begin, focus on the following areas: Responsibility, Time, Trust, Flow, and Value.
Responsibility
Assign ownership where it belongs. Your organization expects teams to manage application incidents, which is a positive step. Teams need dedicated time to establish monitoring systems, alerts, and necessary tooling. Centralizing certain functions can also help minimize duplication of efforts.
Time
Support your team’s time management. Allow them the freedom to develop and maintain applications as they see fit. Time for experimentation and improvement is essential for long-term productivity.
Trust
Gaining leadership trust is vital. Sustainable growth depends on proper capabilities being in place. Instead of top-down directives, empower teams to make decisions while providing guidance and resources.
Flow
As Gene Kim states in The Phoenix Project, “Improving daily work is even more important than doing daily work.” Help your teams streamline their work processes and minimize friction.
Value
Focus on enhancing the developer experience. Retaining top talent in a competitive market requires directing their efforts toward meaningful work rather than repetitive tasks.
Addressing Team Needs
As organizations adopt agile methodologies, it's crucial to construct platforms that allow teams to choose their own tools and architectures. This flexibility, however, comes with increased risks. Educating teams about these risks can mitigate the need for rigid review processes.
Psychological Safety and Onboarding
Building effective teams often starts with fostering psychological safety and providing time for members to collaborate. Culture cannot be bought or manufactured; it must develop organically.
Rapid team expansion can lead to cultural drift, undermining cohesion. As organizations grow, effective onboarding and communication become paramount to maintaining consistent culture.
If developers were to voice their needs, they would likely prioritize tools, practices, and clearer objectives over merely increasing headcount. Alleviating operational burdens within the Software Development Life Cycle (SDLC) can significantly enhance their experience.
Encouraging Healthy Failure
Failure is often seen negatively, but it is essential for growth. Thomas Edison’s many failed attempts led to groundbreaking inventions. If teams are not experiencing failures, are they truly pushing their boundaries?
Promoting a culture that embraces failure allows teams to learn and innovate. Use Blameless Post-Mortems to facilitate learning from mistakes, fostering an environment where teams can explore new ideas without fear.
Utilizing Contextual Metrics
Effective measurement is not the ultimate goal; rather, it serves as a tool for improvement. Metrics should be utilized to foster learning and development rather than merely tracking performance.
Metrics can be classified into leading and lagging indicators. While lagging indicators might reflect past performance, leading indicators can provide insights into what can be improved.
In summary, team autonomy should not exist in isolation. Teams must be empowered to solve business challenges effectively, supported by a framework of responsibility, time management, trust, flow, and value.
To conclude, focus on:
- Responsibility
- Time
- Flow
- Value
Followed by:
- Psychological Safety
- Excellent Onboarding
- Reduced Cognitive Load
Finally, remember to encourage learning through:
- Blameless Post-Mortems
- Improved Guardrails with Freedom
- Contextual Metrics
If these strategies resonate, I would love to hear your thoughts. I’m confident your teams will thrive as a result.