Habilidades de desenvolvedor Scala

Publicado: Última actualização:
Scala: perguntas do engenheiro de software para entrevistas

Pode ser incrivelmente difícil encontrar o desenvolvedor Scala certo. Você tem que procurar por montanhas de currículos enviados por candidatos e recrutadores para encontrar o certo. Mas no final das contas, é difícil dizer quais destes potenciais candidatos serão capazes de fazer o trabalho e quais simplesmente não são os adequados para a sua organização. Para facilitar um pouco o seu trabalho, escrevemos este artigo para explicar exatamente o que você precisa fazer para encontrar o desenvolvedor Scala certo.

1. O que você precisa saber sobre o Scala para contratar desenvolvedores Scala

Scala (/ˈskɑːlɑː/ skah-lah) é uma linguagem de programação de uso geral que fornece suporte à programação funcional e um sistema de tipo estático forte O design do Scala começou em 2001 na École Polytechnique Fédérale de Lausanne (EPFL) por Martin Odersky. Ela deu continuidade aos trabalhos sobre Funnel, uma linguagem de programação que combina idéias de programação funcional e redes de Petri. Odersky trabalhou anteriormente em Java genérico, e javac, o compilador Java da Sun.

O Scala é utilizado principalmente no desenvolvimento de backend em aplicações altamente simultâneas.

Principais vantagens do Scala:

  • Os objetos são imutáveis "por padrão" (por exemplo, todas as coleções)
    Isso torna a linguagem muito menos susceptível a erros, particularmente em relação aos fios.
  • Um sistema de tipo avançado
    Mais tipos significam que Scala pode realizar mais tipos de tarefas do que linguagens com sistemas mais básicos, como o Java.
  • Programação funcional, orientada a objetos e imperativa são todas possíveis
    Tarefas diferentes requerem diferentes estilos de programação. Enquanto outras linguagens só funcionam com um ou dois estilos de programação, Scala trabalha com todas as três. Isto significa que um desenvolvedor trabalhando no ambiente Scala pode realizar mais tipos de tarefas sem ter que mudar para um ambiente de programação diferente.

2. O que é importante para o IT Recruiter saber sobre o Scala?

Acima de tudo, há três coisas super importantes que qualquer recrutador técnico deve saber quando está tentando preencher uma posição de desenvolvedor Scala.

  1. Atualmente, Scala é o mais popular linguagem de programação funcional. Embora tenha uma série de aplicações diferentes, provavelmente o seu uso mais popular neste momento está em Big Data.
  2.  Scala usa o mesmo ambiente de tempo de execução do Java chamado de máquina virtual Java. Por causa disso, ele é completamente interoperável com Java. Essa é uma maneira sofisticada de dizer que você pode usar bibliotecas Scala para aplicações Java e bibliotecas Java para aplicações Scala. Isso dá aos desenvolvedores Scala uma enorme vantagem sobre outros desenvolvedores porque eles podem acessar o incrivelmente grande e diversificado ecossistema Java.
  3.  A única coisa que pode adiar os desenvolvedores do Scala é que tem uma sintaxe mais complicada em linguagens como Java ou C#. Como resultado, a curva de aprendizado pode ser particularmente íngreme, o que significa que pode ser difícil encontrar um desenvolvedor Scala qualificado.

(Em março de 2015, Raffi Krikorian, ex- VP do grupo de Engenharia da Plataforma no Twitter, declarou que não teria escolhido Scala em 2011 devido à sua curva de aprendizado. No mesmo mês, o LinkedIn SVP Kevin Scott declarou sua decisão de "minimizar a dependência do Scala". Em novembro de 2011, Yammer se afastou do Scala por razões que incluíam a curva de aprendizado para novos membros da equipe e incompatibilidade de uma versão do compilador Scala para a próxima) Fonte: Wikipédia

Ao procurar por desenvolvedores Scala, você tem que entender que você vai estar procurando por uma elite que esteja disposta a superar as barreiras de entrada que o idioma coloca.

3. Como verificar as habilidades Scala na fase de triagem

