As revisões de código são necessárias para desenvolvedores juniores?

39

Eu trabalhei em duas empresas, cada uma com uma metodologia diferente quando se trata de revisões de código:

Na primeira empresa, uma revisão de código foi conduzida pelos líderes de equipe e foi solicitada após a conclusão de cada módulo.

No entanto, na segunda empresa, os líderes de equipe não precisavam realizar nenhuma revisão de código e apenas verificaram problemas de funcionalidade e design.

Então estou confuso. O processo de revisão de código é realmente necessário? Se for, por que? E se não for, por que não?

    
por 10 revs, 4 users 35%user8 20.08.2011 / 00:34
fonte

16 respostas

2

Revisão do Código : O processo de Revisão do Código deve ser vital para todos, vou explicar quem são todos beneficiados devido à condução da revisão do código, bem como são os benefícios que eles estão recebendo.

1. Benefícios Obtidos pela Empresa Devido à Condução da Revisão de Código:         Se a revisão frequente do código for realizada, a empresa poderá obter os produtos finais de maneira muito melhor otimizada, o que os ajudará a obter o nome de marca em seu mercado e também a ajudar a obter ou melhorar seu nível CMMI atual.

2. Benefícios para o Líder da Equipe Devido à Condução da Revisão do Código:        Como todos sabemos, um professor pode identificar facilmente os erros, porque eles estão revendo as respostas de seus alunos com mais frequência, para que possam ter uma ideia, em que áreas podem ser possíveis coisas erradas. da mesma forma, o líder da equipe também sabe quais são as coisas erradas nessas áreas. Como podemos corrigi-los? E também ajudar o líder da equipe a pegar as novas idéias do desenvolvedor júnior também.

3. Benefícios para o desenvolvedor Junior devido à realização da revisão de código:        Júnior Developer pode facilmente pegar as idéias sobre o processo de revisão de código, também eles são capazes de obter o que é o padrão de codificação, por instância: para criar API de forma adequada, eles vão aprender a padronização da codificação que pode ajudá-los no futuro especialmente quando eles se tornam no nível superior pós.

Portanto, minha conclusão é que a revisão de código é um processo muito vital para todos, mesmo para o membro da equipe, pois a revisão de código nos ajuda a corrigir nossos erros em nosso código, porque somos seres humanos, então não podemos prever que nunca cometemos erros descuidados no código.

    
por 13.02.2017 / 04:35
fonte
107

Pessoalmente, acho que cada parte do código deve passar por uma revisão de código, não importa se você é um desenvolvedor júnior ou sênior.

Por quê? Para começar, o seu título não diz nada sobre como você se desenvolve, e um desenvolvedor sênior pode aprender algo com o junior. Na nossa empresa, nós mudamos de opinião para que um dos outros membros da equipe revise seu código ... na maioria das vezes, somos formados por um "júnior" e um sênior juntos, então todas as coisas que não são ditas diariamente podem ser pego em um acompanhamento. Se o idoso não gostar do código júnior, ele deve ouvir por que o júnior fez o que ele fez e olhar para ele e ver se essa é uma solução viável que pode ser usada no futuro ... é uma questão de ficar mais sábio, não importa quem você é.

Uma coisa importante sobre a revisão de código não é ser muito bom, se você for um cara legal, permitirá que mais e mais códigos bagunçados evoluam no sistema. Assim como ontem, comecei a retrabalhar uma aplicação completa que um antigo funcionário da juniordeveloper escreveu, e meu Deus, esse código poderia ter precisado de uma revisão antes de partir.

Não vejo por que o líder da equipe deve fazer apenas avaliações, mas é preciso uma pessoa que não tenha medo de escolher uma "briga" por causa de um código pouco desenvolvido, e precisa ser uma pessoa que se importe com o código deve ser. Nem todas as empresas contratam pessoas que realmente se importam com o que fazem, e esses maus ovos não devem permitir que a OMI faça revisões de código, pois provavelmente só encolherão os ombros e dirão "OK" a um código ruim.

    
por 16.08.2011 / 15:17
fonte
37

Basicamente, a revisão de código é necessária para todos os programadores, independentemente da experiência. É o controle de qualidade do desenvolvimento de software e uma das razões pela qual o código aberto pode ser de alta qualidade.

