Como muitas outras crianças nascidas no Canadá, estudei no Conservatório Real. Este não é apenas um edifício físico onde você pode estudar e se apresentar, mas também um currículo padronizado, além de professores certificados, disponíveis em quase todas as cidades. Este último realiza exames regularmente em todo o país, para que os alunos possam avançar para o próximo nível de educação musical.
O exercício é necessário para o treinamento.
Cada exame tem um componente técnico e um desempenho de demonstração. Vamos falar sobre a parte técnica. Para obter uma avaliação, você deve poder executar vários exercícios com seu instrumento. No meu caso, no piano, eram escalas, arpejos, etc. Eu nem me lembro de todos eles.
À medida que você aprende, os exercícios se tornam mais complexos e você precisa executá-los em uma tecla mais alta, até que no último exame você seja solicitado a concluir qualquer exercício em qualquer tecla.
Após 14 anos estudando piano, depois de ter sido aprovado no exame final, eu pude realizar qualquer exercício em qualquer tecla. Mas depois de mais 14 anos, nem me lembro dos nomes de todos esses exercícios. Posso memorizar uma passagem de um trabalho e reproduzi-lo em alto nível? Sim, não tem problema!
Exercício não é necessário na prática
Aposto que de todos os que estudaram no conservatório e se tornaram músicos profissionais, muito poucos serão capazes de realizar um exercício arbitrário. Sim, alguns desses exercícios são necessários na preparação para a apresentação, mas apenas parcialmente, e são lembrados apenas quando é realmente necessário.
Nesta semana, quando eu estava na tarefa de programação Hackerrank, tive que obter um tutorial empoeirado sobre estruturas de dados e algoritmos para escrever uma classificação de mesclagem .
No começo, senti-me extremamente desconfortável, mas depois veio uma ideia: esta é a mesma história dos exercícios de piano no Royal Conservatory. Sim, uma vez que eram importantes, e amontoamos diferentes tipos de classificação na ciência da computação. Mas o crescimento da experiência profissional consiste em entender quando e onde aplicar algoritmos específicos, lembrando a implementação apenas se necessário. Eu sabia o que era a classificação por mesclagem, sabia como encontrar seu código. Eu simplesmente não conseguia lembrar dele.
Alguém argumentará que o desenvolvedor sênior deve ser capaz de escrever a classificação sem recorrer a materiais de referência, porque esses são os princípios básicos. Mas eu simplesmente não acredito nisso. Uma pessoa torna um músico melhor a capacidade de tocar gama perfeitamente a qualquer momento? Claro que não! Além disso, afirmo que, aperfeiçoando suas habilidades em um exercício de treinamento, você perde tempo que poderia gastar na solução de problemas aplicados.
Exercícios não devem ser usados ao contratar
Você pode imaginar que um músico profissional, que se apresentou brilhantemente no palco mais de uma vez, seria solicitado a tocar escalas em uma entrevista? E depois disso, sem ir para a passagem da passagem, eles diriam: "Nós ligamos de volta", porque ele não lidou perfeitamente com o básico.
Tais pensamentos me deixam enjoado. Mas vivemos em 2019, quando isso acontece o tempo todo em entrevistas no campo da programação.
As empresas usam serviços de terceiros, como o HackerRank, como filtro para rastrear os candidatos. Muitos ótimos desenvolvedores abandonam porque não praticam escrever classificações regularmente. As empresas reclamam da falta de pessoal qualificado no mercado de trabalho. E repete uma e outra vez.
A propósito, nem estou falando de uma entrevista no escritório. Quero dizer, o estágio inicial da contratação, quando o RH geralmente envia um link para várias tarefas com tempo limitado no HackerRank. E, tendo recebido o resultado após 10 a 15 minutos, decide se deseja continuar a comunicação. Essa abordagem para contratar programadores é um problema em nosso setor.
Então, como você avalia as qualificações de desenvolvedor sênior?
Minha experiência em entrevistar candidatos sugere que não há nada melhor do que uma sessão de programação em pares. Passe uma hora e meia desenvolvendo com uma tela comum. Trabalhe juntos em seu ambiente, com suas ferramentas, em seu projeto. Alterne e contorne o candidato, com suas ferramentas, em alguns de seus códigos. Você entenderá rapidamente o nível da pessoa nas perguntas que ela fizer.
E as verificações de memória para algoritmos são completamente desnecessárias.