Prós e contras da programação em pares para a automação da rede

A programação em pares é uma técnica ágil de desenvolvimento de software que reduz erros e produz um software melhor. A programação em pares pode funcionar entre especialistas em rede e programadores?

Existe uma tendência na indústria de tecnologia em que o software impulsiona a configuração e operação da infra-estrutura de TI, incluindo redes. Isso significa que o software, no lugar da configuração do dispositivo, controla a funcionalidade da rede. Esta transição ao software é conhecida como abordagem de infraestrutura como código para configuração, controle e monitoramento da rede.

As organizações devem garantir que o software que suporta a infraestrutura como código incorpora as melhores práticas de desenvolvimento de redes e software. Uma abordagem tradicional é ensinar os desenvolvedores de software por meio de redes ou ensinar a uma equipe de rede como desenvolver softwares, mas esse é um processo de longo prazo. Uma opção alternativa é a programação em pares (pair programming).

A programação em pares é um método de desenvolvimento de software no qual duas pessoas trabalham juntas em um espaço de trabalho para escrever código. Uma pessoa atua como o condutor que escreve o código, enquanto a segunda pessoa observa e navega, fornecendo feedback e as próximas etapas.

No mundo do desenvolvimento de software ágil, as equipes de programação em pares compreendem dois desenvolvedores. No mundo de automação e gestão de redes, uma equipe de programação em pares consiste em um desenvolvedor e um operador de rede. Essas equipes também são aplicáveis a outras tarefas, como a criação de modelos de configuração de rede ou criação de projetos de rede geral, onde a equipe seria composta por duas operadoras de rede.

Este artigo se refere a uma pessoa que desenvolve software como desenvolvedor e a uma pessoa que trabalha em rede como networker.

Melhores práticas de programação em pares

A equipe de desenvolvimento de automação de rede compreendendo um desenvolvedor e um networker permite que os membros do pessoal aprendam uns com os outros, ao mesmo tempo que produz melhor software do que qualquer dos dois iria criar sozinho. O networker pode ajudar o desenvolvedor a entender as funções da rede, bem como também como pensam as pessoas nas redes. Isso é particularmente eficaz para desenvolver interfaces de usuário que façam sentido para os networkers.

Por outro lado, o desenvolvedor pode ensinar aos networkers técnicas para desenvolvimento de software. Os dois podem trabalhar em equipe para conseguir um bom design, selecionando os melhores algoritmos e estruturas de dados e quebrando o projeto em geral em módulos gerenciáveis. A fase de design é importante porque um bom software começa com a seleção correta das abstrações.

Sem dúvida, vai levar algum tempo para as equipes de programação em pares se acostumarem a trabalhar em conjunto, o que pode fazer o progresso inicial parecer lento. Enquanto as equipes não tiverem problemas subjacentes, como conflitos de personalidade, sua produtividade deverá aumentar com o tempo.

Os membros do par precisam trocar papéis com frequência, dando a cada pessoa a oportunidade de liderar ou observar e comentar. Cada membro deve ter pelo menos um conhecimento básico de software para que a programação em pares funcione. Muitos cursos introdutórios de software estão disponíveis on-line a baixo custo ou sem custo algum para que o networker obtenha uma base de conhecimento da linguagem de programação escolhida, geralmente, Python para automação de rede.

Os prós da programação em pares

