Um resumo das estruturas organizacionais em busca da entrega contínua

🇬🇧 🇧🇷

O movimento DevOps, conforme retratado vividamente no livro O Projeto Fênix, surgiu como uma mudança cultural para quebrar os silos em grandes organizações, integrando melhor as equipes de desenvolvimento e operações por meio da colaboração. No entanto, essa colaboração pode acontecer de maneiras diferentes de uma perspectiva organizacional: os desenvolvedores e especialistas em infraestrutura podem fazer parte de departamentos diferentes ou podem estar juntos em uma única equipe multifuncional. Com os avanços nas ofertas de PaaS, é possível até mesmo imaginar os próprios desenvolvedores assumindo as responsabilidades das operações.

Nossa pesquisa no IME-USP (Universidade de São Paulo) tem como objetivo investigar como as empresas produtoras de software estão organizando suas equipes de desenvolvimento e operações. Para isso, estamos entrevistando profissionais de software para entender como as coisas estão realmente acontecendo no mundo real. Com nossa pesquisa, esperamos fornecer uma teoria para apoiar as organizações no desenho de suas estruturas organizacionais em direção à entrega contínua e fornecer orientação sobre as consequências da escolha de uma determinada estrutura organizacional.

Com base na análise criteriosa das entrevistas realizadas, elaboramos uma teoria que descreve as estruturas organizacionais utilizadas pela indústria no mundo real sobre como o trabalho dos desenvolvedores e engenheiros de infraestrutura pode ser coordenado na busca pela entrega contínua. Neste resumo, apresentamos nosso entendimento atual de tais estruturas organizacionais: departamentos segregados, departamentos de colaboração, departamentos mediados por API e departamentos únicos. Cada uma dessas estruturas possui propriedades centrais, comumente vistas em organizações com uma determinada estrutura, e propriedades suplementares, que podem ou não estar presentes, mas que quando presentes dão suporte à explicação da estrutura.

Imagens no estilo homem palito representando as quatro estruturas organizacionais de nossa taxonomia (explicadas neste post).

Figura 1 - As quatro estruturas organizacionais de nossa taxonomia

A apresentação desta taxonomia já foi publicada na Information and Software Technology, uma revista acadêmica muito conceituada em nosso campo de pesquisa.


Download do artigo completo aqui (em inglês)


Entre a submissão e a aceitação do artigo (quase um ano), temos trabalhado para evoluir nossa taxonomia com base em seu uso com profissionais. As mudanças mais relevantes a partir dessa evolução são renomeações de conceitos, visando mais objetividade e menos confusão para os usuários da taxonomia. Neste resumo, apresentamos a taxonomia em sua versão mais recente (junho de 2021).

Diagrama com as quatro estruturas organizacionais e suas propriedades complementares, todas explicadas neste post. Diagrama com caixas e setas.

Figura 2 - Visão de alto nível de nossa taxonomia em sua última versão (junho de 2021)

A seguir, apresentamos cada estrutura com suas propriedades centrais e suplementares.

Departamentos de devs & infra segregados

Departamentos segregados, ou em silos, é a estrutura “pré-DevOps” existente em grandes organizações, apresentando colaboração limitada entre departamentos e barreiras para entrega contínua. Essa estrutura é considerada o problema que o DevOps veio resolver.

A figura mostra um operador e um desenvolvedor, cada um dentro de um círculo diferente. Eles estão de costas um para o outro. A comunicação flui por meio de cartas, mais do desenvolvedor para o operador do que do operador para o desenvolvedor.

Figura 3 - Com departamentos segregados, operadores e desenvolvedores estão cada um em suas próprias bolhas. Eles não interagem muito diretamente, e a comunicação flui lentamente por meios burocráticos (sistemas de tickets).

Propriedades centrais:

Departamentos de devs & infra colaborativos

Essa estrutura foca na colaboração entre os desenvolvedores e a equipe de infraestrutura. É assim que o livro “The Phoenix Project” retrata o DevOps.

A figura mostra um operador e um desenvolvedor, cada um dentro de um círculo diferente. Eles estão olhando um para o outro e estão de mãos dadas (com alguma dificuldade).

Figura 4 - Com departamentos colaborativos, operadores e desenvolvedores em diferentes departamentos procuram trabalhar juntos, mesmo que não seja fácil, por meio de contato direto e colaboração próxima.

Propriedades centrais:

Propriedades suplementares:

Departamentos de devs & infra mediados por API

Nesse caso, existe uma equipe de infraestrutura (também chamada de time de plataforma), e ela fornece serviços de infraestrutura altamente automatizados (“a plataforma”) abstraindo a infrasestrutura para empoderar as equipes de produto.

A figura mostra um operador e um desenvolvedor, cada um dentro de um círculo diferente. O operador fornece uma interface que é consumida pelo desenvolvedor (notação UML).

Figura 6 - O time de plataforma fornece serviços automatizados para serem usados, com pouco esforço, pelos desenvolvedores (a API da plataforma medeia a interação entre os desenvolvedores e o time de plataforma). O time de plataforma e os desenvolvedores estão abertos para ouvir e apoiar uns aos outros.

Propriedades centrais:

Propriedades suplementares:

Departamento dev/infra único

Um único departamento é responsável pelo desenvolvimento de software e pelo gerenciamento da infraestrutura. Está mais alinhado com o lema da Amazon “Você construiu, você cuida”, dando mais liberdade para a equipe e também muita responsabilidade.

A figura mostra um operador e um desenvolvedor, eles estão dentro do mesmo círculo.

Figura 5 - Um único departamento cuida do desenvolvimento e da infraestrutura.

Propriedades centrais:

Propriedades suplementares:

Other supplementary properties

Para saber os detalhes sobre como descobrimos essas estruturas, leia o artigo completo!


Download do artigo completo aqui (em inglês)


Recapitulando

Agora fornecemos resumidamente para cada estrutura descoberta: (i) a diferenciação entre os grupos de desenvolvimento e de infraestrutura em relação às atividades operacionais (implantação, configuração da infraestrutura e operação do serviço em tempo de execução); e (ii) como esses grupos interagem (integração).

Mais algumas considerações

Em primeiro lugar, se alguém classificar uma organização específica como aderente a uma das estruturas acima, não significa que a empresa em particular irá necessariamente seguir todas as características da estrutura. Cada organização é única e possui adaptações ao seu contexto. No entanto, o modelo pode auxiliar na compreensão das organizações e no apoio à tomada de decisões em relação às mudanças organizacionais.

Por ora, acreditamos que nossa taxonomia fornece os seguintes benefícios principais:

Outra característica distintiva de nosso modelo é que ele é baseado em dados recuperados de profissionais de software no mundo real.