Eu trabalho em uma pequena empresa de desenvolvimento como desenvolvedor líder. Temos dois outros desenvolvedores, assim como meu chefe, que é desenvolvedor, mas na verdade não faz muito da codificação real.
O problema que estou tentando superar é multifacetado. Temos a tendência de trabalhar em nossos próprios projetos sem muita colaboração entre nós. De fato, eu (como desenvolvedor mais avançado) peço a opinião / ajuda dos outros mais do que a minha, porque valorizo a opinião de um olho externo.
Quero aumentar nossa colaboração e expressei isso para eles. Em grande parte, porque gostaria de mostrar a eles algumas coisas sobre como se tornar melhores desenvolvedores e seguir as melhores práticas. Mas, considerando os tipos de personalidade de outros desenvolvedores, acho que eles se sentem mais à vontade trabalhando sozinhos.
Eu tenho lido sobre programação em pares e li (em alguns fóruns) que isso não funciona bem quando você tem um desenvolvedor mais avançado que os outros (o que eu sou). E, no entanto, considero imperativo começarmos a colaborar para que nosso trabalho não seja tão díspar.
Minha pergunta é se alguém já esteve em uma situação semelhante e o que funcionou para eles?
Sei que não é uma situação única, mas estou disposto a tentar várias abordagens.
Todos trabalhamos em uma área comum, os desenvolvedores não têm escritórios / cubículos individuais.
fonte
Respostas:
Como já foi discutido em outras respostas por que a programação em pares não é uma solução para você , discutirei o que experimentamos atualmente e ficamos satisfeitos com os resultados.
Na minha opinião, o que você pode fazer para aumentar a colaboração é ter duas pessoas juntas em cada projeto. Cada um deles trabalha em uma parte diferente do projeto, mas como essas partes precisam ser integradas, os dois desenvolvedores precisam colaborar. Isso também requer que os dois programadores discutam a arquitetura (camadas e interfaces) do projeto e depois decidam assumir diferentes funções.
E, se essa abordagem, limitar o número de projetos que sua empresa pode gerenciar por vez, você poderá atribuir a esse par colaborador dois projetos simultaneamente.
Recentemente, experimentamos essa abordagem, com um deles desenvolvendo modelos + integração com apis e o outro programador manipulando visualizações e controladores . Encontramos as seguintes vantagens dessa configuração:
fonte
Na minha opinião, a programação em pares não é a solução para o problema que você levanta.
Existem duas funções distintas em uma programação em pares. O observador está lá para revisar e comentar o código escrito pelo motorista . Se você está tentando transmitir idéias para melhorar as decisões que seus programadores juniores estão tomando, questiono a eficácia de sua capacidade de revisar criticamente o código que você está escrevendo quando desempenha o papel de motorista.
Sem essa dinâmica, o benefício da programação em pares é perdido.
Como programador sênior, sugiro que você considere um programa mais forte de treinamento e desenvolvimento de funcionários com seu chefe. Seus programadores juniores devem receber uma estrutura para melhorar suas habilidades. Normalmente, você pode usar métodos como esclarecimentos, escrever um documento de padrões de codificação, separar tarefas independentes de seu próprio trabalho e garantir a existência de processos adequados de revisão de código.
fonte
TL; DR : Eu não acho que a programação em pares funcione para você. Em vez disso, você deve tentar deixar as pessoas preocupadas com a qualidade do código a longo prazo e fazê-las querer encontrar respostas. Isso tem que ser feito informalmente.
Sobre cultura e qualidade
Sinto que esta questão não é sobre metodologia de programação, mas sobre cultura . Na minha experiência, é possível direcionar a cultura, mas raramente falando às pessoas sobre isso. Ou seja, tentar forçar um certo fluxo de trabalho em pessoas que não evoluíram naturalmente ou está muito distante da prática existente provavelmente terá consequências negativas.
Em outras palavras, você não quer se parecer com o terno que aparece por aí, usando as últimas palavras da moda, mesmo quando você está. A maioria dos programadores que conheço o identificaria mentalmente como ruído de fundo. Não seja uma abelha corporativa.
Na minha opinião, a principal pergunta que você deve se fazer é "estou feliz com a qualidade e o valor comercial do código que minha organização coloca?" e se a resposta for negativa, você deve perguntar "como faço para mudar isso?".
Por fim, qualidade e valor são definições humanas em que apenas você ou alguém da sua organização pode (e deve) pensar.
Programação e microgerenciamento em pares
Portanto, com o risco de parecer um pouco avante e duro, parece-me que ler sobre programação em pares realmente fez você pensar em alguma forma de microgerenciamento , ou o contrário. MM é uma receita infalível para alienar a maioria das pessoas.
Em defesa da programação em pares: a programação em pares não é sobre um cara olhando por cima do ombro de outro cara. Isso é tão micro quanto o gerenciamento consegue. PP é sobre o uso de duas mentes para pensar em dois níveis ao mesmo tempo - uma pessoa lida com alto nível , retrato grandes problemas enquanto o outro cuida do parafusos e porcas necessários para produzir código de trabalho. E, na minha humilde opinião, raramente funciona bem se os dois participantes não estão em posição de trocar de lugar. Eles devem ter experiência semelhante o suficiente para ter um arsenal profissional semelhante de conceitos e um vocabulário profissional compartilhado (não estamos ligados à mente - ainda , muhahaha).
Para a sua situação, eu diria que, como você é uma equipe pequena e é o único com experiência real (é o que parece sua postagem para mim), programar em pares ou revisar a maior parte do código na maioria das vezes não funcione. Você só tem 24 horas por dia. Em vez disso, algumas soluções que você pode considerar:
Incentive-os a participar do SO com a tag de idioma apropriada ou a publicar alguns trechos de código para revisão no Code Review SE. Inicie um pequeno concurso informal sobre quem pode ganhar mais pontos de representante de SO por semana.
O SO pode fazer maravilhas para os desenvolvedores iniciantes, pois fornece feedback constante e segue os batimentos cardíacos da comunidade.
Dê uma olhada em alguns códigos que eles fazem check-in e desafie-os informalmente com algumas perguntas sobre sua evolução a longo prazo. A maioria dos programadores iniciantes simplesmente não está acostumada a pensar em tornar seu código legível e sustentável. Depois de colocar esses problemas em mente, eles buscarão mais informações por conta própria, de você ou de outras fontes.
fonte
Não acho que a programação em pares seja algo que o ajude em seu ambiente. Não é que isso não ajude a desenvolver os desenvolvedores menos experientes - há até uma pergunta de programadores sobre programação em pares com engenheiros de diferentes níveis de habilidade . Embora existam benefícios como compartilhamento de conhecimento e menos erros, a programação em pares requer um investimento de tempo maior. Com uma equipe de três desenvolvedores e apenas quatro pessoas com experiência / experiência em desenvolvimento, parece ser difícil manter uma rotina de programação em pares.
Penso que uma alternativa melhor na sua situação são as revisões de código, especialmente se você as adequar adequadamente. Uma revisão de código pode consistir em qualquer coisa, desde uma pessoa examinando um pouco de código e fornecendo feedback para várias pessoas (até toda a equipe) em uma sala por uma hora ou duas para examinar o design e a implementação de um componente inteiro. Elas podem variar conforme apropriado para o trabalho que está sendo realizado, especialmente com base no conhecimento, experiências e necessidades da equipe. Você ainda pode obter o aspecto de compartilhamento de conhecimento fazendo com que várias pessoas participem da revisão com o objetivo de encontrar problemas, fornecendo sugestões e adquirindo conhecimento lendo os resultados da revisão para incorporar os comentários em seu próprio trabalho, antes que eles sejam revisados. .
fonte
Desde que você está convidando a experiência, aqui está o que eu fiz. Escolhi a abordagem de baixo risco e pedi a alguém décadas mais jovem que eu que passasse algum tempo trabalhando juntos. Não rotulamos a atividade. Ninguém, exceto eu, sabia que estávamos tentando uma nova técnica.
Não sei exatamente quais detalhes relacionar, mas o processo funcionou muito bem. Ele queria ser orientado, o que era algo que eu não tinha idéia de antecedência. Por isso, abriu a comunicação nas duas direções de uma maneira muito positiva.
Parece que você pode enquadrar isso como progressão lógica do que está fazendo no momento.
fonte
Alguns meses depois de levantar essa questão, devo dizer que estou feliz com nossos resultados. Mas não é exatamente o que eu aceitei no começo. Lembre-se de que é uma equipe pequena, portanto, esta solução não será adequada para todos.
Descobri que é melhor deixar todos fazerem seu próprio trabalho. E, com o tempo, desenvolvemos uma confiança mútua, onde, se encontrarmos um problema, chamaremos os outros em nosso auxílio. Não acho que alguém queira trabalhar com alguém vigiando por cima do ombro. Ocasionalmente, sento-me atrás de alguém e às vezes ajudo-o a resolver um problema sem ser solicitado. Às vezes, não tenho nada a acrescentar e talvez as incomode um pouco. Mas eles entendem que eu não estou lá para falar com eles. Estou lá para dar um tempo no que estou fazendo e apresentar um pouco de colaboração.
O que eu descobri é que as pessoas certas, ao longo do tempo (em uma pequena equipe), se sintonizam com o que outras pessoas estão fazendo. Não há necessidade de gerenciar micro ou contar a alguém o que eles estão fazendo de errado o tempo todo.
De tempos em tempos, sente-se com alguém e resolva um problema, no qual você é especialista ou alguém aprendendo, ou ambos. Explique por que você faria ou não algo de uma maneira e não de outra. As boas ideias costumam pegar, enquanto outras são deixadas para trás. E no final do dia, você tem um grupo produtivo e coeso de pessoas que podem estar trabalhando em coisas diferentes, mas compartilham um objetivo comum.
fonte