Sou contratado de uma grande empresa. Atualmente, existem três desenvolvedores no projeto, inclusive eu.
O problema é que os outros 2 desenvolvedores realmente não entendem. Com "it" quero dizer o seguinte:
- Eles não entendem as melhores práticas para a tecnologia que estamos usando. Após 6 meses de mim e de outros dando exemplos, há terríveis anti-padrões sendo usados.
- Eles são programadores de "copiar e colar" que produzem principalmente código de espaguete.
- Eles constantemente quebram as coisas, implementando mudanças, mas não realizando um teste básico de fumaça para ver se tudo está bem
- Eles se recusam / raramente pedem revisões de código.
- Eles recusam / raramente fazem coisas básicas como formatar código.
- Nenhuma documentação em nenhuma classe (jsdocs)
- Com medo de excluir código que não faz nada
- Deixe os blocos de código comentados em todos os lugares, embora tenhamos controle de versão.
Sinto-me cada vez mais frustrado ao formatar o código de outros, corrigir bugs, descobrir funcionalidades que estão quebradas e criar abstrações para remover o espaguete.
Eu realmente não sei o que fazer. Eu tento não ficar frustrado, mas é apenas uma bagunça. Eu gosto dessas pessoas como pessoas, mas sinto que a situação da codificação é tão ruim que eu poderia me mover mais rápido se elas simplesmente navegassem na Web o dia todo.
Estaria fora de linha pedir ao nosso gerente para revisar os outros svn commit access; confirmações só podem ser feitas após uma revisão por alguém com conhecimento do que estamos fazendo? Como contratado, não tenho certeza se essa é a melhor jogada.
Existe uma maneira sutil / não tão sutil de deixar claro quantas coisas estou consertando?
Respostas:
Estou tendo algo assim na minha equipe. Eu tentei fazer com que as pessoas fizessem a coisa certa e não funcionou como esperado, então mudei para uma solução diferente.
Primeiro, fui ao meu gerente e fizemos um acordo, nenhum código entra no controle de origem, a menos que seja coberto por testes de unidade. Se o código entrar sem testes de unidade, tenho poder de veto para desfazer o commit imediatamente e executar ping em quem foi responsável por ele, pode trabalhar nos testes e depois enviar o código por push.
Com essa regra, eu regularmente executo ferramentas de cobertura de código (nesse caso, jacoco em nossa compilação sbt ) para garantir que as peças sejam cobertas corretamente e também refatorando e revisando constantemente os códigos de qualquer código enviado por eles. Como este é um projeto Java e Scala , tenho muitas ferramentas para me ajudar a capturar coisas que não deveriam estar lá ou que não funcionam da maneira que pensamos, não sei como você pode fazer o mesmo com JavaScript, mas talvez exista uma solução.
A principal coisa que acredito estar me ajudando a acompanhar isso é que tenho uma visão clara do que espero do projeto e da arquitetura principal; portanto, sempre que vir algo que não reflete essa visão, posso ir lá e consertá-lo. Você deve fazer o mesmo, definir sua visão, os padrões que devem ser usados, a maneira como o código deve ser escrito e manter-se por dentro disso, sempre informando a eles (e a sua gerência) o que está acontecendo e o que impede o andamento do projeto. Mais rápido.
Certamente haverá um momento em que eles desistirão e farão a coisa certa ou a gerência receberá a mensagem e os removerá do projeto.
fonte
Tenho certeza de que você já viu meus comentários e meu outro post, então não vou fingir que realmente sei a resposta. O melhor que posso oferecer é um resumo do que ouvi / li de outras pessoas e acrescente um pouco da minha própria experiência à mistura.
Primeiro, quero dizer que, há pouco tempo, deparei-me com um blog que pertence a um de nossos próprios membros do Programmers SE, Martin Blore e IMO. Este post específico sobre a auto-atualização do TDD é muito preciso. TDD é o último nível mais alto que une tudo, mas sem níveis anteriores, especialmente o maior, princípios e práticas de produção de código claro e legível, será muito difícil, se não impossível, fazer o TDD funcionar.
Na minha empresa, o Agile e o TDD nos foram impostos pela gerência e, a princípio, simplesmente os fizemos porque nos disseram (o que é o oposto do ágil). Tentamos o TDD duas vezes e, embora eu seja um grande defensor do uso de testes automatizados, pessoalmente joguei fora todos os que a equipe deu no último lançamento. Eles eram frágeis, gigantescos, copiavam / colavam o wazoo e crivavam de declarações de sono que os faziam correr muito lenta e imprevisivelmente. Meu conselho para sua equipe: NÃO FAÇA TDD ... ainda.
Não sei qual é a sua situação, porque você mencionou que está na empresa há apenas 6 meses e que é contratado. Seus objetivos de longo prazo para permanecer nesta empresa ou o contrato terminará? Estou perguntando, porque mesmo que você faça algo, pode levar algum tempo para realmente ver os resultados.
Além disso, quando você ingressa em uma equipe, geralmente leva tempo até você obter credibilidade e respeito suficientes da equipe, onde eles (desenvolvedores e gerenciamento) considerariam qualquer coisa que você propusesse. Na minha experiência, ajuda se você apagar alguns incêndios e demonstrar que possui habilidades e conhecimentos dos quais outros podem confiar. Não tenho certeza se 6 meses é suficiente. Com frequência, uma pessoa nova e ambiciosa se junta à equipe e depois faz um post aqui perguntando como eles podem mudar o mundo. A triste realidade é que eles simplesmente não podem.
Então, supondo que você tenha o respeito e a atenção de sua equipe. O que agora?
Primeiro, o gerenciamento e os desenvolvedores precisam estar cientes de que há um problema. A gerência mede os resultados em termos de trabalho entregue. Se eles estão satisfeitos com a quantidade e a qualidade atuais dos recursos, a triste realidade é que eles não vão ouvir. Como outros salientaram, sem o apoio da gerência, será extremamente difícil introduzir qualquer tipo de mudança.
Depois de obter suporte de gerenciamento, o próximo passo é aprofundar e identificar as causas do motivo pelo qual a equipe opera da maneira que funciona. Este próximo tópico é algo que tem sido uma busca pessoal minha há pouco tempo. Até agora, essa foi minha jornada:
fonte
Sugiro que você fale com seu gerente sobre o problema, mas ele certamente não vai querer revisar todos os check-in.
Em vez disso, sugiro que você sugira um conjunto de testes de unidade / regressão, para ser conectado ao SVN e executado para cada check-in. Isso pelo menos ajudará a evitar construções quebradas. Você pode gradualmente sugerir outras práticas recomendadas.
Se ele se mostrar totalmente receptivo, talvez você deva passar por cima dele. Se você decidir fazer isso, precisará trazer o seu melhor jogo. Basicamente, você estará propondo que a gerência seja contratada em um nível superior, se você fizer isso.
fonte