Devo esperar que os graduados recentes estejam familiarizados com os conceitos básicos de programação? [fechadas]


9

Parece que há uma enorme discrepância entre o que eu espero de alguém que estudou programação por alguns anos na universidade e o que realmente sabemos.

Não sinto que estou fazendo perguntas complicadas em entrevistas. Algumas das minhas perguntas habituais são:

  • Qual é a diferença entre um tipo de referência e um tipo de valor?

    Se parece que o entrevistado realmente não entende sua própria resposta, ou se ele não conhece a terminologia que estou usando, entro em mais detalhes pedindo que ele me explique o que acontece quando escrevo int i = 0; em um método, o que acontece com o objeto o = 0, objeto o = new MyClass (), etc ...

    Basicamente, faço tudo o que posso para convencer o entrevistado a me falar sobre a pilha de chamadas, a pilha etc., e tento permanecer nos conceitos agnósticos da linguagem. Se o entrevistado me disser que fez muito C, ou C ++, ou c #, eu me aprofundarei na linguagem específica e, possivelmente, nos detalhes da implementação.

    Se necessário, pergunto ao entrevistado o que é uma pilha de chamadas ou onde são armazenados os argumentos passados ​​para uma função na linguagem imperativa de sua escolha.

    a maioria dos entrevistados não tem idéia do que é uma pilha de chamadas, quanto mais considerações sobre boxe etc.

  • Qual é a diferença entre uma classe abstrata e uma interface. Em quais casos você deve usar um sobre o outro?

    Normalmente, também peço que imaginem o design de uma pequena biblioteca com um caso de uso que visa usar alguma herança e algumas fábricas abstratas

    A maioria dos entrevistados não tem idéia do real propósito da herança. Eles geralmente conhecem algumas palavras-chave (virtuais, substituem etc.), mas não sabem quando usá-las, muito menos explicam o que é uma tabela virtual.

Mesmo que eu analise os currículos de antemão, mesmo para pessoas com 5 anos de experiência em projetos da vida real envolvendo arquiteturas complexas, eu diria que menos de 25% de todos os meus entrevistados podem responder adequadamente a essas duas perguntas. E quando digo corretamente, não quero dizer 'aprofundado' ... apenas para ter uma idéia aproximada do que é o conceito.

Em relação aos juniores, estou bem em contratar alguém que não sabe organizar muito bem seu tempo, ou alguém que não está acostumado a processos de construção industrial, por exemplo, mas tenho a sensação de que, se alguém não ouviu a palavra " depois de alguns anos estudando Ciência da Computação, ele é estúpido ou desmotivado ou escolheu sua universidade de maneira imprudente.

Você acha que eu sou muito extremista aqui? É comum aprender esses conceitos básicos depois de concluir a universidade? Você conhece pessoas que não estavam familiarizadas com isso e se tornaram muito bons engenheiros de software depois de alguns anos? E você acha que minha empresa pode ter um problema em atrair pessoas talentosas ou você enfrenta o mesmo tipo de problema em seu próprio processo de contratação?


Editar. em relação ao "tipo imediato", era apenas uma tradução literal do francês para o inglês, como costumamos fazer nossas entrevistas em francês. Eu o corrigi na minha pergunta. Mas ainda assim, acho que todos vocês entendem perfeitamente o que eu quis dizer, o que meio que faz o meu ponto de vista, não é?


4
Apenas uma observação menor, mas eu não saberia o que você quer dizer com um tipo imediato, tipo de valor, por outro lado, eu poderia explicar a você. No entanto, sinto que todos os que se formaram com algum diploma de CS devem poder responder a essas duas perguntas. Para melhorar sua pergunta, talvez você possa dar um exemplo de quão exaustivas as respostas que você espera devem ser.
sebastiangeiger

Estudar um idioma por mais de 2 anos na universidade, disputar com outras disciplinas deixa os alunos com o mínimo necessário após o término dos testes. A única coisa de que você pode ter certeza é que eles podem aprender essas informações, ou já souberam disso. Somente a experiência prática pode lhes dar permanência no conhecimento. Joel Spolsky dá um ótimo exemplo de como e por que os alunos não possuem muitas habilidades que devemos esperar que os programadores tenham em seu artigo no blog aqui - http://www.joelonsoftware.com/items/2009/10/26.html
Justin Shield,

