Enable javascript in your browser for better experience. Need to know to enable it?

魅影直播

Blogs Banner

Why product objectives are your best guide to team design

IT鈥檚 role in the enterprise is rapidly shifting; from being a provider of commoditized solutions to becoming the core of modern businesses. As a result, many established companies are still struggling to organize their engineering and product development teams effectively around the things they鈥檙e building.

There鈥檚 no single way to structure teams successfully: organizational structure and politics have a huge influence. But given the benefits of good team design, I wanted to explore ways in which you can find a setup that works for your organization: one that creates the right environment, one that ensures your software delivery practice keeps pace with the fast-changing market.

Don鈥檛 assume feature teams are always best

Most IT organizations group people either functionally according to a particular specialization or cross-functionally, for instance, by product feature, increment. There seems to be a common understanding that functionally aligned teams in software companies are organized around dedicated parts of the software product. These are often referred to as . Functionally aligned teams are responsible for a specific part in a tiered architecture, meaning they produce horizontal slices to release their work (see Figure 1). For example, the frontend teams release frontend functionality, the backend service teams release backend functionality, data tier components release their functionality and so on.

Functionally aligned teams are responsible for a specific part in a tiered architecture
Figure 1:听Functionally aligned teams are responsible for a specific part in a tiered architecture

Component teams are a specific type of functional team within a tiered software architecture. They need to deliver and integrate their release slices to provide meaningful functionality or 鈥渃ustomer-valuable鈥 solutions (Figure 2). Generally, these teams are optimizing for a particular 鈥渇unction鈥 or discipline, such as internal scaling, optimization or things that foster some kind of specialized technical expertise with an eye to keeping costs down. Having the main focus there makes it generally quite difficult for a component team to spot new opportunities that increase revenue.


Functional and cross-functional teams
Figure 2:听Functional and cross-functional teams

Cross-functional teams 鈥斕齭ometimes called 鈥 on the other hand, own a particular piece of new functionality through all the architectural tiers and have the resources available to deliver this functionality autonomously (Figure 3). These teams appear in different variations across the IT landscape. Some of the more popular examples include autonomous, independent teams at or autonomous squads at . The key element they have in common is that they produce vertical release slices, meaning that they release new features through all the necessary architectural tiers of the product, as shown below.

Figure 3: Vertical and horizontal slicing of work

These teams are often good at coordinating and delivering business growth around critical and are optimized for speed. That鈥檚 because feature teams can quickly learn about their customers and / or partners, which gives them a strategic advantage. They鈥檙e able to accelerate the delivery of 鈥渃ustomer-valuable鈥 solutions because they frequently test new product assumptions in the real world and pivot based on these learnings.

So what's the point here? Should we all use feature teams or component teams? It depends. One problem I see highlighted in some articles is that the authors introduce a hierarchy that I don鈥檛 see supported in practice. There seems to be a dogma to promote feature teams as the pinnacle of agile / lean product development work and component teams are denigrated as the legacy waterfall losers.

The real problem organizations face is not choosing component teams, it鈥檚 choosing a team structure that doesn鈥檛 fit with the tasks at hand. A thorough understanding of the product objectives is the most reliable guide available when grouping team members functionally 鈥斕齜y component or cross-functionally by feature 鈥斕齣n order to use Conway鈥檚 law to your advantage.

Why component teams often fail to quickly deliver user value

Let鈥檚 stop for a second and look at a typical example. Imagine a component team organization of 20+ teams, grouped around specific services. All of these teams have their own backlog, roadmaps and belong to a cluster of other teams under the umbrella of different projects, with different sources of budget and leadership. Let鈥檚 assume that all of these teams together are trying to innovate around the enterprise's ability to stay competitive in the market by shipping new features that customers will value. And herein lies the danger: too often component teams are focused on building time-critical features to chase the market and optimize for speed.

One of the main challenges involved in such a scenario is to translate 鈥渞eal鈥 customer problems into the component teams鈥 backlogs 鈥 which will already include other, often competing, priorities.

