Topologias de Times
Uma missão muito desafiadora quando falamos sobre empresas de tecnologia é como será a composição da área de engenharia, ou seja:
- Quais serão as divisões?
- Quais serão os agrupamentos de times?
- Quais serão os times?
- Como eles irão se comunicar?
- Qual será suas interações?
- Qual será suas composições?
- etc…
Nesse post vamos focar em quais serão os tipos dos times e seus modos de comunicação/dependência.
Quatro tipos de times
Um livro muito famoso chamado Team Topologies definiu e estruturou quatro tipos padrões de times, sendo:
Stream-Aligned Team: Esses times serão alinhados à algum fluxo de negócio, compostos por uma mistura de pessoas com habilidades cross funcionais, formando o que chamamos de times multi funcionais. As vezes esse tipo de time também é chamado de: Time de features, times de negócio ou times de domínio.
Por exemplo: Time que cuida da listagem de produtos, time que cuida do carrinho de compra, time que cuida da página de autenticação ou criação de conta, etc…
Platform Team: Um time que trabalha para ajudar os times stream-aligned em suas entregas. Esse time visa simplificar tecnologias complexas e diminuir a carga cognita dos times stream-aligned.
Por exemplo: Time que cuida de sistemas internas, time que cuida de um projeto para criar sistemas, time que cuida do design system, etc…
Enabling Team: Um time que ajuda outros times em adotar e modificar partes do sistema durante alguma transição ou período de aprendizado.
Por exemplo: Ajudar o time adotar práticas de desenvolvimento ágeis ou devops, ajudar o time adotar o conceito de DDD (Domain Driven Design), etc…
Complicated-Subsystem Team: Time que desenvolve com uma parte do produto muito complexa que os times stream-aligned ou platform não conseguem lidar. Normalmente é composto por pessoas mais experiêntes e possuí um alto nível de criticidade.
Por exemplo: Time que cuida do sistema que faz leitura de PDF’s, time que cuida da codificação dos vídeos, time que cuida da ferramente de empacotamento dos sitemas, etc…
Times podem mudar seus tipos dado alguma necessidade em qualquer momento onde faça sentido.
Os três tipos de interação
O mesmo livro também criou e definidu três tipos de comunicação para os times, sendo:
Collaboration: Times que trabalham bem próximos um dos outros.
Por exemplo: O time que cuida da parte de pagamento com o time que cuida da validação de possíveis fraudes.
X-as-a-Service: Times consumindo ou provendo algo com o mínimo de colaboração.
Por exemplo: O time que cuida do carrinho de compra consumindo dados dos produtos (resposabilidade de outro time).
Facilitating: Ajudando (ou sendo ajudado) por outro time para limpar impedimentos.
Por exemplo: O time que cuida do design system ajudando outro time implementar tais componentes.
Na prática diferentes tipos de interação pode ser necessárias dado diferentes momentos no tempo e contextos.
Conclusão
Nesse post vimos quatro diferentes tipos de times e três tipos de interação entre eles, todos seguindo as recomendações e princípios do “Team Topologies”.
Abraços, até a próxima.