@sebastiangeiger; você está bem atualizado!
Brann

2
Ele deve saber que não sabe quase nada. Este é o ponto chave para melhorar ao longo do tempo.
Deadalnix

De maneira interessante, Brann, todas as pessoas que responderam a essa pergunta mencionam o "tipo imediato" (erro de tradução) e dizem que não sabem o que é. Seus entrevistadores estão dizendo: "Eu não estudei esses assuntos em profundidade?" ou eles alegam ser especialistas em, por exemplo, especificidades de tempo de execução e profundo conhecimento dos compiladores?
Pindatjuh 01/08

Respostas:


15

A terminologia é uma queda comum em uma situação de entrevista.

Você faz uma pergunta ao entrevistado usando terminologia que significa algo para você, mas o entrevistado pode conhecê-lo por um termo diferente ou apenas conhecer a teoria genérica sem aplicar a idiomas ou ambientes específicos. Mal-entendidos se seguem. Nenhuma das partes é feliz.

Na verdade, o entrevistado entende perfeitamente que alguns valores podem ser armazenados diretamente em um registro e outros referenciam um pedaço de memória em outro lugar, mas porque você faz a pergunta em um domínio específico, o ponto do que você está perguntando e o que você deseja que o entrevistado fale sobre você realmente não se entende.

Talvez você tenha muitas situações em que o entrevistado clica repentinamente e diz 'Ah - é disso que você está falando' - e depois explica de maneira bastante adequada.

É um equilíbrio difícil, porque os programadores recém-saídos da universidade não terão a experiência diversificada que o desenvolvimento do mundo real em um ambiente de equipe lhes proporciona. Enquanto isso, desenvolvedores experientes geralmente não se lembram (ou até se interessam) de tudo o que aprenderam na universidade porque é simplesmente irrelevante para o uso diário.

Estes dois tipos de pessoas (sim - que é o entrevistado eo entrevistador) necessidade de aprender a se comunicar com o outro antes que você pode aprender sobre o outro. O ônus recai sobre a pessoa com maior experiência (o entrevistador) para garantir que isso aconteça.

Sem mencionar o fato de que algumas pessoas obtêm falha de memória completa nas entrevistas. Eu mesmo incluído. Lembro que me pediram para escrever um programa em C e não consegui lembrar o símbolo usado para acessar um membro a partir de um ponteiro (->) e tive que perguntar a alguém. Não foi nem para o meu primeiro emprego. Rapaz tem esse momento me atormentou nos últimos 15 anos :-)

Muito mais útil, na minha opinião, é a capacidade de se comunicar, ser capaz de resolver problemas de maneira eficiente e completa; pegar as coisas rapidamente; mostrar atitude aguçada positiva; interagir bem com outras pessoas e outros valores fundamentais.

Não desista dos entrevistados porque eles não sabem o que é um tipo imediato. Ir em frente.


@Brann - tipo imediato -> tipo de valor. observado
Roger Attrill

Bem, talvez não esteja claro o suficiente da redação da minha pergunta, mas eu realmente faço muito para garantir que não haja problemas de terminologia. Pergunto ao entrevistado o que acontece em situações específicas no idioma de sua escolha, pergunto se ele sabe o que é uma pilha de chamadas, pergunto se existem diferentes "tipos" de lembranças, pergunto onde estão os argumentos passados ​​para uma função armazenado na linguagem imperativa de sua escolha. Realmente, não acho que seja uma questão de terminologia. Às vezes, o entrevistado não tem idéia do que acontece nos bastidores quando uma aula é instanciada.
Brann

em relação à coisa "seguir em frente", é o que eu costumo fazer. Mas, na minha experiência, quando um entrevistado não sabe o que é um tipo de valor, ele também não sabe sobre sincronização de encadeamentos, nem para que servem os genéricos, etc. Então, depois de algumas perguntas, quando fica claro, o candidato não está 't apto para o trabalho, eu costumo dar-lhe alguns conselhos sobre o que aprender para um melhor desempenho em entrevistas técnicas e ... seguir em frente com o próximo candidato :)
Brann

12

