Let's talk about one of the main pain points of the use of Agile practices in hardware environments. At least, one that Marina, me, and many of our peers have been experiencing when trying to find a matching and effective implementation of Agile ways of working that benefit engineering teams, complex systems development, and product quality: the topic of mono or multi-competence teams.
The matter might have been called differently in your organization (e.g. 'cross-functional teams', 'product teams', 'stream aligned teams', 'system teams', to name a few). But for the sake of easiness-to-read; we use 'mono' and 'multi competence teams'.
Anyone who has been in the trenches of applying Agile practices for the benefit of hardware engineering companies says the same: it is incredibly difficult. Let me elaborate...
24 years after the publication of the Agile Manifesto, and hence more than 24 years of experience in the use of what we call 'Agile' has taught us the effectiveness of small, stable teams who embody all necessary competencies and capabilities to develop products and functionality of value. For software teams that might require a composition of specific coding skills, testing skills, UI/UX skills, database querying skills, and specific contextual expertise such as API handling or certain machine learning algorithms. Obviously, the required skills and backgrounds are highly specific to the product, solution, system, or value each specific team develops and maintains. One would call a team like this to be a 'cross-functional' or 'multi-competence' team. Ask anyone from a hardware company, and they would call this team composition to be a mono-competence team, as it only contains 'software people'.
Hardware teams might have a completely different composition. For instance, a hardware team can have a collective objective to develop a frame, or a complex module containing high-voltage components, safety shielding, motors and actuators, and control modules. This entails the need for skills and expertise from mechanical engineers (e.g. material use, frame development, precision mechanics, thermal engineering), electrical engineers (e.g. board designers, FPGA engineers, layouters, cabling and shielding), software engineers (e.g. control software, HMI, data handling), and industrialization (e.g. manufacturing engineering, technical authors, manufacturing protocol builders). Each of these engineers has an extensive background (education, experience) within their respective fields. On top of that, each field has a different language, protocols, and constraints to consider, for very good reasons.
A simple statement such as "Each team needs all engineering competences represented" is too narrow, and simply illustrates the lack of understanding of the complexities involved in the matter. With this blog post & newsletter we hope to bring you into our circle of understanding and hope we can broaden the group of interested people to pick each others' brain.
There are circumstances where mono-competence teams are highly beneficial. Consider the following:
Multi-competence teams (i.e. engineering teams that contain people with different engineering backgrounds) can also be very valuable and effective. Consider the following:
The truth is not that black and white. Complex product development requires all of the skills and competencies of the involved experts. Hence, organizing in a stable team of stable agile teams, requires us to have a mix of mono-competence teams and multi-competence teams planning, working, integrating, and learning together. The composition is highly dependent on the stable scope of each agile team. In future publications (and in our book... hint-hint!) we will elaborate on approaches to design teams which, together, have the ability to develop quality products efficiently while remaining stable over a long period of time. But, in any case, let us know what you think and what your experiences are...
As always, thanks for reading. Hope it brought you some thoughts.
Footnotes: