Quão importante é estar sintaticamente correto durante uma entrevista? [fechadas]

40

Ao pedir a um candidato a entrevista para escrever um programa no quadro branco, você espera que o candidato escreva um código sintaticamente correto?

Eu tinha dois candidatos, um dos quais escreveu um programa sintaticamente correto, mas a lógica não estava à altura da marca, e o outro tinha a lógica melhor escrita, mas a sintaxe era uma porcaria.

Eu sou a favor do primeiro candidato.

    
por topgun_ivard 09.09.2011 / 17:45
fonte

18 respostas

124

Eu gostaria que a pessoa fosse capaz de analisar o problema, encontrar uma boa solução e depois explicar a solução para mim. Mesmo que a lógica deles não fosse 100%, se eles estivessem no caminho certo e estivessem raciocinando sobre o problema, fazendo as perguntas certas e indo pelo caminho certo, esse seria meu vencedor.

Quando você está desenvolvendo código no trabalho, você tem muitas ferramentas - IDEs, compiladores, análise estática, testes de unidade, teste de integração e procedimentos de teste de aceitação - para encontrar erros na sintaxe e na lógica. Se você está escrevendo em um quadro branco, você não tem essas ferramentas e cometer erros na sintaxe (esquecendo o nome do método, um ponto-e-vírgula, uma chave), e eu posso perdoar isso.

Minha única pergunta para você: Por que você está fazendo com que seus candidatos escrevam código real no quadro branco, em vez de se concentrarem em algoritmos, estratégias de design e raciocínio lógico? As linguagens de programação mudam, a resolução de problemas não.

    
por 09.12.2017 / 05:38
fonte
46

Eu gostaria do segundo candidato. A lógica pode ser difícil ( muito difícil, às vezes) para obter exatamente . A sintaxe pode ser muito fácil de acertar quando o IDE e o compilador e outras ferramentas variadas ajudam.

O primeiro candidato nunca pode desencadear um erro do compilador, mas se o seu código muitas vezes falhar em todos os tipos de casos de limite estranhos (e menos estranhos), saber onde colocar um ponto e vírgula não vale muito.

    
por 08.09.2011 / 05:42
fonte
19

Dependendo dos erros sintáticos reais, eu acho que preferiria o segundo candidato , porque a sintaxe de verificação geralmente é melhor deixada para as máquinas .

Erros como perda de ponto-e-vírgula, esquecimento de colchetes, esquecimento de vírgulas em listas de argumentos, etc., até mesmo erros não-sintáticos como trocar a ordem dos argumentos ao chamar uma função geralmente são capturados pelo sintaxe, pelo compilador ou quando o código é executado pela primeira vez, todas as coisas que normalmente se usam, mas não estão disponíveis no quadro branco.

No entanto, existem alguns erros que, embora tecnicamente apenas erros de sintaxe, mostram um mal-entendido mais profundo.

Como um exemplo um pouco artificial para mostrar o ponto: considere um programador python que prefixa todas as suas variáveis com $, ou escreve o for-loop como for list as item . Tecnicamente, ambos são erros de sintaxe, mas mesmo com apenas uma exposição limitada ao python, deve-se saber como os caracteres legais e o loop for. Seria um bom palpite que o candidato saiba php (ou perl?) E tente blefar sobre suas habilidades em python

    
por 08.09.2011 / 11:59
fonte
15

Eu preferiria o segundo candidato, com base na teoria de que um quadro branco tem mais impacto na sintaxe do que na lógica, e que os erros de sintaxe são mais fáceis de corrigir - o IDE ou o compilador geralmente conseguem fazer isso.

    
por 08.09.2011 / 02:54
fonte
15

Eu tenho escrito SQL e CSS (os idiomas mais simples e básicos que conheço) há quase 13 anos, e nem sempre consigo me lembrar da sintaxe.

Meu amigo (também desenvolvedor) trabalha para um fundo de hedge, ele nunca se lembra da sintaxe de uma instrução de inserção.

Nós acabamos em W3CSchools , acho que devemos ficar com vergonha (ele tem um diploma e eu tenho um PhD).

No entanto, para ser honesto, acho que temos nossas prioridades corretas. A sintaxe não é uma habilidade importante.

    
por 09.09.2011 / 17:48
fonte
13

Poucos pensamentos sobre erros de sintaxe ... Eu queria saber se você deixou claro que essa sintaxe precisa estar correta. Às vezes as pessoas assumem que o pseudo código está correto.

