Ao buscar evoluir o design das organizações que ajudamos, tentamos trazer na Target Teal conceitos das mais diversas áreas: administração, biologia, psicologia, filosofia, psicanálise, entre outras. O mesmo acontece com a computação: diversos princípios deste campo de conhecimento podem ser aplicados para entender melhor como as organizações funcionam. Hoje vou compartilhar algumas perspectivas sobre isso.

As organizações podem ser também vistas como sistemas de informação. Em outras palavras, elas coletam, processam, armazenam e distribuem informação. Como em um sistema de informação computacional (hardware e/ou software), podemos também organizar os diversos “componentes” de uma organização – pessoas, times, processos, papéis – de formas diversas. Alguns desses designs podem ser incríveis, outros desastrosos. Felizmente, na computação e no desenvolvimento de software já existem conceitos bem definidos e que podem nos ajudar a entender como perseguir um bom desenho organizacional. Hoje vamos explorar 3 deles, que são o acoplamento, a coesão e o encapsulamento.

Acoplamento e Coesão

Na computação, o acoplamento corresponde ao grau de interdependência entre dois componentes de um software. Quando há um baixo acoplamento, um componente consegue operar de forma praticamente independente do outro. Alto acoplamento já implica em uma conexão forte entre os dois, que pode torná-los até indistinguíveis. Em geral buscamos um baixo acoplamento também em função de outro conceito chamado modularização. Com blocos de código menores e mais simples, é mais fácil dar manutenção em um software, entender o seu funcionamento e até reutilizar aquele módulo sem a necessidade de repetir o código.

Já a coesão diz respeito ao propósito de um componente, ou o grau em que as partes de dele estão relacionadas funcionalmente. Quando a coesão é alta, é fácil compreender a função ou foco do componente. Ele só é utilizado para uma única coisa. Quando é baixa, o componente geralmente faz tantas coisas que é difícil compreender qual foi a intenção de quem o projetou. Outra forma de definir a coesão é o grau de clareza das funcionalidades de um componente. Por esses motivos, uma coesão alta é desejável.

Em outra palavras, ao criar um design com baixo acoplamento e alta coesão, estamos tornando ele mais modularizado, elegante, simples de entender e fácil de usar.

Acoplamento e Coesão em Papéis e Times

Em organizações, podemos olhar para papéis e times como diferentes componentes do sistema. A partir disso podemos observar o quão acoplados ou coesos são esses elementos.

Quando um papel ou time está fortemente acoplado a outro, o trabalho do indivíduo ou grupo sempre será dependente de outra parte que ele não tem controle ou tem um menor poder de influência. Além disso, existirá um custo de comunicação para obter aprovação ou colaboração desta parte externa. Por outro lado, se um papel ou time estiver fracamente acoplado a outros papéis ou times, ele conseguirá executar o seu trabalho com maior autonomia e agilidade. Já entendeu por que o Ágil propõe times multidisciplinares, né?

Acoplamento

Ao lado esquerdo da figura, temos um cenário onde o time ou papel A depende dos times ou papéis B, C, D e E. Podemos dizer que está altamente acoplado. F depende apenas de D, então o acoplamento é médio. Os demais elementos não apresentam acoplamento. No lado direito temos uma situação que queremos evitar nas organizações: todos os elementos estão fortemente acoplados uns nos outros!

Quando um papel ou time é pouco coeso, em geral os seus integrantes e usuários não compreendem bem o seu propósito. Se for um papel que desempenho, posso me sentir desmotivado porque percebo que faço diversas tarefas que não têm qualquer relação umas com as outras e por isso não consigo ver sentido no meu trabalho. Se for um time, pode virar a famosa “pastelaria”, onde o grupo passa a aceitar demandas ou pedidos de qualquer natureza, perdendo a sua identidade. Quando um papel ou time é coeso, é fácil entender a sua natureza e também dizer não para o que não cabe nas suas responsabilidades. Isso também ajuda a priorizar o trabalho, pois o foco está mais claro.

Coesão

Na figura acima, ao lado esquerdo temos um componente (círculo maior) que apresenta pouca relação entre os seus elementos (suas partes ou funções). É como se fosse um papel, mas que as suas responsabilidades tem pouca relação umas com as outras. Podemos dizer que ele é pouco coeso em função disso. Já do lado direito temos a situação oposta: alta relação entre as partes do componente, o que implica em alta coesão. Poderia ser um papel ou time em que as suas responsabilidades estão fortemente relacionadas, o que provavelmente significaria que ele tem um propósito claro.

Se você prestou atenção no desenho, deve ter reparado que se olharmos para o círculo maior da direita, os seus componentes internos estão fortemente acoplados! É isso mesmo, quando temos acoplamento alto, geralmente é interessante encapsular essas partes acopladas e transformá-las em um componente maior e coeso. Vamos a um exemplo prático: imagine que o trabalho do seu papel na sua empresa depende de outros muitos papéis, espalhados em outros times da organização. Nessa situação podemos dizer que o seu trabalho está muito acoplado. Ao se aproximar desses outros papéis e formar um time, podemos dizer que você está aumentando a coesão, pois está reunindo papéis com propósito comum em um único time.

