A Programação em Par (Pair Programming) pode Melhorar a Capacidade Produtiva de uma Empresa de Desenvolvimento de Software?

O desenvolvimento de um produto caracterizado como software é norteado por um processo de produção. Este processo, por sua vez, é dividido em atividades, tais como: levantamento requisitos, modelagem de negócio, projeto do software, implementação, teste e a implantação. A programação em par é uma das “boas práticas” propostas para atividade de implementação. Mas o que vem a ser tal tipo de programação? Quando ela surgiu? Existem benefícios de se trabalhar com a programação em par? Ela melhora a capacidade produtiva de uma empresa? Se sim, existem resultados quantitativos que comprovam este fato?

O primeiro relato da programação em par é datado de 1995, na obra de L. L. Constantine (veja a fonte de consulta no final deste texto), posteriormente, esta prática foi incorporada pela proposta do eXtreme Programming.

A programação em par é uma técnica na qual dois desenvolvedores trabalham em um mesmo problema, ao mesmo tempo e em uma mesma estação de trabalho. Enquanto uma pessoa assume o teclado (o PILOTO) e digita os comandos que farão parte do programa, a outra (o NAVEGADOR) realiza o trabalho de estrategista.

Benefícios da programação em par: Revisão constante do código, alguns erros são corrigidos no ato. A modelagem do programa pode ficar mais otimizada, pois existem dois programadores trabalhando para solucionar um mesmo problema. A modelagem do programa é, geralmente, mais simples.

Porém existem algumas questões negativas que pairam sobre a prática aqui apresentada:

• Por que colocar dois programadores para fazer o trabalho de um?
• Não estamos desperdiçando um programador?

Para responder tais questões, apresento neste artigo três experiências desenvolvidas com a programação em par. Duas delas foram desenvolvidas junto aos alunos do 5º ano do curso de Ciência da Computação (BCC) da Fundação Educacional do Município de Assis (www.fema.edu.br) e uma junto aos alunos do 6º semestre do curso de Analise de Sistemas e Tecnologias da Informação (ASTI) da Faculdade de Tecnologia de Ourinhos (www.fatecou.edu.br). Saliento que tais experiências foram adaptadas do trabalho publicado por Laurie Williams (http://www.cs.utah.edu/~lwilliam/Papers/ieeeSoftware.PDF). A Tabela 1 (informações mapeadas nas experiência) apresenta as informações mapeadas nas três experiências.

Ao analisar os resultados, apresentados na Tabela 1, é possível constatar que os algoritmos desenvolvidos em par apresentam uma maior qualidade. Na experiência de 2007, 100% dos algoritmos desenvolvidos por dois programadores rodaram, contra 55% desenvolvidos individualmente. Em 2008, a tendência é a mesma. Um resultado que chama a atenção na tabela é o tempo de desenvolvimento, os pares foram mais rápidos que os programadores individuais, nas experiências desenvolvidas na FEMA. Na FATEC o tempo de desenvolvimento foi de 36 minutos para ambos. Na experiência desenvolvida por Constantine (1995) é possível verificar que o tempo de desenvolvimento dos pares tendem a cair com o passar do tempo, fato este confirmado junto aos alunos da FEMA.

Com base nos números apresentados é possível constatar que programação em par pode melhorar a capacidade produtiva, principalmente na questão da qualidade do produto, de uma empresa software, basta que seus gestores tenham coragem de implementá-la.

Por fim, gostaria de agradecer aos alunos que participaram desta experiência e convidar a comunidade empresarial a implementar tal prática e compartilhar os relatos de sua produtividade com todos.

Saudações.

Prof. Dr. José Augusto Fabri.
Faculdade de Tecnologia de Ourinhos.
Fundação Educacional do Município de Assis.

Fonte de consulta:
L. L. Constantine, Constantine on Peopleware. Englewood Cliffs, NJ: Yourdon Press, 1995.

8 Responses to “A Programação em Par (Pair Programming) pode Melhorar a Capacidade Produtiva de uma Empresa de Desenvolvimento de Software?”

  1. Parabens, pelo artigo.
    Em certo aspecto ate concordo, mas não acredito que programação em par com 2 desenvolvedores pleno ou senior, seja mais produtiva que dois desenvolvedore trabalhando separados. Porem com certeza a qualidade do software sofrerá uma significativa melhora, principalmente no que diz respeito a pequenos bug´s como os de validações de campos, layout´s, dentre outros. Mas estruturalmente não vejo tanta vantagem assim (isto em se tratando de desenvolvedores experientes). Agora se forem estágiarios ou juniors pode ser que realmente haja uma significativa melhora na produtividade.
    Abraços..

  2. Acredito que a programação em par possa trazer um bom benefício no aprendizado, enquanto alunos ou estagiários. Porém, concordo com o Roberto, acredito que em se tratando de programadores experientes, a programação em par não vá fazer tanta diferença a ponto de justificar o investimento (de tempo e dinheiro) para se ter um par de programadores realizando uma tarefa.

    Parabéns pelo seu Blog Guto, esta realmente gratificante ler seus artigos e ver que temos professores “Blogando”!

    Abração.

  3. Reinaldo Says:

    Nós estamos justamente usando a programação em par em nossa empresa (Intellegentia Tecnologia Ltda.) nesse contexto: um programador mais experiente e um estagiário. Percebemos que, sem dúvida, a transferência do conhecimento se deu de maneira muito mais rápida. Outra coisa que vale a pena salientar é que um programador anima o outro quando existe uma queda de produtividade natural no final do dia. Se fosse apenas um programador, o índice de ociosidade iria aumentar com certeza (ler e-mail, msn, etc).

    Um abração.

  4. Como os dois amigos dos comentarios acima já escreveram, também acredito que se tratando de dois programadores pleno e senior o “Pair Programming” deva até causar um certo desconforto para ambos, porém para um programador senior com um estagiário ou até um recém contratado ou até mesmo em sala de aula deva surgir grande efeito positivo sendo que estes teoricamente estão com sede de aprender.

  5. Em princípio não deveria existir desconforto entre desenvolvedores experientes, caso saibam e acreditem nos benefícios do método. Como ninguém sabe tudo, sempre haverá oportunidade para que se aprenda algo, e se produza cada vez com mais qualidade.

  6. rafaelspereira Says:

    Onde trabalho nós utilizamos uma série de práticas e metodologias de desenvolvimento ágil, como o Scrum. No caso específico do pair programming, ele acabou sendo uma evolução natural que surgiu a medida que os desenvolvedores se sentiam mais produtivos trabalhando em duplas, principalmente quando estavam desenvolvendo os pontos críticos da aplicação. Neste caso, o pair programming ajuda a reduzir a quantidade de bugs de desenvolvimento, além de aumentar a velocidade, contribuindo para o goal do projeto. Além disso, o pair programming, quando praticado de forma mais rotativa, ou seja, trocando as duplas com maior freqüência, ajuda a equalizar a distribuição de conhecimento do time, o que é bastante importante do ponto de vista gerencial.

  7. Fernando Vicente Says:

    Como ex-alunos de 5º BCC de 2007, fico muito feliz por ter participado de uma experiência como essa. E ficou provado, naquele momento, o quanto a programação em par tem em beneficius para nos programadores. Um abraço Guto.

  8. […] no blog já relatei várias experiências com a programação em pares (1, 2), neste semestre colecionei mais […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: