Todos nós interagimos diariamente de forma direta e/ou indireta com algum tipo de software, tais softwares interagem com outros e assim por diante. Para possibilitar tais interações se fez necessário a criação de padrões, protocolos e o mais importante, a aplicação do conceito de comunidade neste contexto. A importância da colaboração mútua no mundo do desenvolvimento foi e é crucial para a criação e avanço de tecnologias da forma como a conhecemos hoje, é possível que muitos usuários não pertencentes à área de tecnologia da informação vejam as ferramentas de código aberto como algo gratuito, porém na grande maioria dos casos chega a ser um equívoco comum. As comunidades de código aberto em sua grande maioria são criadas a partir de um conjunto de empresas que possuem interesses mútuos no qual abrem mão de segredos técnicos periféricos para acelerar o desenvolvimento, correção de erros e disseminação de tais ferramentas em busca de baratear os custos no desenvolvimento.
Para o profissional que está pretendendo iniciar seus trabalhos na área, juntar-se à algum projeto de código aberto é um grande e importante passo para um futuro promissor. Aqui vão algumas atributos destes projetos que justificam esta iniciativa:
– Os projetos possuem integração contínua
– Cobertura de código: Testes funcionais automatizados integrados com ferramentas de controle de versão (Git, Mercurial, etc)
– Revisão de código: O Gerrit (por exemplo) é utilizado em vários projetos da Linux Foundation, o qual garante a organização dos ‘commits’ enviados para revisão de forma em que seja possível emendar (isso mesmo, ‘amend’) alterações ao mesmo commit, gerando versões distintas do mesmo. Muito útil quando necessitamos aplicar alterações baseado em algum comentário.
– Boas práticas de código: Existem aqueles que concordam e que discordam deste ponto, pois muitas vezes as práticas de escrita do código podem estar relacionadas com a cultura dos ‘commiters’ juntamente com o líder técnico, porém a maioria dos projetos utilizam ferramentas que verificam a escrita do código para amenizar códigos baseados nos gostos pessoais de quem os escreve.
– Definição de sprints e utilização de metodologias ágeis: Imagine-se gerenciar um projeto que não possui alocação efetiva vinda de uma única fonte, o qual torna difícil mensurar o esforço e definir o engajamento da equipe, sem contar com o desafio de trabalhar com equipes geograficamente distintas e em muitos casos com interesses diferentes. Porém, mesmo com todos estes desafios, a estrutura e a ética aplicada aos projetos da Linux Foundation (por exemplo) buscam sempre focar no objetivo proposto pelo projeto, sendo assim um ótimo espaço para trabalhar as suas relações interpessoais e profissionais.
– Rastreamento de erros e documentação: “Todo bug tem software!”, bug é algo comum em qualquer software e sempre irá ocorrer, porém um dos fatores que definem a qualidade de um software está na forma como os bugs encontrados são gerenciados. Bugs precisam ser rastreados, consertados e então documentados, a adoção de processos são fundamentais para a qualidade e qualidade de software é a nirvana do time.
Juntar-se a projetos de código aberto pode não ser uma tarefa fácil, porém mais viável do que parece. Uma das melhores formas de engajar-se em projetos dessa natureza é desenvolver testes para as funcionalidades núcleo da aplicação, isso dará não só visibilidade mas também o conhecimento de negócio de uma forma generalizada no qual poderá ser utilizado como forma de entrada para as discussões de design e arquitetura do projeto em questão. Este exercício possui muito mais força quando o contribuidor individual consegue mostrar para a comunidade de uma forma sutil, que tal contribuição está sendo investida na forma de tempo dedicado e deverá ser vista na mesma óptica das empresas de grande porte que investem de forma monetária.
Dentre os ganhos de juntar-se de forma gradual a projetos de código aberto, destacam-se o marketing pessoal, admiração de membros de comunidades nacionais e internacionais, aprimoramento técnico e relacionamento interpessoal e gestão. Além disso, contribuir para tais projetos torna-se um meio de autenticar o conhecimento e experiência em forma de código validado e aceito pela comunidade, fazendo com que o trabalho fale por sí.
Por Yrineu Rodrigues, juazeirense, desenvolvedor de software. Atualmente morando em San Jose, CA
*Este texto é de inteira responsabilidade do autor e não reflete, necessariamente, a opinião do Revista Cariri