Além disso, se alguém reivindicar anos de experiência em um idioma e não puder corrigir a sintaxe básica, você deverá duvidar da reivindicação.

Erros de sintaxe podem variar, por isso, se alguém esquecer o nome de um método, está OK (para mim), mas se alguém não souber como se referir a um método em uma classe (notação de ponto) ou não souber um pensamento básico como sintaxe para uma classe simples, então é provável que essa pessoa não tenha usado a linguagem por um longo tempo.

Para o cara que não conseguiu a sintaxe correta, você acha que os erros dele poderiam ter sido corrigidos facilmente com o editor de idioma apropriado? se assim for, eu voto para ele.

Acho que o que estou pensando aqui é que os erros de sintaxe são aceitáveis dentro dos limites.

    
por 08.09.2011 / 03:04
fonte
5

Um programador assistente júnior ou até mesmo uma ferramenta de software pode encontrar e corrigir uma sintaxe incorreta se a lógica for boa. Má lógica ... qualquer correção é muito menos garantida. Todos os programadores vão estragar. Eu escolheria aquele que é que as falhas são mais fáceis de detectar e corrigir.

    
por 08.09.2011 / 07:53
fonte
5

A menos que o problema seja sutil e a maioria das perguntas da entrevista não seja, o primeiro candidato será desqualificado. É muito mais fácil aprender a sintaxe da linguagem do que o design do algoritmo. Eu contratarei um programador com uma história de trabalho bem-sucedido em vários idiomas, mesmo que ele tenha zero experiência em minha tecnologia atual. Esta não é a melhor estratégia se eu precisar de algo feito hoje, mas se eu precisar fazer muita coisa nos próximos doze meses, eu sempre escolherei habilidade geral em relação à experiência específica.

    
por 08.09.2011 / 11:29
fonte
5

A verificação de sintaxe é para o que é um compilador. Um compilador não pode melhorar sua lógica, mas pode lhe dizer como corrigir sua sintaxe. Isso significa que qualquer trabalho em que você escreve código usando um compilador, a lógica é inerentemente muito mais valiosa do que estar sintaticamente correta.

    
por 08.09.2011 / 12:13
fonte
5

Entrevistas são sempre situações embaraçosas - você pode dizer isso porque quando você sai, você imediatamente pensa em todas as coisas que você deveria disse, ou as respostas certas para as perguntas e as coisas que você queria para perguntar, mas esqueci. Por isso, esperar por um código perfeitamente escrito sem erros de sintaxe é irrealista.

Além disso, suas expectativas de código perfeito (em um quadro branco!) podem não coincidir com os entrevistadores - por exemplo, em uma entrevista que participei me pediram para escrever uma aula, o que eu fiz, apenas para o entrevistador me puxar para cima em não colocar em um construtor de cópia. Então eu escrevi um, que não fez nada além de definir a = b, mas isso foi o suficiente para satisfazê-lo. As minhas expectativas em relação ao problema não requeriam um copiador, então deixei de lado o problema a ser resolvido - eu não esperava ter que escrever completamente compatível, compilando código (para seus padrões de codificação ocultos), simplesmente mostre minha compreensão da solução. (esse mesmo entrevistador também não gostou da minha solução, não foi como ele teria feito isso, obviamente, eu entendi errado, suspiro).

Se você quiser código de trabalho de um entrevistado, dê a ele um compilador. Então não reclame quando eles te faturarem:)

Então vá para a pessoa que sabe o que está fazendo, não aquela que pode retratar as palavras, mas não entende o significado.

    
por 08.09.2011 / 12:28
fonte
3

Durante uma entrevista, o entrevistador está mais interessado em ver o seu

  1. Abordagem do problema
  2. Habilidade usada para resolver o problema e
  3. Tempo necessário para efetivamente fornecer uma solução adequada

No entanto, a sintaxe não é tão importante, mas ocupa um lugar proeminente ao resolver um problema, com grandes erros na sintaxe, você não pode esperar que o entrevistador fique impressionado.

A lógica e sintaxe adequadas combinadas podem fazer o truque para você em uma entrevista.

Um pequeno ou pequeno erro nunca lhe custaria muito se a lógica fosse boa o suficiente.

Além disso, há disponibilidade de IDE que poderia facilmente tornar a sintaxe de qualquer forma adequada. Mas, para usar o método onde e quando e, o mais importante, POR QUE , seria conhecido apenas por um indivíduo com a lógica e conhecimento adequados do assunto real.