3.1. Triagem técnica das habilidades Scala com base no currículo do candidato

Antes de fazer qualquer tipo de triagem técnica mais ampla, vale a pena verificar o interesse de seus candidatos de desenvolvimento em programação funcional. Isto significa como eles estão interessados em aprender novas linguagens, bem como linguagens funcionais como Haskell, F sharp, e OCam.

Glossário Scala para recrutadores de tecnologia

Estruturas e bibliotecas Scala Backend: Akka, Finagle

Grandes dados: Centelha, Escalada

Web: Brincar, Levantar, Scalatra

Utils: Scalaz, Gatos

Ferramentas de teste Scala ScalaTest, Specs2
Ferramentas de construção Scala sbt (Ferramenta de Construção Simples)

Relações entre as respectivas versões da tecnologia Scala:

A maioria da versão 2.12 é usada com um contingente menor de desenvolvedores usando a versão 2.11. A versão 3.0 está programada para ser lançada em 2020. Estas versões principais do Scala não são compatíveis com binários - você precisa recompilar todas as bibliotecas, mas versões menores (2.11.1, 2.11.2 etc.) são; todas as versões são compatíveis com fontes.

O significado de um certificado Scala para avaliar as habilidades de um desenvolvedor Scala

Há muitos cursos disponíveis. Os mais populares são oferecidos pela Lightbend, que também emite certificados. Mas muitas pessoas estão fazendo a trilha Coursera Scala, que é desenvolvida pela Centro Scala.

Confira também estes cursos:

Embora os certificados possam mostrar alguma aptidão, há muitos mais fatores que determinam se um candidato será o desenvolvedor Scala certo para você.

3.2. Triagem técnica das habilidades Scala durante uma entrevista por telefone/vídeo

Normalmente, após uma tela de currículo, o próximo passo no processo de contratação é ter uma entrevista por telefone ou vídeo com um candidato. A principal vantagem desta parte do processo é poder perguntar questões comportamentais para ver como o seu candidato reagiria em certas situações da vida real. Muitas vezes esta é a principal decisão sobre se um candidato será convidado no local para uma entrevista técnica individual, por isso é importante, nesta fase, fazer as perguntas técnicas certas.

É claro que estas perguntas podem variar dependendo dos tipos de habilidades para as quais você está recrutando. Dito isto, as perguntas aqui devem ser úteis para preencher qualquer posição de desenvolvedor Scala.

P1: O que é a correspondência de padrões?

Por que você deveria perguntar isso: É importante saber porque o Scala tem um mecanismo de correspondência de padrões gerais incorporado. Este mecanismo permite que você faça a correspondência de qualquer tipo de dado com uma política de primeira correspondência.

P2: O que são classes de casos?

Por que você deveria perguntar isso: As aulas de caso são exclusivas de Scala. Na verdade, são apenas aulas regulares que têm algumas condições extras adicionadas a elas. Elas são imutáveis por padrão, decomponíveis através da combinação de padrões, comparadas pela igualdade estrutural ao invés de por referência, e sucintas para instanciar e operar.

P3: Quais padrões orientados a objetos são implementados no Scala?

Por que você deve perguntar isso: Há três padrões principais orientados para o objeto que um desenvolvedor Scala deve conhecer. Com Singleton, Scala fornece a realização direta do padrão Singleton na linguagem. Padrões de objetos de valor são possíveis usando Tuples, tipos, ou classes de casos. Finalmente, no Scala, há uma palavra-chave preguiçosa que oferece inicialização preguiçosa

P4: O que é uma característica e existe algum equivalente em Java?

Por que você deveria perguntar isso: As características são semelhantes às interfaces em Java e parcialmente implementadas.

Além das perguntas técnicas específicas, há uma série de perguntas comportamentais que serão úteis para determinar como o seu candidato irá agir em determinadas situações.

P5: Quais tecnologias você teve experiência comercial nos últimos 2 anos? Quais foram as suas responsabilidades? Qual foi a sua maior conquista?

