Vamos começar com uma história sobre um desafio.

Nenhuma Produtora de Vídeo ou sistema de vídeo é perfeito ou acabado. Deve estar constantemente se adaptando e evoluindo para atender às necessidades de seus usuários e à forma como eles funcionam. Sempre há algo a ser feito.

E, não muito tempo atrás, a equipe de I / O da Adobe tinha algumas mudanças específicas que queria fazer para melhorar o produto para seus usuários.

“O subsistema de registro que tínhamos anteriormente dentro do Runtime era complicado para nossa equipe administrar e precisava de um pouco de melhoria”, disse o cientista da computação Dan McWeeney.

“Por exemplo, uma função que registra um grande número de linhas de log só pode recuperá-los por meio da interface de linha de comando em lotes de dez. Obviamente, isso foi uma experiência tediosa. E a natureza altamente distribuída da Produção audiovisual dificultava o monitoramento de falhas. ”

Nesse caso, a equipe de experiência do desenvolvedor da Adobe (DevX) estava disposta a ajudar.

“Eles gentilmente se ofereceram para nos ajudar a tornar este subsistema totalmente plugável, para que pudéssemos fornecer linhas de registro para sistemas externos configurados pelos clientes”, disse McWeeney.

“Então, em vez de ver os registros em lotes de dez por vez, os clientes poderiam obtê-los em algo como em Vídeos corporativos.”

Até agora tudo bem. Mas como funciona uma colaboração entre duas dessas equipes? Como o trabalho seria dividido? Que tipo de solução surgiria e quando?

A resposta para isso está no compromisso da Adobe com uma abordagem conhecida como “Desenvolvimento Aberto”.

O que é desenvolvimento aberto?

Ao tentar entender os Vídeos de Treinamento, pode ser útil pensar nele como uma maneira de fazer as coisas.

Em 2017, o principal cientista do grupo Adobe Digital Experience, Bertrand Delacretaz, apresentou um “Manifesto de Desenvolvimento Aberto”. Este manifesto destacou alguns dos elementos-chave de uma metodologia que definiu a cultura da Adobe por vários anos.

O manifesto incluiu declarações como:

“Não tenho medo de que os outros desafiem de forma respeitosa minhas decisões técnicas e / ou meu código …”

Produtora de Vídeo, Produção audiovisual, Vídeos corporativos, Vídeos de Treinamento, Filmes publicitários, Vídeos para empresas

“Eu procuro ter altíssima qualidade em meu código e em nossos Filmes publicitários, e não terei vergonha de expressar respeitosamente minha discordância se algo colocar isso em risco”

“Eu trabalho de forma aberta, me comprometo desde o início e com frequência para que os outros possam ver o que estou fazendo enquanto isso evolui …”

Essencialmente, é um método que valoriza a colaboração, comunicação e abertura. Não alguém tentando resolver um problema sem compartilhar como o fez ou por que o fez dessa maneira.

“Open Dev é um conceito que está surgindo há algum tempo na Adobe”, disse Dan.

“Contribuímos em toda a empresa para vários projetos Apache e tiramos muito de seu modelo internamente.”

Essas ideias são familiares para qualquer pessoa que trabalhe com Vídeos para empresas.

Na verdade, eles foram adotados por muitas organizações corporativas ao longo dos anos. O termo “Inner Source” foi cunhado por Tim O’Reilly em 2000 para descrever a maneira como uma organização pode seguir as práticas de código aberto, mas dentro de suas próprias paredes. É algo que foi adotado por grandes empresas, incluindo HP, Microsoft, Google e IBM.

O Open Development compartilha muitas características com a Inner Source, exceto – como Bertrand aponta:

“O Inner Source é mais específico, porque se trata especificamente de [aplicar os princípios do código aberto] dentro de sua empresa, enquanto você poderia dizer que também fazemos Open Development quando fazemos Open Source, exceto que o produto final é Open Source.”

Portanto, pense nisso menos como o produto final e mais como uma maneira de chegar lá.

Então, como isso funciona internamente?

“Open Development é uma ótima maneira de um projeto obter visibilidade, reconhecimento e contribuição”, disse Felix Delval, arquiteto da Magento Commerce.

“É uma aventura tanto técnica quanto humana. Geralmente, você está chegando a um projeto sobre o qual ainda não tem um entendimento claro, com o objetivo de realizar uma mudança atômica.

Felix recomenda começar certificando-se de que o projeto está bem estruturado e documentado e – se não – reservar um tempo para criar essa documentação e um conjunto básico de testes. Isso tem o benefício adicional de ajudar o próximo lote de desenvolvedores que entrarem no projeto.

“Uma vez que o lado técnico está sob controle, você começa a jornada humana de discussão e definição de qual é o problema e como ele deve ser resolvido. Você nunca deve subestimar o quão problemático pode ser garantir que todos entendam o problema. Na maioria das vezes, um grupo de pessoas trabalhando em algo chegará com suas próprias terminologias e significados para palavras comuns, então realmente entender esses termos e aprender o jargão do projeto aumentará muito as chances de sucesso de todos. ”

