Building Jelled Teams in Software Development
The concept of a team suggests that the skills and expertise of group members can be synergistic, resulting in a performance that is greater than the sum of its individual parts.
This concept isn't mere guesswork; it's supported by scientific research, such as the study by Driskell and Salas, which shows that cohesive teams perform better than collections of individuals when it comes to problem-solving tasks. (5)
While this idea is well-known in team sports, it is often overlooked in software development. Instead, teams in software development projects are often formed based solely on the required skill sets. If a particular competence is missing, a freelancer may be brought in to bridge the gap.
This is part of a common strategy for expanding software development teams, often referred to as "body rental”. This approach can make it particularly challenging to build cohesive teams, as individuals may lack shared goals, incentives, and a sense of unity.
At Buildo, we believe that building a high-performing development team is essential for creating successful software products. From recruiting the right talent to cultivating a positive team culture, numerous steps can be taken to construct a team capable of realizing your vision. So, how does one assemble and lead such a team?
Building a team is a complex process; there's no general procedure that works for every company. That said, insights from both literature and real-world experiences provide valuable guidance, serving as a source of inspiration for crafting a personalized approach. In this article, we will explore some of the essential principles that have inspired us at Buildo to develop our unique approach to building an effective software development team.
Building jelled teams
Teams that demonstrate a synergistic dynamic, in which the collective performance exceeds the sum of individual contributions, are often referred to as "jelled teams". These teams tend to be more productive than groups of professionals who are simply brought together, as they genuinely embody the essence of synergy. This phenomenon can have a significant impact on both delivery and retention.
Quoting DeMarco, Tom, and Tim Lister:
An interesting example of a jelled team is IBM's nefarious testing team, commonly known as the "Black Team."
This group of experts forged their identity not only through their technical skills but also by embracing unique physical characteristics, such as growing mustaches and dressing in black. These distinctive traits helped elevate their sense of unity, transcending their individual skills and expertise to achieve exceptional results.
While this example may be somewhat extreme, it offers valuable insights into the process of building jelled teams and the impact of fostering a strong sense of unity among team members.
Teams are grown rather than built (2)
One critical step in creating successful teams is recognizing that they are more cultivated than constructed. So, how do you cultivate a jelled team? One approach is to adopt the role of a “gardener” as a leader. Just as a gardener nurtures and tends to a garden, a team leader can guide and support their team to help it grow.
This involves providing resources and support, fostering a positive team culture, and helping team members to develop and grow their skills. By adopting the mindset of a gardener, leaders can help their teams to reach their full potential.
At Buildo, we put this "gardener" approach into practice by creating autonomous cross-functional teams that are responsible for the success of their respective projects. These teams consist of members with diverse skills and expertise, which fosters an interdisciplinary environment. This approach allows the team to have a comprehensive understanding of the project, enabling them to address the problem in its entirety. By assembling these cross-functional teams, we encourage alignment and cultivate a sense of shared goals and unity among team members. This not only strengthens the team's cohesion but also empowers each member to put their skills into practice and acquire new knowledge while collectively striving towards the project's objectives.
Conway's Law is an observation made by computer programmer Melvin Conway in 1967 that states:
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.
For example, according to Conway, software developed by a team divided into silos will likely have a modularized structure reflecting those silos.
The rationale behind Conway's Law is that software development is a collaborative, complex process involving individuals with varying skills and viewpoints. A development team's communication patterns and social dynamics can significantly impact the resulting software system's design and implementation.
The most interesting aspect of Conway's Law is that it suggests it is possible to shape the resulting software architecture by reorganizing the communication patterns and social dynamics within a development team or organization.
One such application is the Inverse Conway Manoeuvre, a strategy that leverages Conway's Law to enforce specific architectural decisions.
For example, the microservices paradigm dictates that each service should have its own separate storage. Having a centralized team of DBA experts might make it more difficult to properly implement the microservice paradigm, as the database and microservice teams, following their usual communication patterns, may be inclined to create a centralized storage system. In this case, distributing database knowledge across microservice teams could prove beneficial in enforcing the architectural pattern.
Conceptual integrity refers to the degree to which a software design conforms to a single, simple set of principles. By focusing on conceptual integrity, organizations can ensure that their software is well-designed and meets the needs of its users. It can be achieved when the design process is guided by a small number of individuals who agree about the project's direction and have a deep understanding of the system (3).
A notable example of conceptual integrity in practice is the Linux operating system. Despite the vast number of contributors and the massive size of the Linux codebase, Linus Torvalds remains deeply involved in the project. He is still responsible for merging most of the code into the Linux Kernel, ensuring that every contribution aligns with the core principles of the system. By maintaining a clear vision and consistently enforcing design guidelines, Torvalds has fostered an environment where conceptual integrity is preserved, resulting in a neat and high-quality operating system.
Conceptual integrity is an intriguing concept that has the potential to improve the effectiveness and efficiency of software systems significantly. While it is not a guarantee for success, it is worth considering as a guiding principle in software development.
Empowered Execution and Open Book Management
Effective execution in a team setting often necessitates empowering team members to make decisions, particularly those who are closest to the problem at hand.
To make informed decisions, these individuals must have access to all the necessary information. This concept is at the heart of Open Book management, a business approach that emphasizes sharing knowledge, training, and essential information with every employee to enhance their contribution to the organization's success. This involves granting employees access to financial and operational data, as well as the tools and resources required for informed decision-making.
It is also crucial for management to trust and empower their team members, granting them the autonomy to make decisions within their area of expertise. By cultivating an environment of empowered execution, teams can become more agile and responsive to challenges and opportunities.
At Buildo, empowered execution is at the core of how we build software products. In our team governance process for new projects, we emphasize decision-making autonomy, responsibility, transparency, and open communication among team members. The Open Book management approach enables teams to act faster and serves as an enabler of the empowered execution principle.
In conclusion, building effective software development teams is a complex process that requires a thoughtful and strategic approach, focusing on unity, shared goals, and an environment that fosters growth and learning.
Leveraging principles like empowered execution, open book management, and conceptual integrity, while embracing the unique characteristics of jelled teams can lead to high-performing development teams capable of tackling complex projects.
Viewing the issue from another angle, organizations must also remain vigilant in identifying and mitigating teamicide, which encompasses detrimental behaviors like goal misalignment, physical separation, excessive overtime, defensive management, bureaucracy, and overly prescriptive methodologies.
We hope that the insights presented in this article, along with Buildo's example, will serve as valuable guidance for others on their journey to assemble and maintain strong, effective teams in the software development industry.
Books about teams:
1. McChrystal, Gen Stanley, et al. Team of teams: New rules of engagement for a complex world. Penguin, 2015.
2. DeMarco, Tom, and Tim Lister. Peopleware: productive projects and teams. Addison-Wesley, 2013.
3. Brooks Jr, Frederick P. The mythical man-month: essays on software engineering. Pearson Education, 1995.
4. Skelton, Matthew, and Manuel Pais. Team topologies: organizing business and technology teams for fast flow. It Revolution, 2019.
5. Driskell, J. E., and E. Salas. Collective behavior and team performance. Human Factors, 34(3), 277–288, 1992.