Pular para o conteúdo principal

Inner Source + SDKs: Por que esta fusão é capaz de impulsionar o processo de inovação nas empresas?

Inner Source + SDKs: Por que esta fusão é capaz de impulsionar o processo de inovação nas empresas?

Inovando através de colaboração e ferramentas de desenvolvimento

Inner Source + SDKs: Por que esta fusão é capaz de impulsionar o processo de inovação nas empresas?

Não é incomum vermos a fusão de práticas de desenvolvimento de software tradicionais com abordagens inovadoras. Uma dessas abordagens é o Inner Source que, quando aplicado à criação de SDKs (Software Development Kits), tem o potencial de transformar fundamentalmente a maneira como as empresas tratam o desenvolvimento de produtos.

Este artigo busca explicar esta fusão, focando em como o Inner Source pode moldar o desenvolvimento de SDKs que, consequentemente, poderá potencializar a prática e a cultura Open Source nas empresas “Digo... Inner Source”.

Mas, primeiro, o que é Inner Source?

Inner Source é um conceito inspirado no movimento do Open Source, que prioriza a transparência, colaboração e comunidade no desenvolvimento de software. O sucesso fenomenal de projetos Open Source, como o Linux, Python, Node.js, Docker, Kubernetes, OpenSSL, entre outros, levou as organizações a se perguntarem: “E se pudermos replicar esse sucesso internamente?”.

A grande questão é que o Inner Source e a técnica de desenvolvimento de SDKs têm sido reconhecidos separadamente por suas contribuições significativas no campo de engenharia de software. Porém, percebi que, quando combinados, esses conceitos promovem uma abordagem ainda mais colaborativa e coesa.

Esta percepção ocorreu durante a minha jornada no desenvolvimento de SDKs de forma colaborativa onde o conceito de “Inner Source” me fez ver que as fronteiras entre o código aberto (Open Source) e fechado podem ser mais permeáveis do que muitos acreditam.

Minha Jornada com Inner Source

Diante dos desafios que muitos enfrentam na busca por inovação e eficiência, é muito comum que a paisagem tecnológica em muitas organizações se torne repleta de silos. Equipes trabalham em projetos paralelos, muitas vezes replicando esforços e "reinventando a roda".

Inspirado pelo potencial do Open Source, comecei a explorar como essa abordagem poderia ser adaptada internamente para fomentar a cultura de uma colaboração mais integrada dentro do contexto organizacional.

Desta forma conheci o conceito de Inner Source, que no início me pareceu ser desafiador. Mesmo sendo uma ideia baseada na colaboração entre times, compartilhamento de código e na revisão interna do código fonte, adotar práticas de Inner Source pode, inicialmente, resultar em certa resistência devido às mudanças culturais e operacionais, mas tendo êxito os benefícios potenciais são imensos.

Um pouco sobre SDKs

SDK, ou Kit de Desenvolvimento de Software em português, pode ser assimilado como um conjunto de pequenos softwares previamente empacotados que fornecem aos desenvolvedores fácil acesso a serviços indispensáveis para criar aplicativos ou integrar aplicações. Em vez de escrever um do zero, um SDK oferece estes serviços em pacotes prontos para serem usados, tornando o processo de desenvolvimento mais rápido, mais eficiente e, muitas vezes, mais seguro.

Pode-se pensar em um SDK como uma caixa de ferramentas. Se você fosse construir uma casa, não fabricaria seus próprios tijolos. Em vez disso, você compraria esses materiais. Da mesma forma, um SDK fornece aos desenvolvedores as “ferramentas” necessárias para construir ou melhorar suas aplicações sem ter que repensar sobre tudo aquilo que já está feito.

Com o avanço das tecnologias de alto nível e a alta demanda por inovação em tempo recorde, os SDKs desempenham papéis fundamentais, entre eles:

  • Reduzir o Tempo de Desenvolvimento