A Adobe é uma grande empresa, com várias equipes. Mas – inegavelmente – cada equipe possui habilidades, percepções e conhecimentos que podem beneficiar outras equipes. A chave é garantir que eles estejam cientes disso e com poderes para fazer algo a respeito.

“Como uma equipe Dev Ex dedicada, podemos nos concentrar na experiência do desenvolvedor em tempo integral, então aprendemos o que outras equipes Dev Ex estão fazendo e o que acontece além das paredes da Adobe”, disse Olga Kopylova, arquiteta de observabilidade da Adobe.

“Como resultado, podemos trazer bons insights sobre o que as equipes de experiência do desenvolvedor podem implementar e também podemos ajudar nessa implementação. Portanto, um benefício é ter áreas transversais, como a observabilidade, melhor cobertas. E outro é ter mãos extras para o preço mais baixo de revisão de solicitações de pull e nos ajudar em troca aqui e ali. ”

Então, como funciona esse tipo de colaboração?

“Inicialmente, discutimos com uma equipe o que eles acham que pode ser melhorado na área de desenvolvimento de seu produto. Nós mesmos experimentamos o produto e criamos uma lista de itens potenciais para trabalhar.

“Como ambas as equipes concordam em um projeto em que podemos ajudá-los, começamos a colaboração. Nesse caso, o I / O Runtime tinha um gerente de projeto e desenvolvedor dedicado que nos ajuda quando precisamos. E, graças a essa abordagem, conseguimos construir um plano de entrega detalhado e segui-lo para a produção. E nossa equipe seguiu os requisitos de entrega da equipe de I / O Runtime para garantir que nossa entrega estivesse alinhada com seus padrões. ”

O que torna isso possível é que o processo seja transparente. Os indivíduos podem ver o que existe e o que mudou, e há uma documentação clara que indica o pensamento por trás das decisões. É uma cultura em que os contribuidores podem fazer solicitações “educadas” para resolver problemas e corrigir o código, no entendimento de que todas as mudanças estão abertas a feedback e resistência. Aqui, Olga analisa o fluxo de trabalho típico que ela e a equipe seguem:

Planejamos uma reunião regular, onde os engenheiros Dev Ex e gerentes de produto / engenheiros pudessem se alinhar (os engenheiros Dev Ex também se reuniam regularmente, apenas eles próprios). Isso garantiu que cada engenheiro estivesse sempre trabalhando como um gerente de projeto ativo e mediador entre as equipes.

Insights úteis e regulares surgiam frequentemente dessas reuniões. A equipe Dev Ex manteve um documento com um backlog para o projeto, dividido em itens significativos e acionáveis. Tudo é acordado mutuamente (com o PM tendo a “última palavra”). Olga ressalta que tudo foi discutível, mas nenhuma decisão é forçada se a “equipe do projeto” coletivamente não concordar com ela.

A equipe confiou muito no Slack para se manter conectada a tudo. “Pessoas frouxas e dedicadas resolvem tudo rapidamente”, disse ela.

Como o Dev Ex e as equipes de produto trabalharam cada vez mais juntos, esse processo se tornou ainda mais eficaz. A confiança cresceu, com a equipe Dev Ex obtendo mais acesso e envolvimento (o que se torna ainda mais importante conforme você passa do desenvolvimento para o estágio e para a produção).

Como Bertrand disse em um post anterior:

“O Desenvolvimento Aberto promove um estilo de comunicação onde todos estão cientes do que está acontecendo em um projeto, mesmo que não estejam participando de todas as discussões.”

O subsistema de registro em tempo de execução era um candidato perfeito para uma abordagem de desenvolvimento aberto, por causa de como foi configurado.

“Pode ser difícil trabalhar com equipes externas em mudanças ‘amplas’, porque eles têm gavinhas em muitas partes do sistema”, disse Dan.

Nesse caso, a equipe poderia se concentrar em uma área do sistema e se tornar especialista nela e, portanto, fornecer as mudanças necessárias. Isso teve dois benefícios. Em primeiro lugar, criou uma nova experiência onde não existia antes. Em segundo lugar, é excelente material para futuros projetos Open Dev.

“Como diz o velho ditado:‘ muitos olhos tornam todos os bugs superficiais ’. Portanto, novos recursos e requisitos adjacentes também podem ser descobertos durante este processo. A equipe Dev Ex já está trabalhando duro conosco em mais recursos nesta área de ergonomia do desenvolvedor. ”

Aprendendo as cordas

Mas, embora o Open Development possa – de muitas maneiras – ser um processo benéfico, também é um processo “aprendido”. As equipes não necessariamente adotarão a mentalidade certa durante a noite e podem exigir trabalho e paciência para chegar ao ponto em que você se sinta confortável com a abordagem.

Olga admite que inicialmente foi difícil se ajustar ao trabalho colaborativo e que demorou para as equipes criarem tempo umas para as outras, respondendo a perguntas no Slack, revisando prontamente as solicitações de pull e agendando reuniões.