Você está solicitando conhecimento específico do idioma e os termos que você usa não são usados ​​100% iguais em todos os idiomas. Eu - por exemplo - não tenho idéia do que é um "tipo imediato".

Além disso, considere que as coisas ensinadas em uma universidade não são como criar código padrão no X, mas aprender muitos conceitos subjacentes e observar vários paradigmas de programação. Em outras palavras, é muito parecido com uma carteira de motorista - embora você conheça a teoria básica, ainda precisa de muita prática real.


Eu atualizei para "tipo de valor". Mas o problema é que, se o entrevistado não entende a pergunta, geralmente eu a explico com mais detalhes e tento muitas coisas para convencer o entrevistado a me falar sobre a pilha de chamadas, a pilha, etc ... (sim, EU SEI esses são detalhes de implementação, mas ainda assim, esses são conceitos gerais que não são realmente específico do idioma IMO)
Brann

Eu acho que o conceito "pilha de chamada" é um daqueles conceitos gerais de que você está falando. Mesmo depois de refazer a pergunta de dez maneiras diferentes, para garantir que o entrevistado saiba que estou esperando que ele me fale sobre alocação de memória, pilha de chamadas, tipos de valor, etc., ainda assim, na maioria das vezes, recebo olhares em branco ...
Brann

Se eu entendi corretamente, você quer saber se o desenvolvedor conhece os indicadores e sabe o que eles fazem e como usá-los?

Não, eu não. Quero garantir que o desenvolvedor tenha pelo menos uma idéia aproximada do que acontece nos bastidores quando ele usa o recurso x ou y de seu idioma preferido. Perguntar sobre ponteiros é apenas uma maneira de fazê-lo falar sobre o que sabe sobre alocação de memória.
Brann

3
@Brann, todo o material detalhado sobre pilha de chamadas, pilha etc., é essencialmente apenas ponteiros aplicados .

3

"Eu ouço e esqueço. Vejo e lembro. Entendo." (E, na minha opinião, o entendimento leva a uma melhor retenção de memória.)

Simplificando, um graduado recente não tem muita experiência; portanto, como alguém observou, eles não terão muito mais do que o mínimo de conhecimento, independentemente de qual seja o idioma "escolhido".

Fui a uma faculdade que foi projetada especificamente para otimizar o aprendizado sobre a especialização escolhida (por exemplo, você não teria Literatura Histórica se fosse graduado em Ciências da Computação; o mais próximo que conseguiria de Literatura Histórica é Ficção Científica) e Quando terminei a faculdade, não teria sido capaz de dizer qual era a interface e muito menos a diferença para uma aula abstrata, embora tenhamos aprendido sobre abstração (e as interfaces são abundantes no .Net, a tecnologia que aprendi). Podemos ter tocado nas interfaces, mas ela se perdeu em todas as outras coisas que precisávamos saber para passar na aula. Não foi até o meu primeiro emprego fora da faculdade que eu aprendi sobre interfaces, particularmente de qualquer maneira significativa.

Você mencionou fazer entrevistas em francês, o que torna óbvio que estamos em países diferentes, portanto sua milhagem pode variar, mas aqui nos EUA as faculdades estão notoriamente atrasadas no que diz respeito à tecnologia. Portanto, a menos que você esteja lidando com idiomas maduros (C / C ++, COBOL etc.), também é bem provável que o que você esteja usando há anos não esteja disponível na versão em que os alunos aprenderam. Por exemplo, o .Net 3.0 introduziu o Entity Framework, o WPF, o WCF e uma série de outras coisas interessantes, mas até minha escola ainda estava presa no .Net 1.1 e 2.0 (o que significava estar presa ao ADO.NET e nem mesmo aprender sobre Objeto Mapeamento Relacional). Uma escola que usa PHP pode ficar presa no PHP (não OOP) 4.

Lembre-se também de que um aluno precisa coletar uma tonelada de informações que geralmente são usadas apenas por um curto período de tempo. Conceitos "avançados", como abstração, geralmente são ensinados no final da aula, onde o aluno pode ter apenas uma semana para brincar com ele, enquanto enfrenta as outras aulas que ele / ela tem que frequentar e, possivelmente, parte superior de um trabalho de meio período ou período integral. Combine tudo isso e é uma maravilha que a pessoa possa se lembrar de qualquer coisa , muito menos manter tudo reto.

Nos EUA, pelo menos, muitas vezes se supõe que um graduado recente não saiba nada além do básico genérico (talvez a diferença entre passar por valor e passar por referência), porque se entende que a teoria genérica e a solução de problemas são a parte principal de escola, não aprendendo os meandros de um determinado idioma.

Eu recomendo usar as perguntas que você teve mais como um indicador do que você precisará ensinar / re-ensinar (lembre-se, é perfeitamente possível que elas simplesmente não tenham aprendido o termo que você está tentando usar, mesmo se você acha que é onipresente), ao contrário de o entrevistado ser ou não "inútil". Combine isso com a avaliação de como eles estão dispostos a aprender e como são suas habilidades gerais de resolução de problemas (sério, dê a eles um enigma para resolver e ver como eles o fazem), e você pode muito bem ter uma futura estrela do rock que você pode ter passado despercebido porque eles não sabiam o que você queria dizer com "pilha de chamadas".


Bem, na França (e eu suspeito que seja o mesmo na maioria dos lugares), todo currículo de CS inclui alguma codificação obrigatória em C (ou idiomas semelhantes) quando se aprende sobre alocação de memória entre outras coisas) e alguma codificação obrigatória em C ++ / java / .net (onde se aprende sobre POO). Além disso, você também faz muitas coisas que podem abranger muitos campos, mas se alguém se forma sem saber o que é um método virtual, significa que ele não levou seus estudos muito a sério ... Eu certamente sabia o que foi quando me formei ... O que você acha de um estudante de matemática que não sabe o que é uma série?
Brann

@Brann - De acordo com minha pesquisa (rápida) sobre o que é Ciência da Computação (assim como minha compreensão anterior), o CS não é um grande programador. Sim, tem programação, mas não é necessariamente o foco principal. Aliás, "Ciência da Computação" é tão ampla e bastante vaga que pode variar de escola para escola. Stanford está entre as principais escolas de CS dos EUA e, para as listas de seleção de cursos de outono e inverno ( www-cs.stanford.edu/courses ), possui menos de meia dúzia de cursos que parecem focar na programação real (não apenas teoria do programa), de cerca de 50 aulas.
Shauna

Isso significa que é provável que um aluno use um determinado idioma por um semestre ou dois e depois não o toque pelo resto de sua carreira estudantil. Além disso, ele também está aprendendo sobre robótica e programação genética, que são muito diferentes da programação padrão de desktop / sistemas embarcados / firmware.
Shauna

O que você pensaria de um estudante de matemática que não sabe o que é uma série? - Depende do tipo de matemática em que o aluno se especializou e no que ele realmente está trabalhando. Novamente, é perfeitamente possível que o aluno tenha aprendido (e, portanto, tecnicamente sabe o que é), mas simplesmente o tenha esquecido, porque ele nunca o usa em seu trabalho diário com criptografia ou matemática discreta. Matemática e programação são geralmente considerados tópicos do tipo use-ou-perca-it.
Shauna

3