Ao fornecer código previamente empacotado e testado, os SDKs eliminam a necessidade de criar funcionalidades básicas do zero.

  • Manter a consistência

Os SDKs podem ajudar a manter a experiência do usuário consistente em diferentes aplicações, aumentando a confiança e previsibilidade do software diante dos usuários, uma vez que ao reutilizar recursos compartilhados, todas as melhorias implementadas nestes recursos estarão disponíveis a todos os seus consumidores.

  • Facilitar a Integração

Os SDKs são projetados para abstrair a complexidade que o desenvolvedor enfrenta todas as vezes que precisa consumir serviços de terceiros, favorecendo que o time se preocupe mais com a qualidade do negócio do que com as integrações.

  • Oferecer Segurança

Ao usar um SDK de fonte confiável, os desenvolvedores possuem a garantia de que estão utilizando recursos que foram desenvolvidos segundo os padrões de segurança já praticados por seus fornecedores.

Por fim, a importância do SDK se estende além de simples pacotes de código. Eles são um reflexo da especialização e evolução cultural da organização, permitindo que os desenvolvedores aproveitem melhor o seu tempo com atividades mais relacionadas ao objetivo do time.

Enfim, SDKs + Inner Source!

Combinar práticas de Inner Source com o desenvolvimento de SDKs, apesar de seus desafios, traz uma série de vantagens estratégicas, principalmente para grandes organizações. Estas vantagens acabam indo além das melhorias óbvias de eficiência e colaboração, como a eliminação de trabalhos duplicados entre as equipes, padronização ou qualidade de código.

A seguir iremos analisar algumas vantagens consistentes trazidas pela combinação destas práticas, em contraponto de suas execuções de forma isolada, sendo elas:

  • Desmistificação das Equipes Especiais "SWAT"

Na modelagem tradicional, uma equipe geralmente é dedicada ao desenvolvimento de SDKs, tornando-se o ponto central e único de conhecimento e manutenção dessas ferramentas, esta abordagem traz riscos inerentes. Se os membros da equipe decidirem deixar a organização ou forem realocados, o conhecimento sobre o SDK poderia se perder ou ficar comprometido. 

No entanto, ao aplicar a prática do Inner Source, este risco é disperso entre várias equipes. 

O SDK passa não ser mais a responsabilidade de um único grupo, mas de todos os colaboradores pertencentes a diversos times envolvidos no projeto. O que não impede a criação de um comitê central ou uma governança técnica que cuidará da manutenção das boas práticas ou criação de gates de qualidade por exemplo.

  • Contribuições Baseadas em Necessidades Reais

Quando várias equipes compartilham da liberdade de contribuir para um SDK, suas contribuições são baseadas em suas necessidades específicas e reais. Em vez de um SDK genérico desenvolvido por uma única equipe, o produto final é uma solução multifacetada e moldada pelas contribuições de diversos times, cada um com sua perspectiva única e seus desafios específicos. Isto resulta em um SDK mais completo, robusto e sintonizado com as necessidades da organização como um todo.

  • Inovação em Tempo Competitivo

A velocidade de inovação tornou-se um fator crítico na era digital, organizações que perdem o timing durante este processo podem ficar para trás em mercados altamente competitivos. 

Adotar práticas de Inner Source durante o desenvolvimento de SDKs, promove a colaboração entre equipes e otimiza barreiras burocráticas.

Como resultado disto, as equipes de desenvolvimento de produtos e projetos possuem acesso em tempo hábil às ferramentas e funcionalidades já pré-fabricadas, o que viabiliza e acelera ainda mais o processo de desenvolvimento. 

Esta combinação acelera a capacidade de resposta às mudanças do mercado, o lançamento de novos recursos e em última análise, a inovação em um ritmo competitivo.

  • Reutilização e Eficiência do SDK

A abordagem Inner Source garante que as funcionalidades desenvolvidas no SDK sejam verdadeiramente úteis e imediatamente aplicáveis. 

