Saiba porque 90% das empresas da Fortune 100 usam o GitHub para desenvolver, escalar e produzir software seguro.
Comece sua jornada com o GitHub
Introdução ao innersource
Organizações em todo o mundo estão incorporando metodologias de código aberto na maneira como constroem e enviam seu próprio software.
Adotar essa abordagem moderna ao desenvolvimento de software pode ser transformador, permitindo a colaboração e promovendo a criação de códigos de alta qualidade. Mas, para o sucesso, é essencial entender os seus princípios e desafios em potencial.
Muitas empresas usam a palavra “innersource” para descrever como suas equipes de engenharia trabalham juntas num código. O innersource é uma metodologia de desenvolvimento em que engenheiros constroem software proprietário usando as práticas recomendadas de projetos de código aberto de larga escala, como Kubernetes ou o Visual Studio Code, da Microsoft.
Projetos de código aberto em grande escala precisam de coordenação e trabalho em equipe entre milhares de contribuidores. Os projetos que conseguem ser mais bem-sucedidos são conduzidos por uma visão de futuro, além das necessidades diárias dos usuários: velocidade, confiabilidade e funcionalidade. A escala de operação dessas necessidades pode nos ensinar algumas coisas, e ajudar a sua empresa a construir software de maneira melhor e mais rápida, usando o innersource.
Neste artigo, vamos falar sobre o básico de como as equipes usam o innersource em seus fluxos de trabalho diários e aplicam as práticas de código aberto para trabalhar de maneira colaborativa e eficiente.
O que faz um projeto ser de código aberto?
O GitHub é o lar da maior comunidade de código aberto do mundo. Nossa comunidade cria algo que perpassa os interesses e habilidades de milhões de contribuidores. Juntos, eles trabalham em linguagens de programação como o Swift, da Apple, e em frameworks como o React.js, do Facebook, e fazem muito mais do que apenas escrever códigos. Conjuntos de dados, documentações legais e muito mais também podem ser de código aberto.
Qualquer um pode usar um software de código aberto. Qualquer pessoa também pode visualizar, modificar e substituir um projeto por qualquer motivo, conforme preveem as licenças de código aberto. Da mesma forma, qualquer pessoa pode ajudar a construir um software de código aberto. Em geral, os projetos são desenvolvidos por uma comunidade de contribuidores distribuídos que compartilham códigos, feedback, relatórios de bug e muito mais.
As melhores práticas para esse tipo de colaboração aberta são fundamentais para o innersource, e, no resto do artigo, falaremos de alguns aprendizados, ferramentas e termos principais.
Para saber mais como as pessoas começam e contribuem com projeto de código aberto, confira nossos guias.
O que a comunidade de código aberto ensina
Se a sua equipe cria softwares, você provavelmente já está criando algo com ou no projeto de código aberto de outra pessoa. A comunidade tem várias lições sobre como colaborar entre diferentes fuso horários, incentivar contribuidores e gerenciar projetos grandes e complexos. Aqui estão algumas coisas a se considerar enquanto você prepara uma prática de innersource:
A colaboração aberta encoraja mais contribuições
Mais contribuições significam mais oportunidades. Projetos de código aberto podem aceitar mudanças de qualquer pessoa no mundo. Isso significa que há muitos cérebros dedicados a avançar um projeto, atender as necessidades dos usuários e encontrar e resolver bugs.
O innersource também traz mais ideias ao jogo. As equipes podem inovar mais facilmente, e, com mais pessoas buscando os erros e inconsistências do código, é possível criar um software mais seguro e confiável. Os problemas são encontrados e solucionados antes de serem descobertos pelas pessoas erradas.
Os desenvolvedores não precisam sempre começar do zero
Qualquer pessoa pode descobrir e reutilizar projetos de código aberto para quase qualquer objetivo. Também é possível usá-los para construir outras coisas ou modificá-los para que se adequem a suas necessidades em especial.
Da mesma forma, o innersource ajuda sua equipe a descobrir, personalizar e reutilizar projetos internos já existentes. Também é possível estabelecer e construir com base em um conjunto compartilhado de processos documentados para otimizar a maneira como sua empresa implementa e usa software. Isso pode levar a um menor custo, maior flexibilidade e acabar com o bloqueio do fornecedor.
Uma tomada de decisões transparente cria processos, confiança e alinhamento
Mantenedores de código aberto de sucesso tem como padrão documentar suas decisões. Como cada conversa tem seu próprio URL e um histórico de comentários como contexto, o fuso horário torna-se menos importante, e os desenvolvedores podem trabalhar de forma assíncrona sem problemas.
Abrir seus projetos traz um novo nível de transparência à sua organização. Não só o código se torna visível, mas também é possível ver o processo e as tomadas de decisão por trás dele. Conversas bem documentadas ajudam os desenvolvedores em equipes distribuídas a se atualizarem e começarem a criar. E, com os trabalhos abertos, a colaboração também pode incluir gerentes de produto, designers, equipes de segurança e muito mais.
A participação é essencial
O sucesso de qualquer projeto de código aberto depende da participação. Existem muitos motivos intrínsecos para contribuir, por exemplo, melhorar suas habilidades, encontrar um mentor ou criar uma reputação. Mas os mantenedores do projeto também precisam criar uma cultura de comunidade que incentive e encoraje a participação.
Dentro de uma empresa, desenvolvedores individuais podem buscar seus interesses, compartilhar ideias em um campo igualitário e aprender com seus pares com mais facilidade. Porém, o innersource requer uma mudança de cultura. A cultura da sua equipe precisará encorajar o compartilhamento de conhecimento e receber bem contribuições de toda a organização.
Equipes centrais de desenvolvimento fortalecem o processo de um projeto
Projetos de código aberto podem ter milhares de contribuidores e membros da comunidade, mas geralmente uma equipe muito menor é responsável pela direção geral do projeto. Isso acelera a tomada de decisão e garante que alguém sempre é responsável.
Para projetos innersource, distribuir o controle entre grupos menores de participantes costuma aumentar a eficiência das aprovações e revisões. Criar uma equipe pequena com funções cruzadas formada por quem toma as decisões também pode ajudar as equipes a aderirem aos padrões de qualidade e obterem suporte executivo.
Uma comunidade de código aberto protegida pelo seu firewall
O innersource foi descrito de várias formas, e os desenvolvedores em organizações que já estão envolvidas com grandes comunidades de código aberto podem não usar o termo innersource. Em vez disso, eles pensam que essa é simplesmente uma forma de aplicar as metodologias de código aberto ao desenvolvimento de software com a proteção do seu firewall.
O innersource não implica em uma redução da segurança ou privacidade. Você não precisa necessariamente compartilhar seu software proprietário de maneira pública ou convidar um indivíduo externo para ver o código-fonte ou acessar os projetos innersource. Empresas podem ficar tranquilas sabendo que qualquer código que não seja público permanecerá em segurança dentro de seu ambiente, e apenas desenvolvedores com as permissões adequadas poderão contribuir.
Adotar práticas de innersource é como começar uma comunidade de código aberto dentro de sua organização. Em projetos de código aberto, a colaboração transparente mobiliza o conhecimento e as habilidades coletivas de uma comunidade para criar um software melhor. Já uma comunidade innersource contém o conhecimento, as habilidades, e as competências de pessoas e ferramentas dentro de uma única empresa.
Por que as empresas adotam o innersource?
Conforme os negócios evoluem e diferenciam seus produtos e serviços com software e dados, ou reconhecem que software e dados são seus produtos ou serviços, eles percebem rapidamente que os métodos e ferramentas de desenvolvimento tradicionais não funcionam muito bem. A prática lenta e sistemática de coletar requisitos, realizar reuniões e desenvolver em pontos de isolamento não está de acordo com a tecnologia de hoje em dia, ou mesmo com o ritmo das demandas do cliente. Como as empresas podem acompanhar isso?
O innersource ajuda as equipes a construírem software mais rápido e a trabalharem melhor juntas, o que resulta em um desenvolvimento de maior qualidade e em uma melhor documentação. Ele também pode ajudar as empresas a se tornarem mais eficientes:
Facilitando encontrar e reutilizar código em uma escala mais ampla, evitando o desperdício de recursos e a duplicação
Conduzindo a um desenvolvimento rápido, independentemente do tamanho da empresa
Reduzindo pontos de isolamento e simplificando a colaboração em toda a organização, dentro e entre equipes e funções, e também entre equipes e linhas de negócios
Aumentando a clareza entre engenheiros e a gerência, e também para qualquer pessoa interessada
Criando uma cultura de abertura, que precede a participação no código aberto
Reforçando o orgulho, crescimento e satisfação no trabalho sentida pelos membros da equipe que ajudam sempre que for necessário
Empresas líderes como o PayPal, Bloomberg e Walmart usam o innersource para construir software para suas equipes e clientes. Ele fornece a eles uma vantagem competitiva única e ajuda-os a manterem-se relevantes ao adotarem as melhores práticas reconhecidas.
A anatomia de um projeto innersource
A mistura certa de indivíduos, equipes e recursos pode garantir o sucesso de um projeto. Muitos projetos de código aberto seguem uma estrutura organizacional similar, que você pode querer levar em consideração ao criar equipes entre funções para gerenciar os projetos innersource da sua empresa. Um projeto de código aberto típico tem os tipos de pessoa a seguir:
Mantenedores: contribuidores que são responsáveis por direcionar a visão e gerenciar os aspectos organizacionais do projeto. Eles não são necessariamente os proprietários originais ou autores do código.
Contribuidores: todos que contribuíram com o projeto de alguma forma.
Membros da comunidade: pessoas que usam o projeto. Eles podem participar das conversas ou expressarem sua opinião sobre o direcionamento do projeto.
Projetos maiores também podem ter subcomitês ou grupos de trabalho focados em tarefas diferentes, como ferramentas, triagem e moderação da comunidade.
Projetos innersource provavelmente vão seguir uma estrutura similar. Muitas organizações de engenharia classificam seus desenvolvedores em equipes como engenharia de aplicação, engenharia de plataforma e desenvolvimento da web. Estruturar as organizações dessa maneira pode deixar pontos cegos que excluem pessoas qualificadas. Organizar um grupo principal responsável pela tomada de decisões apoiado por equipes entre a organização pode ajudar a reunir a experiência necessária para resolver um determinado problema mais rápido.
Dentro de uma empresa, “contribuidores” são os desenvolvedores dentro da empresa, enquanto os “mantenedores” são os líderes de projeto e tomadores de decisão principais.
Mantenedores: desenvolvedores, gerentes de produto e outros tomadores de decisão principais dentro da empresa que são responsáveis por direcionar a visão de um projeto e por gerenciar as contribuições diárias.
Contribuidores: desenvolvedores, cientistas e dados, gerentes de produto, profissionais de marketing e outras funções dentro da sua empresa que ajudam a conduzir o avanço do software. Contribuidores não são necessariamente parte da equipe do projeto, mas ajudam a equipe a construir o software ao contribuir com código, enviar correções de bug e muito mais.
Solução de DevOps do GitHub
Ferramentas do negócio
Aqui estão algumas ferramentas que conduzem o desenvolvimento de código aberto no GitHub. Elas também serão componentes essenciais de qualquer projeto innersource.
Issues: Issues é onde os desenvolvedores criam tópicos e começam conversas. Se alguém encontrar um bug ou tiver uma ideia para um novo recurso, um Issue é um ótimo lugar para começar e qualquer um com acesso pode participar da conversa. Saiba mais sobre issues.
Pull requests: pull requests são conversas ativas sobre mudanças que os desenvolvedores gostariam de fazer em um projeto. É lá onde as pessoas começam a trabalhar em soluções e revisar mudanças em andamento. Saiba mais sobre pull requests.
Canais de chat síncronos: às vezes, as equipes precisam tomar decisões rápidas. Canais síncronos como o Slack são complementares às discussões e comentários no GitHub e são ótimos para conversar sobre problemas em tempo real.
Existem centenas de ferramentas disponíveis que podem ser usadas com o GitHub para ajudar sua equipe a trabalhar melhor, desde o gerenciamento de projetos até a integração contínua e serviços de implementação. Veja todas.
É a coisa certa para sua organização?
O innersource é uma mudança cultural e tecnológica, e é importante não subestimar o desafio que isso pode ser para algumas organizações. Assim como seus pares de código aberto, os projetos innersource prosperam em lugares onde os esforços levam naturalmente à possibilidade de descobertas e reutilização. Também é útil ter pequenas comunidades com diferentes funções da organização que compartilham interesses e experiências similares.
Em geral, existem alguns fatores a se procurar que podem ajudar a decidir se você deve começar com o processo de innersource do seu trabalho, e a iniciar o processo de planejamento:
Sua empresa tem uma visão para seus projetos que é realista e compartilhada entre as equipes. Os projetos precisam ter problemas e oportunidades claramente definidos a serem tratados.
Os participantes principais (iniciadores, catalizadores, evangelistas) dos projetos que você planeja para innersource devem ter experiência em trabalhar colaborativamente.
Você tem um plano para integrar e aclimatizar os novos “contribuidores” e outros participantes ao processo.
Sua equipe tem as ferramentas e processos necessários para se comunicar de maneira aberta e compilar de forma consistente.
Você pode começar com um grupo de pessoas dentro da organização com objetivos compartilhados definidos.
O innersource pode mudar a forma como os indivíduos enxergam a si próprios e suas responsabilidades, por isso é importante considerar a estrutura organizacional. Um processo eficiente de innersource deve ser informal, com mentores, autosseleção e deve oferecer apoio aos seus participantes.
Para adotar de forma eficaz as práticas de innersource, contribuidores precisam ser capazes de trabalhar facilmente entre os pontos de isolamento e outras divisões organizacionais. O grau no qual uma organização apoia iniciativas de compartilhamento de conhecimento pode ser um bom indicativo de como elas conseguirão se adaptar.
Para exemplos do mundo real, confira Criando uma cultura de innersource na Booz Allen Hamilton.
Essas são apenas algumas perguntas para ajudar a avaliar o quanto sua equipe está pronta. Se você responder “sim” a muitas delas, pode estar com tudo pronto para começar um programa de innersource na sua empresa:
Sua organização tem uma cultura aberta e transparente?
Desenvolvemos software em uma plataforma única e aberta?
Nossas iniciativas de engenharia dispõem de bons recursos e têm o apoio das equipes de liderança?
Os desenvolvedores da nossa organização têm autonomia suficiente para contribuir com projetos que estejam fora da equipe imediata deles?
Nossa empresa participa da comunidade de código aberto?
Nossa equipe de engenharia usa ferramentas de integração contínua?
Existem comunidades com diversas funções pré-existentes que trabalham entre equipes na nossa empresa?
Se sim, essas comunidades têm uma liderança interna?
Toda empresa e diferente, e nenhum desses pontos deve ser visto como um pré-requisito para que uma organização adote o innersource. Em geral, você deve começar com práticas de innersource quando sentir que há confiança suficiente entre as equipes em sua organização para que elas possibilitem aos outros visualizarem, contribuírem e darem feedback em seu trabalho. Muitas empresas escolhem começar com um programa piloto e, depois disso, decidem o que é melhor para elas.
Pronto para começar?
As empresas geralmente começam pequeno com seus programas de innersource. Projetos piloto podem ajudar as equipes a experimentarem mais processos abertos, democratizarem o acesso a códigos e documentarem as melhores práticas antes de aplicarem o innersource de maneira mais ampla. Pequenos sucessos podem ajudar a mostrar para sua equipe interna de desenvolvedores como aproveitarem ao máximo seu código e enviarem software melhores mais rapidamente.
A maneira de construir software é fundamentalmente diferente do que era dez anos atrás. O innersource é uma abordagem que possibilita modernizar seus processos, acelerar o desenvolvimento, superar barreiras organizacionais e melhorar a qualidade do seu software. O GitHub, por seu a maior comunidade de código aberto do mundo, é onde as práticas de código aberto começam. Podemos, juntos, mudar a forma da sua equipe criar.