When a company opts for diversification, team organization tends to be simpler. For each product, there will be a single team of engineers (2–8 people, which can be back-end or front-end or full-stack, depending on your product needs), plus a SysAdmin (system administrator), or up to 9 people in engineering. In addition, it will have 1–2 UX people, one of whom will focus more on visual design, and ultimately a product manager. This is the core team of the product we commented in the article What is digital product management?.
It can often happen that some people on the team are shared with other products. Top candidates to share are the visual designer, product manager, SysAdmin, and front-end engineer. Back-end engineers should not be shared.
It is important to remember that by sharing a person between two products, her attention will be shared, which has both strengths and weaknesses. The obvious downside is that she will pay less attention to each of the products she cares for. On the other hand, the fact that she lives two realities, that is, taking care of two products, can make her bring good practices from one team to the other (and vice versa).
However, even if there is this positive point, there are other ways to exchange good practices without sacrificing a shared person’s time and attention. Therefore, the best thing to do is not to share people between two products. Of course, if you have financial constraints, this division between products is acceptable, but try to consider this a temporary situation.
Sharing people between more than two products is extremely inadvisable. The maximum acceptable share is two, and this will already have a considerable impact on attention, productivity, and quality.
Another important point of this type of structure is the importance of maintaining functional cohesion. This can be done through functional leadership, or functional self-organization.
Functional cohesion is important to ensure that there is consistency between team work, and that each one learns from the other’s good practices. Otherwise, each team will make a product that will look, not only from a different team, but from a different company!
At Locaweb, we choose to maintain cohesion through functional leadership. We have leaders in UX, product management and engineering. This guarantees us a good consistency between different products. For example, we created interaction patterns, Locaweb Style, so all Locaweb products have an equal interaction pattern. An Email Marketing product customer knows that when using the Backup product, he will not have to learn the interaction all over again. Locaweb Style is available as open source.
How to organize big teams?
When your product grows — whether in a single-product company or one with a diverse portfolio — the questions begin about how to get organized. This usually takes longer in companies with a diversified product portfolio, because whenever a particular team grows a little, there is a desire to get some people from it to focus on a new product.
In a single product-focused company, the need to organize large teams happens very quickly. It is not difficult to imagine more than 8 engineers available to work on a product and, as we saw earlier, each product team must have a maximum of 6 to 8 engineers. How to organize with larger teams?
The product should be broken into subsystems. These will certainly have some kind of integration and interdependence, but their architectures should be such that interdependence is minimal to make the integration layer as simple as possible. Each of these teams will need back-end and front-end engineers, UX, SysAdmin, and product manager. Because they are subsystems of the same product, these teams may eventually share the same product manager, the same UX, and the same SysAdmin. Here, sharing is a bit more acceptable and sharing may exist in up to 2 subsystems.
However, you must be careful that these people shared between more than one subsystem do not see bottlenecks. The ideal is to have people 100% dedicated to each one. In this ideal scenario, where each member of the teams taking care of each subsystem is 100% dedicated, it is very important for someone to have an overview to help coordinate work between teams. As mentioned, it is important to minimize the interdependence of these subsystems, but some dependency will always exist, and this will need to be coordinated. Eventually, a product manager may be needed to help with this coordination. Ideally, we should have a product manager, an engineering manager who tracks the work of all engineering teams, and a UX manager to help coordinate the work of each subsystem’s UX designers.
For example, the Website Hosting product is divided into 7 developer teams that focus on different product subsystems. One team works on the development of the hosting control panel; and another works on the provisioning subsystem, which is responsible for installing, suspending, and uninstalling the components that make up Locaweb Website Hosting, that is, the hosting itself — which may be Linux or Windows, the database, and the email.
So, another team takes care of the e-mail control panel and webmail, and finally 4 more teams take care of the subsystems connected directly to the infrastructure, which are the Linux, Windows, database, email and database infrastructure teams. We have two product managers for all of these teams: one focused on website hosting subsystems, the other focused on email subsystems. We also have two UX designers, with the same focus separation, plus a product manager, one UX designer, and one engineering team.
Another good example on a considerably larger scale is Spotify, a music streaming application created in Sweden in 2008, which has over 75 million users according to June 2015 data. The company has over 1,500 employees, all dedicated to one product, and most of them are part of the product development team.
About QA (and Front-End and BA)
When this chapter was published on my blog, I received some comments about the lack of QA (Quality Assurance) role in team organization. Therefore, I decided to include some considerations on the subject here.
However, before considering, I would like to quote a very nice phrase I once heard that should be remembered whenever conversations about different points of view take place: the fact that we disagree does not necessarily mean that one of the two is wrong.
What’s the point?
In my view, processes, methodologies, and ways of organizing a team are not the goal itself, but the means, the tools to achieve a goal. In the case of software, the goal is usually to meet the strategic goals of the software owner while solving problems and needs of users of that software.
QA (and Front-End and BA) at Locaweb
Until the middle of the second half of 2015, we had product engineering teams at Locaweb, one team for each or two products. We also had two separate functional teams from these product engineering teams, the front-end and QA teams. At the end of 2015, we decided not to have a front-end team or QA anymore.
About the Front-End Team
- The team had 5 developers, while Locaweb had 12 product and system development teams. Since back-end developers didn’t mess with the front-end, the front-end team ended up becoming a bottleneck.
- The team had developed, along with UX, Locaweb Style, a front-end behavior and style framework that we use in our products and made available for anyone to use in their projects. Locaweb Style aims to facilitate front-end programming of our product interfaces. Locaweb Style makes it easier for back-end developers to front-end, thereby reducing the bottleneck.
- As a result, we decided to no longer have the front-end team and front-end developers went to product teams where front-end is most relevant. Front-end developers also started to work on back-end, just as back-end developers started to work on front-end. Always respecting Locaweb Style.
- The front-end functional team coordinator became a product engineering team coordinator. This gave him and the front-end team members (who are now developers assigned to a product team) a greater sense of purpose as they deliver a complete product and not just interface programming.
About the QA Team
- When QA function is separate from software development function, it is common to hear phrases such as “feature is ready, now in QA”. This denotes a waterfall culture, which can greatly increase development time and negatively impact software quality.
- When there is a separate QA function from the software development function, it is also common to hear phrases like “Why didn’t QA catch this bug?” This denotes a culprit-seeking culture that can be very detrimental to the team’s climate and consequently negatively impact software quality.
- Quality should not be the concern of one person or team, it should be the concern of all the people working on the software.
- Quality is a non-functional requirement, that is, a requirement that specifies a criterion for judging the operation of software, which is different from a functional requirement, which specifies software behavior. Performance, scalability, “operability”, “monitorability” are some examples of non-functional software requirements that are as important as quality. Even so, there are no roles of * performance assurance *, * scalability assurance *, * operability assurance * and * monitorability assurance *. Why is quality the only non-functional requirement that has a specific function in place to ensure it?
- QA focuses on ensuring the quality of the software development process. If a separate role is required to ensure this quality, why there is no need for a separate role to ensure the quality of the product management process, the UX design process, the product marketing process, the sales process, and the financial process?
- At Locaweb, we had around 12 QAs, some more developer profiled and some more SysAdmin profiled. As we proposed the extinction of the role of QA, some of the QAs became devs of a product while others took on the role of SysAdmin.
- There was concern among devs that if the dev itself will now have to test, deliveries will take longer to get ready. This concern existed as devs considered their work to end when they passed the story for QA to test. However, this ready-made view of dev is incorrect, as it only passed the story to the next phase, the test. From the software user’s point of view, the story is only ready when the user can use the new feature. And what happens when the story goes through QA, is rejected and needs to go back to development?
When I joined Conta Azul in August 2016, I learned that they had also extinguished their role as QA earlier that year. The motivation was a series of visits they made to Silicon Valley companies and realized that they did not use QAs and that everyone on the team was responsible for the quality of the software developed. At Conta Azul, QAs made the career change to BAs.
Another question I received when I published the text of the previous chapter was about the absence of BA (Business Analyst). I did not explicitly state BA, as BA and PO are similar roles in software development. The differences were explained in the BA, PO and PM article. However, both have the same goal: to help the team make software that meets the software owner’s goals while solving their users’ problems and needs.
In some organizations, it may happen that BA is focused exclusively on business, that is, understanding only what the business objectives are, leaving aside the problems and needs of users. In this case, it is important for BA to also take into account the problems and needs of software users, balancing them with business objectives.
In this article, I showed you how to organize your product development team depending on whether your strategy is to diversify your product portfolio or focus on a single product. I even explained the absence of QA and BA in my recommendations on organizing product and system development teams.
Remember that processes, methodologies, and ways of organizing a team are not the goal in itself, but the means, the tools to achieve a goal. In the case of software, the goal is usually to meet the strategic goals of the software owner while solving problems and needs of the users of that software.
Digital Product Management Books
Do you work with digital products? Do you want to know more about how to manage a digital product to increase its chances of success? Check out my new bundle Digital Product Management with my 2 books where I share what I learned during my almost 30 years of experience in creating and managing digital products.