Usando Screen e Vim para Pair Programming remoto
Bem, é notável o crescimento das metodologias ágeis de desenvolvimento de software. Uma das práticas que me agrada muito, é a programação em pares (pair programming). É bem perceptível, a um longo prazo, a diferença que faz essa prática. Navegando pela internet, como um marujo sem rumo, encontrei um post falando sobre Remote Pair Programming. Parece meio estranho, porque o XP (eXtreme Programming) faz alusão a uma dupla programar em um único computador, com um único teclado e um único mouse.
Então, vamos tentar simular este ambiente utilizando 4 ferramentas simples:
- screen
- ssh
- vim
- skype
Destas, só o skype não é open-source. Mas é interessante manter uma conversa verbal, pois conversas escritas podem desviar o foco da programação, que é bem mais rápida e precisa do que a escrita, que pode deixar brechas para má interpretações. A conversa verbal consegue interromper o programador ao mesmo tempo em que escreve, corrigindo-o ou questionando-o.
Conectados no skype, basta decidir em qual máquina será o desenvolvimento. Esta, por sua vez, terá que ter um servidor ssh. Ela será o host da programação. Será necessário, também, nesta máquina, ter instalado o screen, que é um programa que possibilita criar 'sessões' no terminal.
Host
screen -S PairProgramming
Parece que nada mudou, mas você está numa sessão do screen chamada PairProgramming.
Precione CTRL+a e digite:
:multiuser on
Pressione CTRL+a novamente e digite:
:acladd usuarioclient
Tudo que você ver nesta sessão, será visto pelo outro usuário (usuarioclient) que se conectará nela.
Então, abra o vim, pois será necessário um edito de textos de verdade :D, e se divirta:
vim /caminho/arquivo
Client
ssh usuarioclient@host screen -x usuariohost/PairProgramming
Pronto! Agora você está acessando a mesma seção! Tudo que o usuáriohost fizer, o usuárioclient enxergará e vice-versa.
Agora, basta descutir a tarefa via Skype e programar. As atualizações são em tempo real, ou seja, aparecem ao mesmo tempo que são escritos, digo... depende da conexão, mas não é um grande problema.
Caso seja necessário que o usuarioclient não possa modificar o código, apenas assitir e dar pitacos, o usuáriohost deve pressionar CTRL+A e digitar:
:aclchg usuarioclient -w #
Eu ainda vou programar assim, depois digo a experiência.





Comentários
Boa dica!
[...] This post was mentioned on Twitter by David Alfaro, Klaus Peter Laube. Klaus Peter Laube said: RT @agilenature: In Portuguese: RT @phrebelo: Remote Pair Programming: http://bit.ly/QPIAa [...]
Ao executar o comando screen -x usuariohost/PairProgramming
sempre obtenho o mesmo resultado.
Must run suid root for multiuser support
Pode me ajudar?
Cara, isso parece ser problema de permissão. Tenta dar um
$ sudo chmod +s /usr/bin/screen
vê se funciona, se não funcionar tenta reinstalar.