Espero e exorto você a fornecer algo mais do que um quadro branco ou um bloco de notas para escrever o código.

Eu iria com o segundo candidato. ..

    
por 08.09.2011 / 08:00
fonte
2

Bem, algumas pessoas querem grandes Desenvolvedores de Java, grandes desenvolvedores de C #, grandes desenvolvedores de C ++, etc. Se esse for o seu caso, vá com A e mais poder para você. Uma preocupação que eu tenho é se eles não podem raciocinar para resolver o problema, como você pode esperar que eles raciocinem e resolvam seus problemas de negócios?

Outras pessoas querem apenas grandes desenvolvedores que possam trabalhar em qualquer idioma necessário. Eles pensam / modelam o problema e depois o implementam em qualquer idioma. Se de repente você decidir que o .NET é uma droga e mudar para o Java ou vice-versa, esses são os desenvolvedores que não vão abandonar o barco nem se recusar a aprender. Além disso, se você receber algum tipo de pacote de automação / pacote de cálculo que tenha uma linguagem proprietária e precisar de algumas tarefas automatizadas, esses são os tipos de desenvolvedores que podem fazer isso. Exemplo da vida real ... Eu precisava descobrir uma linguagem de script proprietária personalizada para um pacote de software de mapeamento a fim de extrair códigos postais para regiões desenhadas personalizadas para um antigo empregador. Outro exemplo ... meu empregador atual tem um sistema de gerenciamento de propriedade proprietário que contém uma linguagem personalizada para escrever relatórios ... Em qualquer caso, se você conseguir alguém que não consiga pensar logicamente, mas esteja familiarizado com a sintaxe da linguagem X, você estar em apuros quando situações como esta surgem onde você precisa de alguém para trabalhar em um idioma diferente.

Também no quadro branco há pressão extra / nervosismo para que ninguém esteja no seu melhor. Além disso, duvido muito que, ao codificá-lo, você fique perfeito todas as vezes. Eu suspeito que você compila ou simplesmente corre e encontra alguns erros. Além disso, depende do idioma. C é pequeno o suficiente para que você possa memorizar a maioria das bibliotecas de linguagem / núcleo (embora eu não precise disso). O Java / C # tem bibliotecas tão grandes (com mudanças tão frequentes) que a memorização da biblioteca está fora de questão.

Também conhecer vários idiomas pode funcionar contra você. C # e Java interferem uns com os outros comigo. Mas conhecer várias linguagens também pode ampliar sua perspectiva, especialmente se você conhece uma linguagem de script e uma linguagem funcional, além de C # / Java.

Ainda assim, se ambos os candidatos resolverem o problema com lógica correta, o cara com a sintaxe correta provavelmente terá uma vantagem. Se alguém resolve o problema e um não, então pessoalmente eu iria com o cara que pode resolver o problema.

Ainda assim, se alguém alegar ser especialista em Java e não puder declarar uma matriz de uso, uma instrução if ou loop while, pode estar mentindo. Mas eu poderia entender se alguém é um especialista em Java, mas tem feito muito C # ultimamente e tenta fazer o mapa ou algo assim ... Além disso, se você entrar em detalhes da biblioteca, ou alguém faz myArray.length em vez de myArray .Length ou string.length () / string.Length / string.length em vez de string.length () ... Coisas menores que eu perdoaria. Ou se eles esquecerem a ordem de argumento de alguma chamada da biblioteca. Ou um erro de digitação / ponto e vírgula aqui ou ali ....

    
por 08.09.2011 / 06:08
fonte
1

Eu não vou tomar nenhum deles.

Uma boa sintaxe é inútil se o programador não é bom em resolver problemas. E uma sintaxe ruim para uma determinada língua significa que o candidato não se sente confortável com essa linguagem em particular, talvez por falta de experiência direta.

De qualquer forma, a lógica é muito mais importante que a sintaxe.

    
por 08.09.2011 / 07:31
fonte
1

Como sempre, depende. Se os erros de sintaxe forem relativamente menores, eu os ignoraria. Se eles são tremendamente terríveis, presto atenção neles e tento inferir por que eles estão lá.

Eu acho que erros lógicos são piores que erros de sintaxe, o último quase sempre pode ser capturado mecanicamente, o primeiro é menos (depende, em certo grau, da linguagem que você está escrevendo, algumas classes de erros lógicos são de inferência e verificação de tipo avançado).

    
por 08.09.2011 / 13:47
fonte
1