Você tem várias visualizações estreitas e as assume implicitamente.

  • Parece que há uma enorme discrepância entre o que eu espero de alguém que estudou programação por alguns anos na universidade e o que realmente sabemos.

    Que eu saiba, não há universidade, onde as pessoas estudam programação por alguns anos. As universidades oferecem cursos de ciência da computação, dos quais a programação é um aspecto.

  • Qual é a diferença entre um tipo de referência e um tipo de valor?

    Regra prática: se o Lisp pode fazer sem a distinção, é apenas desorganização;)

  • Basicamente, faço tudo o que posso para convencer o entrevistado a me falar sobre a pilha de chamadas, a pilha etc., e tento permanecer nos conceitos agnósticos da linguagem.

    Falar sobre conceitos independentes de linguagem é uma boa ideia. Nem a pilha nem a pilha são independentes de idioma.

  • Se o entrevistado me disser que fez muito C, ou C ++, ou C #, eu me aprofundarei na linguagem específica e, possivelmente, nos detalhes da implementação.

    Todos esses idiomas têm especificações. A implementação é indefinida pelo idioma. C e C ++ podem ser compilados de forma cruzada usando o LLVM para executar no Flash Player ou em qualquer tempo de execução JavaScript. Isso faz com que suas suposições sobre alocação de pilha e pilha sejam anuladas.
    Com o C #, é praticamente o mesmo. O C # é JITed antes da execução com muita otimização, o que pode ser feito. Variáveis ​​locais, que são capturadas por fechamentos, acabam acabando no heap, em vez da pilha, enquanto a análise de escape permite armazenar objetos locais do escopo (que normalmente devem ir para o heap) para serem armazenados na pilha. A alocação adequada de registros também reduzirá bastante a necessidade de alocação de pilha.

  • Se necessário, pergunto ao entrevistado o que é uma pilha de chamadas ou onde são armazenados os argumentos passados ​​para uma função na linguagem imperativa de sua escolha.

    O que você perguntaria a alguém que possui apenas uma vasta experiência em programação com Haskell? : P

  • A maioria dos entrevistados não tem idéia do que é uma pilha de chamadas, quanto mais considerações sobre boxe etc.

    A idéia básica por trás do autoboxing é que as primitivas também podem ser tratadas como objetos (ou pelo menos valores que tipo podem ser descobertos em tempo de execução). Em relação a essa abstração, existem três tipos de idiomas:

    1. aqueles onde não existe. Suponho que Objective-C é o exemplo canônico.
    2. aqueles onde ele realmente se mantém
    3. aqueles onde existe, mas não se mantém. Eu acho que Java é o melhor exemplo (eu diria que já foi corrigido agora).

    Não vejo por que as pessoas não deveriam usar idiomas da categoria 1 (na verdade, é uma boa ideia). Não vejo por que as pessoas que usam idiomas da categoria 2 realmente se incomodam. E acho que todo mundo que usa uma linguagem da categoria 3, ou seja, aquela em que um recurso semântico principal é simplesmente quebrado, está usando a linguagem errada.

  • Qual é a diferença entre uma classe abstrata e uma interface. Em quais casos você deve usar um sobre o outro?

    Agora isso é altamente subjetivo e realmente depende do idioma. C ++ não possui interfaces. Objective-C não tem classes abstratas. Eu argumentaria que qualquer linguagem que possua ambas as necessidades precisa ser redesenhada. Muitas linguagens modernas usam características, mixins, categorias, funções e construções semelhantes para fornecer soluções muito mais limpas para reutilização de código do que a herança de implementações parciais. Linguagens baseadas em protótipo não têm classes de qualquer maneira.

    Em última análise, este é um assunto difícil e contestado. Uma entrevista dificilmente é o lugar certo para resolver essa questão e eu realmente não diria que alguém se candidatando a uma posição júnior por não me dar uma boa resposta.

  • A maioria dos entrevistados não tem idéia do real propósito da herança. Eles geralmente conhecem algumas palavras-chave (virtuais, substituem etc.), mas não sabem quando usá-las, muito menos explicam o que é uma tabela virtual.

    Existem várias linguagens orientadas a objetos que não usam herança ou vtables clássicas.

Meu conselho:

  • Tenha muito cuidado ao assumir que tudo o que você sabe sobre programação é realmente um conceito básico de programação. Você pode assumir que todo bom programador tem a curiosidade de descobrir as respostas para essa pergunta. No entanto, você não pode assumir que quem os conhece é bom. Costumo acreditar que aqueles que dão muita importância a esses detalhes provavelmente não verão a floresta para as árvores.
  • Preocupe-se menos com os detalhes da implementação. Linguagens de programação são destinadas a criar abstrações. Você precisa pensar em termos dessas abstrações e apenas em termos delas. Um bom código não é escrito com relação aos detalhes de implementação de um idioma. Ele foi escrito para melhor incorporar a semântica da sua solução nos recursos de idioma. Se você conseguir fazer isso, seu código não só se tornará robusto, mas também legível para qualquer pessoa familiarizada com o idioma e mais fácil de otimizar para um compilador.
  • Saber as respostas que você espera não é tão importante. Compreendê-los é. Se alguém os conheceu, porque os leram em um livro ou o professor dele disse a eles, então isso terá pouco valor. Na verdade, você pode explicar todas essas coisas para si mesmo em questão de horas.
    O importante é entender como esses fatos simples e isolados podem ser aplicados à engenharia de soluções flexíveis e sustentáveis ​​para problemas complexos.