Por que você deveria perguntar isso: Nem todas as habilidades de programação são criadas de forma igual. Os desenvolvedores muitas vezes têm uma grande variedade de interesses e têm se dedicado a uma série de tecnologias diferentes, mas é importante determinar quais eles têm um conhecimento funcional de trabalho e em quais eles simplesmente se dedicaram. Esta questão também ajudará a mostrar como eles terão usado a tecnologia para terrenos comerciais.

P6: Quais bibliotecas Java de código aberto você considera valiosas e por quê?

Por que você deveria perguntar isso: Mencionado antes de Scala é interoperável com Java. Como o Java tem muito mais bibliotecas para se basear na eficácia do seu motor Scylla ano dependerá de quantas dessas bibliotecas eles estão familiarizados com. Esta pergunta lhe dará uma visão de quais bibliotecas fora do Scala o seu candidato está familiarizado e como eles o usaram no passado.

P7: Eu notei que você listou o quadro X no seu currículo. Qual é a sua opinião sobre isso? É uma boa escolha?

Por que você deveria perguntar isso: O verdadeiro valor de um desenvolvedor não é simplesmente o seu conhecimento da língua para a sua capacidade de executar um projeto de forma eficiente. Os melhores estão familiarizados com Uma série de ferramentas e recursos que Multiplicam o escopo do que eles são capazes de Alcançar. esta pergunta vai chegar ao cerne de quão confortável o desenvolvedor está usando estes recursos externos para sobrecarregar seu desenvolvimento de software.

3.3. Triagem técnica de habilidades Scala com um teste de codificação online

Telas telefônicas podem lhe dar muitas informações, assim como um exame completo do currículo de um candidato, mas no final do dia, você precisa ser capaz de determinar quais são as habilidades de codificação do seu candidato. Afinal de contas, nenhum dos métodos de triagem mencionados até agora e na verdade lhe dizem se o seu candidato pode codificar ou não. Para isso, você precisa de um teste de codificação.

Existem várias maneiras atualmente oferecidas para fazer testes de codificação. Vão desde entrevistas no quadro branco até plataformas de testes algorítmicos. Infelizmente, a maioria destes métodos não lhe dá a informação necessária para tomar uma decisão informada. Estruturas de dados e algoritmos são os blocos básicos de construção do software mas, ao mesmo tempo, têm pouco a ver com o trabalho diário de um desenvolvedor de software. Seria como pedir a um operador de retroescavadeira para cavar um buraco com uma pá. Tecnicamente, você está testando o quão bem eles podem mover a sujeira, mas o que você realmente quer saber é o quão bem eles podem usar as ferramentas disponíveis para cavar um buraco gigante de forma eficiente dentro de um prazo apertado.

Da mesma forma, você não quer perder tempo em seu processo de recrutamento testando habilidades básicas. Em vez disso, você quer ver como um desenvolvedor usa todas as ferramentas e recursos disponíveis para oferecer soluções eficientes e dentro do prazo. Provavelmente, a melhor maneira de fazer isso é com um teste de amostra de trabalho. Já discutimos em outros lugares neste blog como fazer um teste da amostra de trabalho mas aqui estão os principais pontos que você deve levar em consideração ao dar um teste de amostra de trabalho a um desenvolvedor Scala.

  • Você não deve apenas testar as competências linguísticas, mas também o conhecimento das estruturas e bibliotecas que a sua empresa utiliza
  • Em vez de confiar em perguntas de múltipla escolha, concentre-se nas tarefas de programação.
  • Sempre que possível, use uma tarefa real usando a sua própria base de código, uma vez que isso dará ao seu candidato o gosto do tipo de trabalho que ele estará fazendo quando começar a trabalhar para você
  • Trate o teste como se fosse um dia normal de trabalho. Isso significa dar ao candidato acesso a bibliotecas altas, estruturas e recursos gerais que ele usaria em um dia normal. Você não está testando a capacidade deles de memorizar fatos. Ao invés disso, você quer saber se eles podem criar uma solução incrível