Isso definitivamente dependeria do cargo para o qual a entrevista é, e provavelmente também da linguagem.

Trabalhando em C ++, ter um cara gaguejando na sintaxe é assustador. C ++ está cheio de cantos escuros, as armadilhas estão basicamente em todo lugar. Um gaguejar na sintaxe significa uma má exposição à linguagem, e os iniciantes em C ++ fazem lotes de erros (para não dizer que outros não o fazem de tempos em tempos).

Para responder à sua pergunta, então:

  • Se eu precisar preencher uma posição simples de desenvolvedor, levaria o cara com uma boa compreensão da sintaxe do C ++. Ele não vai brilhar, mas não deve provocar muitas catástrofes.
  • Se eu precisar preencher uma posição de desenvolvedor principal, também não aceitarei. Um desenvolvedor líder deve ter experiência e lógica.

Há apenas uma ressalva: as pessoas reconhecem sua falta de experiência. Idealmente, as pessoas devem codificar em seu idioma de escolha, ou pseudo-código, se assim preferirem (estudantes, por exemplo).

    
por 08.09.2011 / 21:04
fonte
1

Verdadeira história, ainda me esqueço da sintaxe de eventos C # quando tenho que escrevê-los à mão. Isso acontece em entrevistas, às vezes. Eu não tenho o problema quando eu codifico em um teclado.

Escolha o cara que pode codificar, não aquele que não consegue lembrar da sintaxe.

    
por 09.09.2011 / 17:49
fonte
0

Quando escrevo código em papel / quadro branco, mesmo para uma entrevista de emprego, basicamente pulo um grande pedaço da sintaxe. Eu não uso semi-e-vírgula, eu falsifico chamadas de método, etc. Eu tenho mais chances de escrever uma frase explicando 4 linhas de código realmente básico do que o próprio código. Realmente, eu uso um pseudocódigo do tipo php, e falo sobre o que estou fazendo, enquanto estou fazendo, e anoto comentários rápidos para explicar coisas que eu transmito (que são, em teoria, nada que seja realmente importante para o programa)

Meu objetivo ao codificar em uma entrevista é mostrar como eu resolvo o problema, não ditar algo que um datilógrafo poderia inserir no Bloco de Notas e ter executado.

Resumindo: acho que você deveria considerar por que o primeiro programador tinha uma sintaxe ruim. Ele sabia muito bem, mas apenas considerou irrelevante para a entrevista, e preferiu se concentrar nas partes deste trabalho que são difíceis (lógica e resolução de problemas).

    
por 08.09.2011 / 14:55
fonte
0

A pessoa que não consegue logicamente satisfazer a resposta é desqualificada. Existem muitas pessoas na nossa indústria que produzem código de lixo que está em conformidade, mas que na verdade não faz o que deve fazer ou manipula erros ou casos extremos.

A segunda pessoa pode ou não ser desqualificada dependendo do tipo e número de erros e da dificuldade do que você espera que eles escrevam. Em termos SQL (a linguagem em que escrevo), a pessoa que não consegue lembrar a sintaxe de uma junção explícita não é qualificada para uma tarefa que exige que você consulte um banco de dados - sem exceções; Aquele que não consegue lembrar como fazer um CTE (mas quem sabe que existe e tenta usar um) não é. Em outras palavras, eu esperaria que a sintaxe fosse mais correta para o código básico que você escreve o tempo todo, mas não para as coisas feitas apenas ocasionalmente e não para a sintaxe complexa.

Se eu estivesse considerando uma pessoa que eu sabia ter excelentes qualificações em uma área relacionada, mas com um conhecimento mínimo da minha língua específica, provavelmente perdoaria mais os erros de sintaxe. Prefiro contratar um grande desenvolvedor Oracle do que um desenvolvedor medíocre de SQl Server para uma tarefa do SQL Server (é claro que uma ótima pessoa do SQL Server seria melhor) e não esperaria que essa pessoa conhecesse a sintaxe do SQL Server se pudesse me mostrar como faça isso no Oracle. Mesma coisa com as pessoas Java e C #, a pessoa com excelentes habilidades de resolução de problemas bate aquela com excelentes habilidades de linguagem, mas a pessoa com ambas as vitórias sempre (elas são difíceis de encontrar às vezes).

    
por 09.09.2011 / 20:45
fonte

Tags