Como avaliar a qualidade do código quando você não está familiarizado com o idioma? [fechadas]

10

Como hipótese, se eu fosse entrevistar alguém para uma nova posição de desenvolvedor PHP quando minha experiência estiver no .NET, como posso determinar se o exemplo de código que eles me forneceram é eficiente e de boa qualidade?

Em outras palavras, qual é a melhor maneira de avaliar o código de um programador se você não estiver familiarizado com o idioma?

Jason Towne
fonte
11
Eu odeio dizer isso a você, mas você não :-) Inclua alguém na entrevista que saiba o idioma ou aprenda você mesmo.
Joppe
2
É por isso que entrevistar é um esforço de equipe. Você avalia o que é capaz de avaliar e adia esse tipo de coisa para alguns líderes da equipe técnica que estão familiarizados com isso.
Kaz
Para mim, a melhor métrica é o tamanho das funções (incluindo aqui a profundidade do aninhamento), seguido pelo tamanho das classes / arquivos.
M3th0dman

Respostas:

20

como posso determinar se o exemplo de código que eles me forneceram é eficiente e de boa qualidade?

O que você não poderá avaliar é o uso correto dos idiomas e o uso da biblioteca. Portanto, essas não são coisas que você deve tentar examinar.

O que você pode avaliar é:

  • Qual a aparência do código bem estruturado
  • Variáveis ​​bem nomeadas (você pode entender as coisas)
  • Funções / unidades de código bem compostas
  • Consistência na base de código

Os pontos acima (embora não exaustivos) indicarão se o código cheira ou não e deve ser algo que um programador experiente possa identificar como bom ou ruim.

Em resumo - procure por coisas que devem indicar um bom código, independentemente do idioma.

Oded
fonte
5
Outra questão importante: "Os comentários são claros, significativos e fáceis de entender?" Você poderia aprender um pouco sobre o que um pedaço de código faz com os comentários, mesmo que você tenha pouca exposição ao idioma?
FrustratedWithFormsDesigner
2
@FrustratedWithFormsDesigner - Comentários? O que são aqueles? Sério, o código deve ser auto-comentável. Os comentários devem estar lá apenas para explicar o porquê ou dar motivos para um código incorreto.
Oded
6
Peço extrema cautela: é muito fácil acabar escolhendo com base em quem escreve o código mais como você está acostumado, o que pode muito bem ser um uso relativamente ruim dessa linguagem.
21812 Jerry Coffin
@FrustratedWithFormsDesigner Oded provavelmente pensa que você deveria ler este elegantcode.com/2010/04/18/…
Joel
4

Faça com que eles o apresentem como parte da entrevista. Você tem a desculpa perfeita para perguntar e isso mostra um pouco de como eles pensam para ver como eles explicam.

Se eles vão pular para o seu idioma preferido, você sabe que tem muitas mentorias por vir, portanto, deve procurar, acima de tudo, boas habilidades de lógica / raciocínio.

Se eles continuarem trabalhando no idioma preferido, você terá que aceitar que eles me autogerirão nos detalhes específicos do idioma até que alguém acelere de qualquer maneira, para que tudo o que você precise interagir com o lado do design também.

Conta
fonte
11
Se o candidato puder explicar seu código para que a intenção e o objetivo por trás dele sejam claros e visualmente, a organização e a estrutura geral pareçam razoáveis, provavelmente terão uma compreensão razoável do que o código representa. E provavelmente poderia repetir uma reprodução limpa semelhante. Mesmo que partes específicas sejam explicadas com tão pouco quanto 'porque é isso que um material de referência específico mostrou como fazê-lo', ao nomear o material de referência, você pelo menos tem uma representação modesta da capacidade de não apenas 'codificar', mas de encontrar e aplicar soluções para problemas que eles não enfrentam rotineiramente.
JustinC 08/12/12
1

À parte, código óbvio / obviamente errado, eficiente dependerá em grande parte do compilador / intérprete do idioma em questão, e você realmente não será capaz de observar isso de um exemplo de código. Um exemplo de código pode ser lindamente escrito e elegante como porcelana fina em toalhas de mesa, mas fica lento se compilado / mal interpretado.

