Eu vejo alguns problemas aqui.
O primeiro é supor que um graduado médio em ciência da computação saiba, bem, qualquer coisa. Eles não. Francamente, estou agradavelmente surpreso quando vejo um graduado em ciência da computação que sabe como instalar e configurar o Visual Studio . Caramba, recentemente trabalhei com um cara que afirma ter mais de cinco anos de experiência na pilha da Microsoft escrevendo .NET código que não conseguia descobrir o que TFS era ou como se conectar.
O segundo é o seu pool muito limitado. Também temos candidatos fazendo um teste de programação. Existem cinco "programas" separados que eles precisam escrever. Eles fazem isso em casa e enviam o código. Os testes são extremamente simples (sem banco de dados, sem dependências externas) e podem ser facilmente feitos usando a versão Express do Visual Studio. Os testes são facilmente concluídos por um cara mais velho em cerca de 30 minutos. Note que geralmente só fazemos isso para recém-formados em até três anos de experiência de trabalho verificável.
O que quantificamos é que cerca de 70% dos que receberam o teste simplesmente nunca voltaram para nós. Cerca de 15% de turnos em coisas que não serão compiladas, geralmente devido a erros de sintaxe flagrantes (por exemplo, falta de ;
). Outros 10% compilam, mas não executam as ações necessárias.
Isso deixa um enorme 5%. Neste ponto, nem estamos considerando condições como inserir um caractere alfa como entrada quando um valor numérico é necessário. É puramente dado um conjunto muito limitado de X como entrada, o aplicativo faz a saída apropriada. Além disso, esses números vêm de cerca de 500 candidatos nos últimos quatro anos: mantivemos estatísticas porque queríamos saber.
Se fôssemos examinar mais a estrutura de código e as técnicas defensivas de codificação, como descartar adequadamente recursos não gerenciados ou usar as instruções try .. catch
, quase ninguém passaria.
A questão, claro, é por quê?
Por que uma criança com um diploma neste campo de uma universidade de quatro anos não consegue realizar tarefas simples de programação? A resposta é que as faculdades estão completamente fora de contato com as necessidades do negócio e ficam muito atrasadas do que consideramos estado da arte. Há 10 anos, os padrões de codificação eram tais que a segurança era algo que você fazia depois do fato; e os testes de unidade ainda não estavam em voga. Considerando que a segurança de hoje estará melhor na vanguarda de sua mente com todos os recursos ou aprimoramentos. Apenas lembre-se: a maioria dos professores nunca trabalhou nessa área ou não trabalhou nela por muito tempo. Uma vez que você sabe disso, você começa a entender por que eles estão tão atrasados. Pior, alguns desses professores gastam muito tempo com uma tecnologia em particular ( Java , PHP , seja o que for) e não discutem questões fundacionais sérias como estrutura de código ou abordagens aceitáveis (e PORQUÊ!).
Apenas um exemplo paralelo. Um graduado recente estava me contando sobre algumas de suas experiências ao escrever um sistema operacional móvel para uma de suas aulas, mas ele não conseguia explicar, nem em termos básicos, como um servidor da Web funcionava. Ele simplesmente não sabia. 15 ou 20 anos atrás era provavelmente o momento certo para entender como criar um sistema operacional. Hoje não muito. No entanto, essa era uma classe obrigatória, quando uma aula sobre programação defensiva seria muito mais útil para eles e para o mundo exterior.
Então, o que fazemos?
Fora desses 5%, vamos entrevistar um pouco mais para ter uma idéia de sua personalidade e ajuste. Então nós escolhemos os "melhores" com total conhecimento de que vamos gastar cerca de seis meses "reprogramando" eles para se livrar da porcaria que seus professores os preencheram.