Para chegar à pergunta real:

E você acha que minha empresa pode ter um problema em atrair pessoas talentosas ou você enfrenta o mesmo tipo de problema em seu próprio processo de contratação?

Todas as empresas têm problemas para atrair pessoas habilidosas, exceto talvez os grandes players. Isso é porque há alguns deles. E por causa do pressuposto de que a universidade torna as pessoas hábeis. Não faz. Isso os torna conhecedores (supondo que o aluno e a universidade sustentem sua parte na barganha). Experiência é o que torna as pessoas hábeis.

Alguns já adquiriram experiência antes de ingressar na universidade e o fazem durante os estudos. Porque eles gostam de programar e porque, quando aprendem alguma idéia nova durante um curso, tentam ver como podem usá-la, a primeira coisa que voltam para casa. Esse é o tipo de pessoa que você gostaria de contratar. Mas há alguns deles.
É a paixão pela programação e o auto-aperfeiçoamento e sua busca que torna os programadores bons. Em tempo.

Eu acho que o que você deve perceber é que, infelizmente, a maioria das pessoas entra e sai da universidade sem experiência em programação suficiente.
Ao mesmo tempo, nossa indústria precisa muito de programadores experientes. Portanto, acredito que é a missão da nossa indústria realmente tentar intervir. E entrevistando candidatos para cargos juniores, o que você está procurando realisticamente são pessoas dispostas a aprender e melhorar. E você deve escolher com cuidado, porque precisará investir muita energia e não quer que isso seja desperdiçado.

Pense nisso como contratar um sangue novo para se tornar um piloto para sua equipe de corrida: um bom piloto tem um conhecimento suficiente da mecânica para fazer o melhor uso possível do carro, mas esse conhecimento por si só não serve para nada (não é nem um pouco cabeça) começar). O que você está procurando é alguém disposto a trabalhar duro em seu próprio aprimoramento e bem com sua equipe.


1

Independentemente do termo "tipo imediato" do qual eu não tenho idéia (tipo de valor? OK, não tinha certeza, obrigado pela atualização), acho que você está certo sobre suas perguntas e totalmente não é extremista. Estas são perguntas respondíveis se alguém estiver saindo da escola. Ainda assim, não vou demitir os candidatos imediatamente, ainda há alguns que podem ter potencial porque querem aprender.

Para continuar com a analogia da carteira de motorista: algumas pessoas não se importam com o que acontece quando inserem a chave (ou pressionam o botão "Iniciar"). Eles apenas fazem isso e dirigem. Isso não significa que eles também não valem nada, apenas que levará tempo para chegar ao estrelato ;-)

Apenas uma observação pessoal sobre o grau / diploma: Atualmente, estou trabalhando com pessoas com formação em bioquímica e industrial que têm alguns anos de experiência no campo de TI e também com alguns "experientes" com formação em CS, e acho que são os mais conhecedores sobre como o motor do veículo funciona? Sim, não são os caras que estudaram CS! Então, estou apenas experimentando o fato de que o diploma nem sempre importa!


2
Algumas pessoas podem gastar tanto tempo mexendo no veículo para chegar à velocidade máxima, que os mais lentos terminam antes mesmo de começar.

bastante justo :-)
Jalayn

Eu concordo totalmente com pessoas vindas de outros campos além do CS. mas para alguém que realmente possui um grau CS, sem saber o que é um tipo de valor é parece um pouco preocupante para dizer o mínimo ...
Brann

@ ramn, eles podem não conhecer o termo , mas ainda assim sabem que o posicionamento físico dos dados mantidos pela variável é colocado no segmento de dados e não no heap ou na pilha. Qual idioma você usa, pois parece ser importante?

Eu estou usando c #. E eu concordo que conhecer esse tipo de detalhes de implementação provavelmente não é tão importante nesse contexto (embora em algumas situações específicas possa ser). O problema é que não estou tentando encontrar um especialista em ac #. Estou tentando encontrar alguém inteligente o suficiente e motivado o suficiente para se tornar realmente bom em codificação em c #. Se um não se importava de aprender / entender o que um tipo de valor, que tendem (talvez erradamente) a pensar que ele perde um dos thoses duas qualidades, pelo menos
Brann