A programação em pares pode trazer muitas vantagens para as equipes envolvidas e para a organização.

  1. Duas cabeças pensam melhor do que uma. Duas pessoas que veem o mesmo problema podem discutir rapidamente as alternativas e propor a melhor abordagem. A dupla perspectiva de desenvolvimento de software e redes ajuda a equipe a obter uma solução melhor do que se os membros trabalhassem de forma independente. O networker pode explicar como coletar e exibir informações, enquanto o desenvolvedor pode recomendar estruturas de dados, algoritmos e abstrações que simplificam o código.
  2. Substituição para revisões de código. A programação em pares substitui os comentários de código que levam um longo tempo e são propensas a erros, na qual uma segunda parte revisa os módulos de software propostos. Com a programação em pares, a equipe verifica o código em tempo real, o que evita o retrabalho. Naturalmente, isto requer que ambos os membros da equipe tenham um bom domínio da linguagem de programação em uso. Se isso não for possível, uma equipe de dois desenvolvedores e um networker pode ser uma alternativa viável.
  3. Treinamento cruzado. Os membros da equipe de programação em pares aprendem um sobre o outro durante o processo de codificação. É uma excelente forma de compartilhar conhecimento, tanto sobre práticas de desenvolvimento de software quanto sobre como operar as redes. A programação em pares também facilita o desenvolvimento de habilidades interpessoais, como a comunicação e o trabalho em equipe. No início, os desenvolvedores de software avançado podem sentir que a programação em pares atrapalha o progresso, mas devem ser incentivados a dar uma oportunidade ao processo. O ideal é que o par chegue rapidamente ao ponto em que o networker possa contribuir com o processo de desenvolvimento do software, oferecendo conselhos como o seguinte:
  • “Nós devemos verificar o status de erro X."
  • “Nós poderíamos colocar esses dois pedaços de informação um ao lado do outro na mesma tela?"
  1. Manutenção de software. Um benefício significativo da programação em pares é que mais de uma pessoa entenderá como funciona um código e seus critérios de design. Isso dá como resultado uma melhor memória do projeto que torna o software mais fácil e menos caro de manter.
  2. Equipes remotas. As equipes podem programar em pares de forma remota, utilizando sistemas de teleconferência com uso de compartilhamento de tela. Tenho utilizado com sucesso este mecanismo com tarefas de desenho de rede e resolução de problemas. Os membros da equipe falam entre eles como se eles estivessem na mesma sala fisicamente. Isso permite que as equipes continuem sendo produtivas mesmo em tempos de deslocamento restrito, como durante as restrições atuais por conta do coronavírus.

Contras da programação em pares

A programação em pares também tem suas desvantagens, mas não tantas quanto a lista de vantagens.

  1. Conflitos de personalidade. Alguns membros da equipe podem não se dar bem uns com os outros, o que pode exigir pares diferentes. Ocasionalmente haverá membros do pessoal que não podem trabalhar com qualquer outra pessoa, o que ficará evidente após várias tentativas. Ambos os membros da equipe devem se sentir confortáveis com alguém olhando por cima do ombro enquanto escrevem o código. Eles podem passar algumas sessões antes de se sentirem confortáveis um com o outro. Esse pode ser o ajuste mais amplo do que os programadores em par precisam fazer. Um desenvolvedor mais experiente precisará ser paciente com um parceiro menos experiente que está construindo código em um ritmo lento.
  2. Diferenças de experiência e especialização. Um membro da equipe pode ser significativamente mais avançado do que o outro. O foco da programação em pares pode reduzir significativamente a taxa de desenvolvimento total. No entanto, trabalhar em conjunto permite que o membro mais avançado oriente o membro menos experiente, o que pode ser uma vantagem em algumas situações. O parceiro menos experiente pode obter dicas e técnicas que o membro avançado da equipe utiliza para ganhar eficiência.
  3. Não traz a metade de eficiência? Naturalmente, alguém poderia pensar que a programação em pares é a metade da eficiência do que quando duas pessoas trabalham separadamente, mas surpreendentemente, estudos têm encontrado que é apenas cerca de 15% menos eficiente. No entanto, elimina a necessidade de revisão do código, reduz erros e produz um código melhor. O efeito líquido é que os programadores em pares podem ser mais eficientes do que os desenvolvedores separados, que então devem revisar o código do outro e passar pelas etapas mais extensas de integração, teste e depuração.

Compreendendo o processo de desenvolvimento de software

O fator mais importante em um projeto de software bem-sucedido é passar o tempo necessário na fase de design de software de alto nível. É significativamente mais eficiente construir o software corretamente na primeira vez. Os desenvolvedores que passam por cima do estágio de projeto muitas vezes têm de descartar uma abordagem que gastaram tempo criando, porque não tinham uma compreensão clara dos requisitos. Trabalhar através do processo de projeto permite que a equipe possa determinar os algoritmos gerais e estruturas de dados que necessitam para resolver um dado problema. Livros como Rapid Development e Code Complete, ambos de Steve McConnell, podem ajudar a orientar o processo de desenvolvimento de software para uma conclusão bem-sucedida.

Podem ser necessárias várias semanas até que as equipes de programação em pares aglutinem e comecem a ver altos níveis de eficiência, assim seja paciente. Quando se planeja com cuidado e com a aceitação dos participantes, as práticas de programação em pares podem proporcionar benefícios reais para o desenvolvimento de sistemas de automação de redes.

 




Saiba mais sobre Desenvolvimento de software e aplicativos