EDIT: O motivo é que um revisor de código hoje está exatamente no mesmo papel que um mantenedor mais tarde. Se o código não faz sentido para ele hoje, também não fará sentido mais tarde, tornando os bugs mais caros para consertar. Portanto, compreenda-o hoje enquanto o desenvolvedor ainda se lembra do código. Além disso, o revisor pode ver erros ou omissões que o desenvolvedor perdeu.

Infelizmente, muito poucos querem fazê-lo, mas, do ponto de vista comercial, isso deve ser obrigatório.

    
por 16.08.2011 / 10:10
fonte
17

Eu trabalho em um lugar onde a revisão de código agora é um requisito, mas não foi há menos de três anos. Ele fez uma melhoria enorme em nosso código e na capacidade dos outros de manter o código mais tarde. Mesmo os desenvolvedores seniores e muito experientes cometem erros que podem ser corrigidos de forma fácil e silenciosa na revisão de código antes que o controle de qualidade os encontre ou pior antes que o cliente os encontre. Além disso, pelo menos uma pessoa além do desenvolvedor original está familiarizada com o código.

Muitas vezes, quando uma organização tenta algo novo, como fizemos com a revisão de código, há muita resistência à mudança. Eu não vi quase nada disso (também éramos estáveis em obter um departamento formal de QA) com revisão de código. Bastam apenas uma ou duas revisões para ver o valor.

Encontrei novas técnicas que não considerei ao fazer uma revisão de código do trabalho de outra pessoa ou ao revisar meu código. Encontramos problemas de competência com novos contratados relativamente rápido, tendo revisões de código e, mais importante, como eles responderam à revisão de código. Aprendemos as coisas que parecem perfeitamente claras agora no meio da programação daquela seção que não será clara na manutenção. Isso é inestimável. Pode ser que a única coisa necessária seja um comentário sobre por que algo foi feito. Encontramos alguns mal-entendidos fundamentais sobre o projeto do nosso banco de dados que precisavam ser corrigidos para que um relatório realmente tivesse as informações corretas.

Muitas vezes, o que eu vi em uma revisão de código é que, pelo próprio ato de explicar algo a outra pessoa, o desenvolvedor terá uma lâmpada acesa em sua cabeça e perceberá que há um bug que o revisor não viu .

E o boy can code review identifica os programadores cowboys que não seguem qualquer padrão ou usam ferramentas obrigatórias e cujo código será quase impossível de ser mantido por qualquer outra pessoa. E isso pode forçá-los a entrar no programa ou sair também.

As pessoas mais resistentes à revisão de código geralmente são as pessoas das quais a organização mais precisa se livrar, porque sabem que seu código não pode passar por uma revisão de código.

    
por 16.08.2011 / 19:12
fonte
11

Um cara ágil diria: "Você não precisa de uma revisão de código, apenas faça programação em pares e escreva bons testes":)

    
por 22.10.2010 / 16:50
fonte
8

A revisão de código é uma boa maneira de disseminar conhecimento e boas práticas por meio de uma equipe. Na minha experiência, é uma boa ideia certificar-se de que todo o código seja revisado e tentar variar quem analisa o código.

Na minha equipe atual, o código de todos é analisado igualmente, e tanto o programador quanto o revisor precisam estar satisfeitos com o código antes de poder ser liberado. Isso se aplica tanto aos desenvolvedores seniores que estão sendo revisados por desenvolvedores mais novos, a um desenvolvedor júnior revisando outro, ou a outros desenvolvedores seniores revisando um ao outro. Se o revisor for inexperiente ou não se sentir à vontade para revisar qualquer parte específica do código, ele se juntará a outro desenvolvedor (e talvez também ao desenvolvedor original) para fazer a revisão como um grupo.

    
por 22.10.2010 / 16:43
fonte
5

Estou no mercado há mais de 20 anos, trabalhando para empresas de software e empresas diferentes, e nenhum desses lugares teve um processo de revisão de código. No entanto, eu posso entender e apreciar os benefícios de ter um. Essencialmente, como eu os entendo, eles devem ser usados para garantir a aderência aos padrões, que devem ser seguidos para que outros possam mais facilmente manter o código no futuro. A legibilidade do código também pode ser verificada em um processo de revisão, pois isso também garantirá que a manutenção funcione efetivamente com o código.

