Vou tentar dar algumas dicas apoiadas pela minha experiência pessoal.
Um dos meus colegas de equipe, apesar de experiente, não entende realmente o SVN. Naturalmente, áreas em branco em seu mapa mental representando oceanos de SVN fazem com que ele adote padrões de uso bastante estranhos.
Por exemplo, ele havia declarado uma política de "1 commit de SVN por dia por desenvolvedor" porque, caso contrário, "o servidor logo ficaria sem espaço em disco". Quando expliquei a ele que os commits SVN são deltas, não cópias completas, ele respondeu com dúvida e ainda hoje não tenho muita certeza se ele entende o que isso significa.
Mesmo se o espaço em disco fosse um problema, você sempre poderia confirmar muitos arquivos de uma só vez, então acho que o que ele sugere é a solução errada. Além disso, é possível desperdiçar muito espaço verificando arquivos binários grandes, porque o SVN não armazena deltas para arquivos binários. Um check-in por dia também é ruim porque obriga a confirmar alterações que não pertencem juntas, por exemplo, no caso de você corrigir mais de um bug por dia.
A solução que adotamos em nossa empresa é que existe um filtro que rejeita qualquer confirmação que contenha arquivos binários. Podemos forçar a confirmação usando uma palavra-chave especial no comentário do check-in (precisamos mostrar ao SVN que sabemos o que estamos fazendo). Uma vez em um ano ou dois, um gerente de projeto arquiva ramificações antigas e as remove do repositório. Com essa estratégia, não temos problemas de espaço que conheço (nosso repositório suporta vários projetos diferentes e possui mais de 100000 revisões).
Resumindo, você pode dizer a ele que concorda com ele que o espaço em disco é uma questão importante, mas, por outro lado, ressalte
- a importância de check-ins relacionados a recursos em vez de um check-in diário monolítico;
- o fato de que, ao verificar um arquivo binário grande por dia, é possível preencher o disco de qualquer maneira.
Em seguida, você pode sugerir que você tenha uma reunião (possivelmente com outros desenvolvedores ou administradores de sistema) para discutir estratégias para manter o uso do espaço em disco sob controle (por exemplo, filtros de arquivos binários, backup regular e limpeza de antigos ramos não utilizados).
Também tivemos uma discussão acalorada sobre a inclusão da configuração do projeto Eclipse no SVN. Meu companheiro de equipe insistiu que deveríamos, embora tenha causado muitos conflitos inúteis. Eu era contra manter arquivos de configuração de desenvolvedor individuais no SVN. Por fim, meu colega de equipe teve a prática de fazer check-out de toda a árvore de código-fonte após cada confirmação para garantir que "o código comprometido no repositório funcione". Essa foi a razão pela qual ele foi tão inflexível em manter a configuração do projeto no SVN - para que fosse fácil reimportar o projeto. Quando expliquei que o commit sincroniza a cópia de trabalho com byte por byte remoto, o que torna o check-out desnecessário, meu colega de equipe respondeu com dúvida novamente e, por fim, considerou insignificante todo o problema.
Na minha opinião, nossa equipe perde tempo resolvendo conflitos SVN nos arquivos de configuração do projeto que contêm apenas configurações específicas do desenvolvedor que não precisam ser compartilhadas com o SCM. Toda essa bagunça porque alguém adaptou o processo em torno de suposições incorretas.
Você usa um servidor de construção? Temos um servidor de compilação que verifica o projeto completo e o compila todas as noites. Na manhã seguinte, os testadores têm um instalador pronto para teste do produto (se a compilação principal foi executada corretamente) e nós (os desenvolvedores) temos um relatório de compilação com todos os avisos (e erros, caso haja algum). Claro, você precisa configurar os arquivos de configuração padrão para o servidor de compilação e verificá-los. Cada desenvolvedor pode, em seguida, vê-los junto com o resto do projeto, mas eles não estão autorizados a verificar em quaisquer alterações locais.
Nesse cenário, você aborda a necessidade dele de poder verificar o projeto completo e construí-lo a qualquer momento. Você também evita gastar tempo para mesclar alterações que não deveriam ter sido verificadas em primeiro lugar, porque não fazem parte do produto: o produto é a construção principal e deve ser mantido limpo. Se alguém interromper a construção principal (por exemplo, verificando seu próprio arquivo .project), você poderá reverter as alterações ou forçar o desenvolvedor a corrigir o problema.
Talvez se ele levantar a questão novamente, você pode sugerir novamente uma reunião (possivelmente com outros desenvolvedores) e encontrar uma estratégia comum juntos.
Como convencer um colega de equipe, que se considera sênior, a entender melhor os conceitos básicos de SVN?
Penso que a melhor estratégia seria evitar levar o conflito a um nível pessoal e, em vez disso, discutir os problemas em questão e as possíveis soluções. Se você tem a impressão de que ele está procurando um confronto pessoal, aqui estão algumas sugestões (novamente, por experiência pessoal):
- Como está a dinâmica da sua equipe? Seus outros colegas estão tendo uma experiência semelhante com este companheiro de equipe? Existem muitas dicas pequenas, não muito explícitas, que uma equipe pode dar a um de seus membros para desencorajar certos comportamentos (pequenas piadas ou observações) e incentivar o confronto construtivo (propondo uma reunião ou trazendo um tópico informalmente durante uma pausa para o café). ) Às vezes, uma boa equipe pode isolar rapidamente um elemento perturbador e trazer as coisas de volta ao normal.
- Quão boa é a sua gestão de pessoas? Tivemos um caso de conflito em nossa empresa e o chefe de pessoal teve que intervir para esclarecer a situação. Não foi bom, mas às vezes a atmosfera de trabalho se deteriora tanto que não melhora por si só. Espero que esse não seja o seu caso (ainda não tenho a impressão de que tenha chegado tão longe), mas é sempre bom saber se você tem uma boa administração de pessoal ou se precisa resolver conflitos por conta própria.
Por que estou escrevendo isso? Você diz que deseja "convencer um colega de equipe, que se considera mais velho, a entender melhor os conceitos básicos de SVN". Para mim, parece que o conflito pode estar ficando muito pessoal. Alguns psicólogos sustentam que 70% da nossa comunicação está no nível emocional; se esse nível não está funcionando, as pessoas param de falar sobre fatos porque estão ocupadas demais lidando com emoções.
Portanto, além de explicar seus pontos, você também pode tentar fazer algo para melhorar a comunicação. Convidar um café ou almoçar juntos, conversar rapidamente sobre um tópico que não está relacionado ao trabalho, etc., pode melhorar a comunicação e chamar a atenção do colega para os fatos importantes que você deseja que ele entenda. Se ele aceita esse tipo de comunicação, talvez os conflitos que você teve até agora estejam relacionados ao fato de que você não se conhece bem e houve alguns pequenos mal-entendidos, mas ele provavelmente está aberto para construir uma colaboração construtiva. Se ele recusar, pode haver uma hostilidade mais profunda do lado dele.
Nesse caso, acho que você deve esperar até que seus papéis se tornem mais claros. Se o seu companheiro de equipe não possui oficialmente uma classificação mais alta que a sua, ele não faz sentido ficar irritado com suas tentativas de melhorar as coisas. Com o tempo, ele terá que aceitar ou fazer papel de bobo se continuar tentando mostrar que sabe melhor. Se ele tem uma classificação mais alta, você deve encontrar uma maneira de fazê-lo entender que isso não está em discussão: suas observações visam melhorar a produtividade e não prejudicar sua posição, isso deve ser 100% claro. Quando os papéis foram esclarecidos, se ele ainda não pode aceitar sugestões ou críticas construtivas, então ele realmente deve ter algum problema com a auto-estima ou algo assim.
Portanto, se todas as estratégias acima falharem e você continuar se sentindo (muito) frustrado, receio que a única coisa razoável a fazer seja arrumar suas coisas e procurar um lugar melhor. Fiz essa experiência há três anos e encontrei uma empresa muito melhor na qual estou muito satisfeito agora. Talvez este não seja o seu caso (espero que não, é claro), mas tente entender esse ponto também.
Apenas meus 2 centavos.