“Com o tempo, construímos um processo que funciona para nós”, disse ela. “Agora nos sentimos parte do I / O Runtime e sabemos o que esperar.”

Havia também a questão das novas tecnologias. Ou – mais precisamente – tecnologias que eram novas para uma equipe, mas não para outra.

“A integração pode levar algum tempo e envolver algumas perguntas bobas”, disse Olga. “Mas como uma equipe Dev Ex, trabalhando com equipes diferentes, devemos estar prontos para aprender coisas novas sempre que iniciamos um novo projeto. Na verdade, gostamos de aprender coisas.

“Não estou dizendo que amei Ruby, mas k8s e Ethos foram ótimas coisas para se obter experiência adicional.”

Na verdade, esse “processo de aprendizagem” é uma razão crucial pela qual muitas empresas gostam da abordagem da Inner Source, que dá aos funcionários espaço para se aclimatarem com a abordagem colaborativa e aberta, em vez de se lançar imediatamente no extenso ecossistema Open Source.

Produtora de Vídeo, Produção audiovisual, Vídeos corporativos, Vídeos de Treinamento, Filmes publicitários, Vídeos para empresas

“O código aberto precisaria de mais comprometimento com antecedência, certamente”, disse Olga. “Se o produto fosse aberto para código aberto, mas não estivesse pronto para processar solicitações de pull, a comunidade pararia de contribuir rapidamente.

“Além disso, a comunidade Open Source pode ser esmagadora devido ao seu tamanho e também à diversidade de opiniões. A maioria das pessoas que contribui para projetos de sistema operacional o faz para resolver seus próprios problemas. Este pode ser um cenário comum ou único, mas tudo precisa ser processado e processado de forma justa.

“Com a equipe Dev Ex sob o mesmo guarda-chuva de uma equipe de produto, é mais fácil cortar atalhos da burocracia e focar em objetivos comuns.”

Quais habilidades o Open Development requer?

Então, o que significa “fazer” Desenvolvimento Aberto? Olga acredita que se trata de três coisas principais:

Em primeiro lugar, a abordagem incentivou as equipes a se concentrarem nas entregas. Os membros da equipe aprenderam a ser muito claros e abertos sobre o que precisava ser entregue para a produção e quando as tarefas deveriam ser realizadas.

“É fácil apenas fazer as coisas, pesquisar, experimentar e esperar. Em vez disso, tínhamos que ser proativos ”, disse Olga. “Nós enviamos um ping para as pessoas quando precisávamos que uma solicitação pull fosse revisada. E garantimos que estávamos focados em metas e não nos afogando em discussões ”.

O segundo aspecto chave se resumia à comunicação. Olga disse que era vital que ambas as equipes estivessem abertas a ideias e sugestões e cientes das prioridades e outros trabalhos de todos os outros.

“Éramos novos na equipe de I / O Runtime, e eles tinham suas próprias agendas e tarefas”, disse ela. “Tentamos manter um equilíbrio entre pedir ajuda a eles e trabalhar por conta própria, e ter uma discussão aberta e produtiva, em vez de apenas apresentar nossas próprias ideias. Eles conhecem melhor o seu produto.

“O I / O Runtime também fez um ótimo trabalho nessa área. Estavam sempre abertos às nossas ideias e ajudavam-nos quando precisávamos. Eles confiaram em nós e nós confiamos neles. ”

O terceiro elemento foi a transparência. Em cada estágio, as equipes certificaram-se de documentar claramente o que precisava ser entregue. E isso se tornou ainda mais importante quando as prioridades mudaram.

“É muito importante manter o contexto e as metas documentadas e facilmente disponíveis para todos”, disse ela. “Isso realmente nos ajudou a ver o que ainda faltava ser feito. E ninguém reclamou da mudança da lista de tarefas, pois é assim que o mundo funciona.

“É menos importante entregar exatamente o que foi prometido há meio ano. O que é vital é ter certeza de que todos estão na mesma página em qualquer momento. ”

“Isso realmente nos ajudou a criar a documentação e os processos de que precisamos para gerenciar tudo isso”, acrescentou Dan. “Esses compromissos são muito úteis quando se trata de consertar lacunas em nossa documentação e otimizar nossa integração de nova engenharia.”

Quando feito corretamente, o Desenvolvimento Aberto também tem o benefício de aumentar a compreensão e a empatia entre as equipes e dar a sua equipe uma perspectiva mais completa sobre o que está acontecendo em sua organização.

“Poder participar de diferentes projetos permite que tanto a equipe contribuidora quanto a receptora saibam o que os dois grupos estão fazendo e se conheçam de maneira humana”, disse Felix.

“Passar o ano passado em um projeto OpenDev me deu a oportunidade de conhecer dezenas de novos colegas em diferentes unidades de negócios, em locais em todo o mundo. Eu realmente gostei disso, especialmente durante uma pandemia, quando as oportunidades de conhecer novas pessoas eram escassas.

“Além disso, discutir minhas ideias com tantas pessoas me ajudou a crescer como profissional e como pessoa. O que é absolutamente inestimável. ”