Atualmente, trabalho em uma pequena loja onde sou o único desenvolvedor. Ocasionalmente, contratamos empreiteiros para ajudar com o backlog. Pelo menos um ou dois desses contratados escreveram um código que não atende necessariamente aos padrões da empresa ou dos padrões da empresa, mas funcionou bem e foi, pelo menos, compreensível. Quando apresentei essa questão à gerência, eles não se importaram, só queriam saber se ela fazia o que pagávamos. Então, eu acho que depende apenas da empresa, e se é ou não limpo, fácil de manter o código é o produto desejado, ou se eles só querem algo que funciona bem para o dinheiro.

Obviamente, como desenvolvedor, e quem tem que manter código, eu gostaria de trabalhar com código limpo que segue um padrão de algum tipo, mas eu não tenho sempre esse luxo, então eu faço o melhor possível e lidei com o que eu tenho, mesmo que isso signifique às vezes ter que reescrever algum código em meu próprio padrão.

    
por 22.10.2010 / 23:44
fonte
4
As revisões de código podem identificar defeitos no início do ciclo de vida do software, quando os problemas são mais fáceis (e mais baratos) de corrigir. No SmartBear , desenvolvemos uma ferramenta de revisão de código peer e Também fiz muita pesquisa sobre como tornar as revisões de código eficazes. Com base nos dados de nossos clientes, os defeitos encontrados na revisão de código são 8-12X mais baratos de encontrar e corrigir do que os defeitos encontrados no controle de qualidade. Só a economia de custos faz com que a revisão de código valha a pena, mas há mais valor do que apenas isso. A revisão de código é uma excelente maneira para todos da equipe aprenderem e melhorarem como desenvolvedores de software.

Existem algumas armadilhas que podem fazer com que as revisões de código se tornem menos eficazes e parece que sua organização está presa em uma delas. Faça a revisão do código sobre o código, não as pessoas. Títulos não significam nada em uma revisão de código. Apelos à autoridade (você deve fazer do meu jeito, porque eu sou o líder da equipe) fazem mais mal do que bem. Ensine em vez disso. Os engenheiros seniores devem explicar por que isso deve ser feito da maneira deles, e não apenas exigir que seja. Se você está tendo dificuldade em explicar um conceito, também é uma experiência de aprendizado para você. Vocês dois serão melhores desenvolvedores para o esforço que você colocar.

    
por 25.10.2010 / 19:46
fonte
2

Acho que o código que revisa TODOS CÓDIGOS é excessivo. A quantidade de tempo necessária para revisar todo o código pode ser melhor aproveitada em outro lugar. Alternativamente, acho que o código crítico e ou peças particularmente complexas precisam de revisão de código, mas certamente não de todas as linhas de código.

    
por 22.10.2010 / 17:38
fonte
2

Na minha opinião, o código que será usado por uma empresa, seja escrito por um desenvolvedor Junior ou Sênior, deve sempre ser revisado. Por quê? Porque e se o código tivesse vários bugs? E se, durante o tempo em que este código estava sendo usado, o programa falhasse? Para impedir que essas coisas aconteçam, todo o código deve ser revisado antes de ser usado.

Mas e as empresas que não analisam o código? Eles são provavelmente as empresas que têm muitos problemas técnicos e muitos, como dizem os consumidores, "crashes" ;-).

Então, deixe-me responder a todas as suas perguntas:

  • Sim, o processo de revisão é necessário.
  • Por quê? Por causa das razões que afirmei acima.
por 16.08.2011 / 16:41
fonte
1

Qual é a diferença em interferir em suas ideias antes de fazer o check-in do seu código (revisão) ou depois devido a um bug, ficar esperto / difícil de entender ou não seguir as práticas padrão aceitas? É o seu ego?

Você não pode desconsiderar os méritos da revisão de código ou qualquer outra coisa apenas porque está sendo mal implementado por um membro da equipe menos qualificado que você não respeita. A revisão de código não é um processo altamente complexo que apenas alguns super programadores são capazes de entender. Não tenho certeza se existem muitos programadores ou escritores profissionais capazes ou que têm tempo para se editar.