Apesar de ser desejável ter baixo acoplamento e alta coesão, é impossível ter zero acoplamento e uma coesão perfeita. Qualquer indivíduo ou grupo em uma organização terá alguma interdependência com outras partes, pois é isto que torna uma organização uma organização. Além disso, nem todo acoplamento é ruim!

Acoplamento e Coesão na O2: Na Organização Orgânica, a linguagem proposta facilita um design coeso e pouco acoplado. Ao darmos clareza de forma explícita para o propósito e as responsabilidades dos papéis e círculos, por exemplo, favorecemos uma reflexão sobre o tema. Por exemplo, se escrevemos um papel e incluímos muitas responsabilidades, percebemos que fica difícil definir um propósito que não seja genérico e vazio. A estrutura holárquica (hierarquia de propósitos) também nos leva a refletir sobre como cada papel ou círculo cabe ou não dentro de um outro círculo cujo propósito é relacionado. Isso é diferente do que geralmente acontece nas organizações tradicionais hierárquicas, onde as conexões são formadas a partir linhas de comando mais do que em busca de coesão. Em alguns casos mais disfuncionais o que define departamentos e áreas são negociações políticas.

Agora que compreendemos como o acoplamento e a coesão operam, vamos abordar o encapsulamento.

Encapsulamento

Encapsulamento

O encapsulamento é a característica de um sistema que permite esconder os detalhes de implementação por trás de um componente de quem o utiliza. Por exemplo: para usar o controle remoto da TV você não precisa entender como ele funciona internamente. A tecnologia utiliza fortemente o princípio do encapsulamento, porque novas tecnologias são criadas encapsulando outras tecnologias. Nem mesmo quem criou o controle remoto precisa compreender, por exemplo, os fenômenos químicos e físicos que ocorrem nos componentes eletrônicos utilizados. Esta lógica é “abstraída”, ou “escondida” de quem manipula o componente. Em outras palavras, quando existe um bom encapsulamento, o usuário não precisa entrar em contato com os detalhes de funcionamento daquele componente, apenas com a sua interface.

Encapsulamento em Organizações

Podemos aplicar o princípio do encapsulamento em organizações para melhorar o design, assim como fizemos com o acoplamento e a coesão.

Times, unidades, departamentos, squads ou outros construtos ajudam a compor a estrutura organizacional por meio de encapsulamentos. Cada agrupamento pode ser acessado a partir de um ponto de contato único, geralmente o que chamamos de gestor, chefe ou líder. Assim, o CEO não precisa conhecer em detalhes as tarefas executadas por cada pessoa em uma organização composta por milhares de pessoas, mas basta ele ter acesso a diretores que contem a ele o resumo da história.

Outro exemplo: para pedir uma campanha para o time de Marketing que aumente as conversões dos cursos da Target Teal, não preciso entender quem irá fazer a atividade, como ela é feita e todos os outros detalhes de implementação. Não preciso nem sequer saber exatamente o que quero, se é uma campanha para o Facebook, se é e-mail marketing. Basta eu explicar a minha necessidade para algum representante daquele time que a pessoa irá me ajudar.

Quando desconhecemos como as interfaces funcionam isso atrapalha o funcionamento do encapsulamento. Se não sei para quem pedir ou como fazer o pedido, não conseguirei utilizar a interface. E sem encapsulamento sou obrigado a fazer eu mesmo ou então me aprofundar nos detalhes de implementação.

Outro detalhe interessante é que o encapsulamento pode habilitar a autonomia. Através do encapsulamento é possível que um time escolha a maneira como ele opera, desde que ele garanta que a interface com outros é padronizada e previsível. Ou seja, com boas interfaces de comunicação entre times, podemos aumentar o poder de auto-organização daquele organismo.

Encapsulamento na O2: Na O2, tanto os papéis quanto os círculos criam boas interfaces de encapsulamento quando utilizados de maneira apropriada. Os papéis e círculos, definidos com propósitos e responsabilidades, declaram de maneira explícita sua “interface”. Junto com as reuniões de círculo e a estrutura de círculos aninhados que conecta diferentes camadas da organização, temos uma interface comum e que permite que grupos interajam sem a necessidade de conhecer os detalhes de funcionamento de cada parte. O conceito de “elos duplos” também melhora a comunicação entre os círculos encapsulados.

Conclusão

A partir das lentes do acoplamento, coesão e encapsulamento você conseguirá enxergar novas formas de intervir nas organizações para aprimorar o seu design. Não é necessário nada sofisticado: a partir de algumas conversas com quem trabalha em cada um dos times você já conseguirá enxergar as interdependências entre os diversos componentes que formam o sistema organizacional. O que você vai fazer com isso vai depender especificamente dos caminhos que você tem a sua disposição para alterar a estrutura organizacional.

Referências

  1. Human Networks: Coupling, Cohesion & Encapsulation – Spencer Pitman (2017).
  2. What Is an Information System? Dave Bourgeois e David T. Bourgeois.
  3. Software Engineering: Coupling and Cohesion
  4. OOP Concept for Beginners: What is Encapsulation – Thorben Janssen (2017).