1

Geralmente, não faço perguntas específicas sobre terminologia ou definições durante as entrevistas. Como outras respostas observaram, as pessoas têm termos diferentes para conceitos diferentes e, embora possam entender conceitualmente o assunto, podem não ser capazes de transmitir isso a você.

Com os juniores, estou intensamente focado em seus estágios ou projetos escolares. Faço perguntas sobre perguntas sobre eles, deixo-os articular respostas e depois começo a mergulhar mais fundo no envolvimento real no projeto, no que aprenderam e no que sentiram.

Geralmente, se a pessoa era de peso morto no projeto, ela geralmente não pode me dar respostas satisfatórias, por isso é geralmente fácil de dizer. Apenas tome cuidado para não confundir nervoso e introvertido por desinteressado e não envolvido.

Ser capaz de determinar o bom candidato que é tímido e introvertido é um pouco difícil, mas a cultura em que trabalho não seria boa para um desenvolvedor introvertido e tímido, portanto, se eles não conseguirem manter uma conversa produtiva e detalhada comigo, eles não são um bom ajuste.


1
 or chose his university very unwisely.

Isso é muito injusto. Quando você é estudante, tudo o que você pode fazer é escolher a universidade mais bem classificada em que suas notas o levarão, ou talvez aquela que anuncia que permite que você brinque com cães robóticos que jogam futebol. Nada mais. Você só pode avaliar um curso universitário depois de o ter feito, depois desaparecer e trabalhar na indústria por alguns anos e construir alguns projetos não triviais.

Mesmo se você exibisse um enorme letreiro de néon em todos os cursos dizendo "NÃO ENSINAMOS A PILHA DE CHAMADA", o que você espera que os alunos façam a respeito? Passe meses pesquisando para que eles possam realmente entender o que isso significa e quanto eles precisariam de alguém que o ensinasse? Para todo curso com toda combinação de sinais?

As pessoas não escolhem sua educação, realisticamente.


0

Ao entrevistar os recém-formados, mantenho os tópicos listados em seu currículo. Se eles usassem Java, eu perguntarei a eles sobre Java. Se eles usaram o Blub, passo meia hora lendo sobre o Blub e pergunto sobre isso. Mas eu sempre pergunto usando as palavras-chave do idioma. Se for Java, perguntarei sobre "estende" e "implementa", mas não "subclasse" e "herda". Eu espero que os novos graduados possam falar sobre algum código que eles escreveram, sejam capazes de resolver um simples problema de programação e tenham uma noção das estruturas básicas de dados (tabelas de hash e árvores).


0

Como diretor que projetou o processo de entrevista, posso lhe informar o que nossa empresa espera dos novos graduados: espero pessoas que possam ler a documentação e aplicar conhecimentos. Portanto, temos algumas tarefas muito práticas que pedimos que realizem. Essas são tarefas simples de codificação, não muito mais difíceis do que o exercício médio da turma da faculdade (desenvolvedores "bons" experientes podem eliminá-lo em cerca de 15 minutos). O candidato recebe uma estação de trabalho com acesso à Internet, um compilador (no nosso caso, o visual studio) e arquivos de ajuda.

Se eles não puderem escrever código nessas condições, não serão considerados como contratados. Simples assim. A desculpa "bem, eu não conheço o idioma" nunca chegou a mim, porque todo candidato que vem aqui entrevistar sabe que haverá um teste, eles conhecem os idiomas e as ferramentas que usamos no início. Você pode baixar o visual studio express em casa e fazer algumas noções básicas antes de entrar e passar no teste de nível básico, aqueles que não se incomodam ... bem, é isso que eu chamo de bandeira vermelha.


Esta é a melhor maneira de encontrar alguém que afirma que sabe que algo realmente o conhece bem o suficiente para usá-lo. Perguntar o que um termo significa, algo que fora da sala de aula, quase nunca é usado, é meio inútil. Quero dizer, nos últimos 18 meses, nunca tive uma discussão sobre tipos de referência que possam ter reclamado sobre algo que envolvia indicadores.
Ramhound 17/10/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.