Por exemplo:

Uma funcionalidade adicionada por uma equipe ao SDK, pode ser exatamente o que uma segunda equipe estava buscando, porém ao longo do percurso de utilização dos recursos da primeira versão, a segunda equipe decide que precisa adicionar novos recursos a este SDK. Quando uma terceira equipe se depara com este SDK, ela se beneficia não somente dos recursos originais, mas também das adições feitas pelas duas primeiras equipes.

  • Planejamento de Interdependências

A colaboração e a comunicação aberta, inerentes ao Inner Source, simplificam a identificação e o planejamento de interdependências entre as equipes. 

Durante as fases de planejamento, as equipes podem antecipar suas necessidades futuras, discutindo em conjunto mudanças nos SDKs e garantir que as implementações estejam alinhadas às demandas do projeto ou produto.

Integrar práticas de Inner Source ao desenvolvimento de SDKs é uma estratégia que reconhece a natureza dinâmica e interdependente do ambiente de desenvolvimento moderno. Essa abordagem promove não apenas a eficiência técnica, mas também constrói uma cultura de colaboração e propriedade compartilhada, onde cada contribuição enriquece o todo e beneficia a organização em sua totalidade.

Implementação e Desafios

A implementação de SDKs em conjunto com Inner Source pode não ser apenas um processo técnico, mas também uma mudança perene na cultura de engenharia de software. Os desafios associados à implementação destas práticas são alguns e podem variar de organização para organização. 

Vejamos algumas destas questões:

  • Impacto dos Líderes

A liderança desempenha um papel crucial na implementação bem-sucedida destas práticas. Sem a sua compreensão e entendimento sobre a cultura Open Source e consecutivamente Inner Source, as chances de adoção cultural diminuem consideravelmente. 

Seu apoio é imprescindível para impulsionar através do acompanhamento e apresentação dos resultados a partir das implementações destas práticas, tornando a transição e implantação mais suave e possível através das fases de projeto, produto e sustentação das soluções.

  • Maturidade Cultural da Empresa

Ajuste nos processos de engenharia de software poucas vezes são inteiramente técnicos e algumas vezes dependem muito mais de aspectos como colaboração e confiança para que prosperem. Se a cultura da empresa ainda estiver enraizada em silos, competições internas ou desconfianças, pode ser um desafio adotar práticas de Inner Source por exemplo. O planejamento de uma transformação cultural pode ser necessário, o que pode levar tempo e exigir esforços conscientes para cultivar os valores e comportamentos necessários.

  • Governança Técnica

A ausência de uma governança clara pode ser um obstáculo para a implementação de SDKs em conjunto com Inner Source. É fundamental estabelecer políticas e uma estrutura clara para garantir que as práticas de Inner Source sejam consistentes, eficientes e alinhadas aos objetivos organizacionais. 

Além disso, uma governança técnica é crucial para garantir a qualidade do código nas construções e manutenções dos SDKs, manter padrões e incentivar o diálogo sobre melhores práticas de desenvolvimento.

  • Times Multidisciplinares

Para maximizar os benefícios do Inner Source, é recomendável trabalhar com equipes multidisciplinares. Estas equipes reúnem profissionais de diferentes áreas de especializações, o que promove uma colaboração mais rica e insights diversificados. Tal composição de equipe encoraja uma perspectiva mais holística do desenvolvimento, o que pode resultar em soluções mais robustas e inovadoras.

Conclusão

Enquanto o desenvolvimento de SDKs utilizando Inner Source tem o potencial de aprimorar ou até de revolucionar o desenvolvimento de software dentro das organizações, sua implementação exige uma abordagem cuidadosa, considerando tanto aspectos técnicos quanto culturais. 

A transição pode não ser fácil, mas com comprometimento, orientação clara e a aprovação dos líderes, os desafios são superados e os benefícios plenamente realizados.

Comentários