A principal vantagem deste tipo de plataforma é que os testes são entregues automaticamente para que o candidato possa fazer o teste mais tarde a partir de qualquer parte do mundo. Não só que a plataforma avalia automaticamente a qualidade do código, como também a potência da solução, sem qualquer contributo de qualquer pessoal técnico da sua parte. É uma forma eficiente de obter uma leitura eficaz sobre como o seu candidato pode fazer o trabalho e é incrivelmente conveniente tanto para o seu pessoal como para o candidato. Isto significa que menos candidatos saem do seu pipeline e menos horas são desperdiçadas tendo seus caros desenvolvedores trabalhando no recrutamento.

Autor - Adam Warski

foto de Adam Warski autor de um artigo sobre o revelador Scala Adam é o fundador e CTO da SoftwareMillA Scala, Akka, Java, e outras linguagens e tecnologias interessantes. Um blogger freqüente, palestrante e contribuidor de código aberto, você pode acompanhar o Adam no Blog SoftwareMill. Concentrada na Polônia, a SoftwareMill constrói aplicações inovadoras e resgata grandes projetos, tudo isso enquanto trabalha em estreita parceria com seus clientes.

4. DevSkiller pronto para usar a avaliação de codificação Scala online

Enquanto o DevSkiller lhe dá a opção de usar sua própria base de código para testar desenvolvedores, nem toda empresa tem tempo ou recursos para construir seu próprio teste de amostra de trabalho. Para essas empresas, existem os testes Scala pré-fabricados do DevSkiller. Ao invés de lidar com conceitos abstratos, todos eles testam seus candidatos dando-lhes uma tarefa do mundo real, o tipo de tarefas que eles iriam encontrar no seu primeiro dia de trabalho.

Akka
SENIOR
Competências testadas
Duração
102 minutos, no máximo.
Avaliação
Automático
Visão geral dos testes

Perguntas de escolha

avaliação do conhecimento de Scala, Programação Funcional

Tarefa de programação - Nível: Difícil

Scala | Akka Streams | IoT Data Streaming - Defina um agregador baseado no tempo para um fluxo de dados de sensores IoT.

Scala
JUNIOR
Competências testadas
Duração
66 minutos, no máximo.
Avaliação
Automático
Visão geral dos testes

Perguntas de escolha

avaliação do conhecimento de Scala

Tarefa de programação - Nível: Fácil

Scala | Spark | ML Logs Transformer - Completar a implementação do gasoduto de transformação dos toros.

Scala
JUNIOR
Competências testadas
Duração
96 minutos, no máximo.
Avaliação
Automático
Visão geral dos testes

Perguntas de escolha

avaliação do conhecimento de Scala

Tarefa de programação - Nível: Fácil

Scala | ScalaCalc - biblioteca matemática - Amplie a funcionalidade do módulo de geometria implementando operações poligonais.

Scala
JUNIOR
Competências testadas
Duração
88 minutos, no máximo.
Avaliação
Automático
Visão geral dos testes

Perguntas de escolha

avaliação do conhecimento de Scala, Akka, Escala-Actores

Tarefa de programação - Nível: Médio

Scala | Headers parser | Prepare o simples Scala parser.

Akka
MÉDIO
Competências testadas
Duração
76 minutos, no máximo.
Avaliação
Automático
Visão geral dos testes

Perguntas de escolha

avaliação do conhecimento de Scala, Akka, Escala-Actores

Tarefa de programação - Nível: Médio

Scala | Akka | TCP Stream Messages - Implementar manipulador de clientes para mensagens TCP stream, processá-las e enviar o resultado para o remetente e banco de dadosSaverActor.

Fonte da imagem: godatafy

Partilhar correio

Saiba mais sobre a contratação de tecnologia

Subscreva o nosso Centro de Aprendizagem para obter informações úteis directamente na sua caixa de entrada.

Verificar e desenvolver as habilidades de codificação sem problemas.

Veja os produtos DevSkiller em ação.

Certificações de segurança e conformidade. Certificamo-nos de que os seus dados estão seguros e protegidos.

Logotipo DevSkiller Logotipo TalentBoost Logotipo TalentScore