User stories, the essential building blocks of shipping customer features, quickly become scattered technical tasks that are then somewhat also detached from the overall product vision and business goals. Not only does that make the development of these tasks more difficult but managing and coordinating work across multiple component teams produces significant overhead for everyone involved. On top of that, project managers might as well quantify success as outputs rather than outcomes, as the business and product objectives aren鈥檛 consistent across the organization and meaningful data may not be available. The bottom line is: this kind of functional aligned environment can鈥檛 provide the component teams with the type of tools and resources necessary to achieve this type of goal, nor the ability to evaluate its consumer success. This creates a sort of pressure cooker situation in which all the responsibility is on the team, while all the decision making around the delivery and critical information necessary is controlled from outside the team. I believe that the component team setup is just not ideal for this type of job, however, it isn鈥檛 necessarily bad because of that.

An interesting analogy, I have borrowed from Jeff Patton, to illustrate the problem as to why a component team setup is not ideal for continuously shipping 鈥渃ustomer-valuable鈥 features 鈥斕齱here time-to-market is critical 鈥斕齣s to think about it like painting a picture. It鈥檚 a very individual process in which the artist is constantly evolving the picture all the way from a sketch, to the outlines to eventually adding colors and shadows.

Figure 4: A lean product approach is much like painting
This level of autonomy and experimentation the artist needs to paint the picture is very similar to what a team needs in order to make progress and develop highly competitive time-to-market critical product features. It鈥檚 how lean product development works at its core and component teams don鈥檛 really have the tools available to excel at this type of task. This situation would be much more like the illustration below slicing the painting into many many different parts and trying to paint each of the parts.

Figure 5: A component team听approach to painting

Such an approach doesn鈥檛 necessarily mean a team is doing waterfall but it鈥檚 a highly interdependent environment in which teams quickly lose the connection to the user / customer and their flexibility with regard to the scope. They may spend significant time negotiating priorities with other component teams, managing dependencies and so forth, so that the portrait will somehow fit together in the end. In reality though, especially with a lot of teams involved, the portrait doesn鈥檛 live up to the customer鈥檚 expectations or perhaps it鈥檚 massively delayed in the delivery while the market opportunity is long gone.

In the same way, cross-functional feature teams can be a big disadvantage when the business goals clash with the team design. This is because they usually apply a very different set of trade-offs towards the things they are building. A great example is Wonga. They were trying to keep a business-critical level of maintainability and code integrity needed to provide a highly scalable , and found feature teams didn鈥檛 work out.

There are tons of examples like this, in which teams continuously experience some form of friction when the boundaries of the underlying team structures conflict with the type of goals they鈥檙e trying to achieve. Dysfunctional team setups regularly outmaneuver the overall delivery capabilities. But because examples of malfunctioning component teams are so common, it can be easy to fall into the trap of thinking feature teams are the panacea.

What I鈥檓 trying to highlight here is a simple rule of thumb: that team design should always account for the type of desired product objective. Many of the issues we see in the current IT space are related to poor team design choices for the job to be done. Team design, however, is at the very heart of product success and some of the worlds most successful software companies demonstrate that very vividly.

One reason why feature teams aren鈥檛 more widely used 鈥斕齟ven in areas they鈥檙e well suited to 鈥 is that they require a high degree of maturity in terms of the environment and the management. Meanwhile, the frequency with which we see component teams fail owes much to the fact that they鈥檙e simply more common. Established companies find it hard to change their structures to support cross-functional teams 鈥斕齭o even where there鈥檚 a desire to change from those in the trenches, it鈥檚 often not possible.

Moreover, the success curve is very steep in terms of the cultural change needed, especially when senior management are still operating within traditional project frameworks that like fixed budgets and scope. However, there are examples of success out there that demonstrate how different team designs can, for example, co-exist very successfully as well as focus and excel at the type of job they鈥檙e really good at. Investing into organisational learning, cultural change and outcome focussed leadership and management can really help established companies to create the environment needed to drive team design by actual business and product goals and therefore increase their delivery capabilities.

I recommend a pragmatic and thorough assessment of what your company is actually trying to achieve in order to understand how teams can be set up for success. Every situation is unique and what should be important for a successful software enterprise is to drive team design pragmatically, in a way that actually optimizes for a specific business or product objective. Modern product leadership understands that this type of management is the quintessential principle that should drive team design in practice.

Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of 魅影直播.

Keep up to date with our latest insights