Desenvolveu algo novo? Automatize os testes e suba pra comunidade!

Uma das grandes vantagens de trabalhar em um instituto de propriedade industrial é que convivemos com pessoas com as mais diferentes formações. É uma boa oportunidade para se comparar as diferenças de cada área tecnológica em termos de didática e ferramentas. Um grande amigo físico me apresentou o Lattex, algo que é muito explorado no seu curso para escrita dos artigos ou mesmo da tese, mas pouquíssimo usado na engenharia química (será assunto de outro Post). Já meus atuais colegas da área de tecnologia da informação vêm me provando a importância de criar software com pacotes reutilizáveis, publicá-los na web e, até mesmo, permitir que terceiros colaborem e melhorem seu código.

É incrível como eu consegui concluir uma graduação, um mestrado e um doutorado envolvendo computação científica e nunca havia publicado qualquer código em uma comunidade ou disponibilizado um fonte em um repositório público. Essa uma das falhas no ensino de engenharia que pretendo reparar na minha carreira. Deve ser aquela vontade de dizer que um código é meu.

Obviamente quando você desenvolve um projeto para uma empresa privada, é necessário haver um acordo contratual e formal que permita que partes do produto (estou me esforçando para não falar sistema, porque quero manter esse tema bem genérico) possam ser publicadas em uma comunidade para que outros possam se beneficiar nesse desenvolvimento. Todos saem ganhando com essa abordagem.

Para que isso seja possível, é preciso desde o início do projeto identifiquemos quais partes são específicas desse projeto/cliente e constituem alguma forma de segredo ou diferencial, cuja propriedade deverá ser reivindicada pelo cliente. As partes genéricas e reutilizáveis devem então ser facilmente empacotadas para que possam servir de semente para outros projetos.

A chave para que se possa adotar essa abordagem é a criação dos testes que possibilitem a fácil e automatizada validação de novas versões melhoradas que sejam disponibilizadas pela comunidade.

Acabo de me impor duas metas:

  1. Recodificar nos próximos 2 anos o que havia desenvolvido durante graduação, mestrado e doutorado e que atualmente está perdido nas páginas dessas teses usando python e publicar esse material no github.
  2. Desenvolver um projeto dentro de um órgão público e disponibilizar o código para aprimoramento pela comunidade.

Deixo, então, algumas sugestões para meus colegas engenheiros que queiram surfar nessa onda que já é dominada pela pessoal de TI:

  • Utilize uma linguagem open-source e interpretável (Scilab ou Python);
  • Busque utilizar a metodologia de desenvolvimento direcionado por testes (TDD);
  • Construa testes automatizados que validem as principais funcionalides do seu sistema;
  • Documente com um bom Readme;
  • Use controle de versão distribuído (Git);
  • Publique seu código em um repositório público (Github);
  • Faça a validação do seu código de maneira automática com o Travis CI;
  • Faça a medição da qualidade da sua codificação com o Landscape.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s