Você já voltou a uma linha de código alguns meses depois e se perguntou o que eu estava pensando? Haveria uma chance melhor de pegá-lo com uma revisão de código. Você acabou de pegar e é apenas um pouco melhor do que o programador que você estava há um tempo atrás - espero.

    
por 16.08.2011 / 14:52
fonte
1

IMO: uma revisão de código deve ser essencial para todos os desenvolvedores, mas apenas quando as pessoas que fazem a revisão forem competentes. No passado eu tive código rejeitado em uma revisão porque, eu não estou brincando, eu segui SOLID , fiz algumas Injeção de Dependência e tive o código organizado em namespaces e pastas de acordo com o design lógico, e incluí um pequeno conjunto de testes unitários para verificar o código. O código foi rejeitado como "muito complicado" e me disseram para usar uma classe que juntasse tudo e removesse os testes porque não era como a empresa escrevia o código.

Uma revisão de código como essa não vale nada, mas uma revisão de código com uma equipe competente pode esclarecer algo sobre o design (por exemplo, por que você deve fazer X e Y, mas não Z) ou indicar uma falha real (ex. Y para falhar por razões incorretas).

    
por 16.08.2011 / 16:21
fonte
1

É claro que a Revisão de Código não é necessária . Então, novamente, nem testes, integração contínua, controle de origem, envolvimento do cliente, criação de perfil, análise estática, hardware decente, compilações de um clique, rastreamento de bugs, a lista continua.

Além das revisões de código, as coisas mencionadas acima são ferramentas que ajudam a garantir a qualidade do software. Com uma combinação de habilidade, sorte, tempo e determinação; você pode entregar software de qualidade sem nada disso, mas é mais provável que você não

.

No seu cenário, não há nada para se confundir. Nem toda organização se entrega a todas as melhores práticas. Eles podem discordar disso, pode entrar em conflito com uma prática recomendada diferente que implementam, ou podem considerar que a sobrecarga de implementá-lo é muito grande para eles neste momento. Dependendo de suas circunstâncias, eles podem estar corretos ao fazê-lo, ou podem estar fazendo uma falsa economia. Para algumas ferramentas, (por exemplo, controle de origem), a relação de retorno / esforço é tão boa que usá-la é algo óbvio; para outros, é menos claro.

Não há dúvida de que a revisão de código é uma prática que apresenta uma sobrecarga significativa. Por causa disso, as organizações procurarão minimizar essa sobrecarga, seja por não fazê-lo, seja por fazê-lo apenas em determinadas situações (por exemplo, para um membro da equipe júnior ou uma alteração particularmente grave). Nem sempre é óbvio que ele paga mais (na captura de bugs, reduzindo a dívida técnica ou compartilhando conhecimento) do que custa. A maior parte desse retorno é difícil de quantificar, enquanto é muito fácil contar o número de horas de trabalho que sua organização gasta fazendo análises. O bit mais fácil de quantificar (contagem reduzida de erros) é fácil de atribuir a outros fatores (por exemplo, "claro que ele tem menos bugs, é mais maduro").

    
por 16.08.2011 / 16:33
fonte
-1

Nós fazemos um jogo de futebol online na Turquia. Muitos usuários e mestres de jogos nos ajudam na funcionalidade. Também dão comentários sobre os recursos necessários. Então, eu acho que, se você tem muitos usuários, testes de funcionalidade podem ser feitos para ajudar ou obter distintivos. Colaboração de desenvolvedores, mestres de jogos e usuários com fóruns, equipes de suporte e ambientes de teste privados criam um projeto social.

Certos comentários de código e compartilhamento de experiências entre a equipe de desenvolvimento são necessários, mas se não for crítico, você não precisa se forçar.

    
por 25.10.2010 / 16:48
fonte
-1

Acho que a forma como a inspeção detalhada da segunda parte depende do seu ciclo de vida, se você é mais ágil ou se tem mais queda d'água em seus processos. Eu acho que é razoável fazer projetos / inspeções de alto nível, bem como inspeções de projeto em nível de detalhe. Acho que também é bom envolver vários membros de uma equipe para inspecionar.

    
por 25.10.2010 / 22:23
fonte
-1

Eles são absolutamente necessários, pois têm pouca experiência.

    
por 15.08.2012 / 17:24
fonte