Você não poderá avaliar o uso idiomático dos recursos de idiomas / açúcar sintático / convenções sem alguma familiaridade.

Você deve saber se está bem escrito em geral com base em considerações universais, como limpeza, fluxo de controle, nomeação de variáveis, ordem das operações e assim por diante.

No entanto, mais praticamente, se você souber o que o idioma vai seguir no processo, tente encontrar um ou mais guias de estilo para esse idioma, vá até a livraria e folheie alguns livros para esse idioma e passe os exemplos de código à procura de análogos para algo que você conhece com o (s) idioma (s) de sua escolha, verifique um ou mais projetos de código aberto que usam esse idioma e assim por diante.

Se você tiver tempo e se não houver uma barreira de custos, poderá chegar a configurar um ambiente de desenvolvimento para esse idioma e ativar um aplicativo Hello World, criar um kata de código ou escrever um aplicativo simples iniciar. Você desenvolverá um quadro de referência rudimentar com muita rapidez e isso não apenas fornecerá uma vantagem para o objetivo específico de revisar o código em questão, como você poderá ser compelido pelo idioma e se ramificar um pouco.

Ed Hastings
fonte
1

Independentemente do idioma:

  • Existem separações claras de preocupações, uso apropriado de classes (para linguagens OO) ou quaisquer indicações de tentativas deliberadas de decompor o código em 'pedaços' modulares e reutilizáveis?
  • Da mesma forma, alguma evidência de teste - teste de unidade ou não?
  • Se for um código de produção, ele está repleto de seqüências de depuração que podem sugerir pouca separação entre desenvolvimento e implantação?
  • O código segue algum tipo de convenção de nomenclatura (se você gosta dessa convenção ou não é imaterial!)?
  • Se você tiver o arquivo, em vez de uma impressão, todas as funções / classes do arquivo se relacionam com o (portanto, se for um arquivo chamado data_access_layer , a evidência de funções que processam imagens provavelmente estaria fora do lugar).
  • Quaisquer indicações de falta de confiança para a entrada do usuário também são boas, especialmente para linguagens baseadas na Web como PHP. Assim, estruturas como input = escape (input) mostram pelo menos que estão cientes do problema.
  • Comentários ou código autoexplicativo são sempre bons. Existem várias escolas de pensamento sobre a quantidade de comentários que devem estar presentes, mas uma completa ausência de comentários
  • Ao custo de ser cínico, eu também pesquisava no Google parte do código antes da entrevista. Infelizmente, poderia ser um trabalho de copiar e colar.

Não estou dizendo que qualquer código que não possua tudo isso é automaticamente ruim, mas eu consideraria esses indicadores de alguém que refletiu e considerou sua prática.

No entanto, para todos esses indicadores, você deve perguntar qual é a lógica do código. Pode haver uma boa razão específica de idioma para suas escolhas ... e depois disso, o google é seu amigo quando eles e os outros candidatos vão embora, pois você pode verificar se o que eles disseram parece plausível ...!

Boa sorte, pois contratar pessoas boas é um dos papéis mais importantes em sua organização;)

Frackham
fonte
Em retrospectiva, isso duplica muito do que @Oded (e os comentários) disse.
Frackham
0

Você deve perguntar a alguém que conhece o idioma em questão para vir à entrevista ou dar uma olhada na amostra. É provável que essa pessoa encontre os pontos negativos, se houver.

O candidato vai trabalhar em equipe? Deixe os membros da equipe encontrá-lo e fazer perguntas sobre suas habilidades.

Marcel
fonte
-2

Pergunte-lhes sobre as limitações que eles encontraram ao usar o idioma. Peça a eles para mostrar uma consulta SQL simples. Qualquer desenvolvedor Php digno de uma piada deve ser capaz de realizar uma consulta básica de seleção / atualização / exclusão sem muito esforço.

doug

SnoopDougieDoug
fonte