Como os desenvolvedores da Scala estão sendo entrevistados [fechado]

17

Como os programadores Scala estão sendo entrevistados? Quais são os aspectos que o entrevistador procura ao entrevistar um desenvolvedor Scala?

prasonscala
fonte
10
Eles precisam codificar o FizzBuzz enquanto estão em uma escada.
Job
2
@Job Pontos extras se o FizzBuzz usar mônadas de Estado e IO! :-)
Daniel C. Sobral
Encontrei algumas perguntas para os desenvolvedores do Scala e decidi escrever algumas respostas. No caso de alguém estiver interessado: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Respostas:

17

Primeiro, eu diria, pense por que você precisa de um desenvolvedor Scala. É realmente Scala que você precisa? Pense no que acompanha o Scala (IDE, ferramentas de compilação, bibliotecas, outra camada de complexidade acima do Java etc ...). Voltar para a pergunta. Ele tem dois aspectos: compreensão teórica e habilidades práticas. não deixe a coisa da "teoria" enganar você. É tão importante no Scala quanto a praticidade é importante no Java.

Teórico

  • Veja se eles sabem o que é realmente o paradigma funcional. Peça-lhes para comparar os dois paradigmas (FP versus imperativo) na filosofia e na prática. Se eles podem dar exemplos de idiomas que oferecem suporte total ou parcial ao FP, isso é uma vantagem para eles.

Teoria e prática mescladas

  • Veja se eles realmente conseguem fazer a programação funcional da maneira certa. Pergunte a eles sobre listas, mapas, zíper e recursão. Depois vêm os fechamentos, lambdas, redução, funções de ordem superior e imutabilidade.

Prático

  • Veja se eles podem refatorar um trecho de código imperativo em uma boa alternativa funcional (veja acima). Tente um loop que implemente alguma matemática ou algo parecido com essas linhas.

  • Encontre seu gosto pelo estilo funcional versus imperativo. Opte por um estilo mais funcional, mas tome cuidado para não chegar aos extremos do lado do desenvolvedor.

  • Veja o quanto eles sabem sobre as bibliotecas Scala (por exemplo, levantamento, expedição, etc.) e ferramentas (por exemplo, SBT, fsc, IDEA).

  • Veja como eles podem aproveitar o Java (código e ferramentas). O Scala está fortemente acoplado ao Java, especialmente em ambientes mais graves. Saber que isso é uma grande vantagem.

Teórico

  • Peça-lhes para comparar o Scala ao Java (PHP, C ++, Objective C ou o que for) e solicite que eles lhe digam o que há de errado com o Scala. Veja se eles entendem os problemas e as vantagens. Peça a eles que dêem exemplos do mundo real de quando as falhas do Scala podem causar problemas (por exemplo, é difícil para os novos Joes se darem bem, é imaturo, pois o suporte é muito limitado em comparação ao Java etc.)

Prático

  • Veja se eles estão conectados à comunidade. Pergunte a eles sobre Martin Odersky e David Pollak. Peça-lhes para nomear alguns projetos Scala e descrevê-los para você (Facebook, Twitter, FourSquare, DBPedia e DBPedia SpotLight). Veja se eles sabem exatamente como o Scala é usado nesses projetos. Eles leram os artigos, assistiram aos vídeos etc.?

  • Pergunte a eles sobre os livros (existem apenas alguns). Quanto mais eles souberem, melhor.

  • Como uma última palavra de cautela, posso dizer que línguas brilhantes têm esse estranho potencial para atrair as pessoas erradas. Tenha cuidado com o tipo que vem para Scala por todos os motivos errados. Aqui estão alguns:

    • Scala é para os privilegiados (me sinto inteligente, me sinto tão diferente dos outros Joes, tenho um Ph.D brilhante e novinho em folha, odeio imperativo porque é para os retardados, Java é superficial, Scala é tão elegante etc. ) Esse tipo não é produtivo em projetos sérios e difícil de se dar bem.
    • Estou apaixonada pela sintaxe do Scala e gostaria de escrever minha DSL em todos os lugares que tenho a chance de codificar. Esse tipo gosta de explorar de maneira destrutiva as peculiaridades de Scala até a última gota. Eles se sentem muito bem ao escrever códigos enigmáticos e concisos demais a ponto de serem ilegíveis. Esse tipo é particularmente perigoso, pois seu código é ilegível. A oferta deles é o amor por sobrecarregar o operador, nomes estranhos e escrever frases simples.
    • Eu fico com Scala até a última gota, não importa o quê. Este é o tipo purista ingênuo. Eles não podem se comprometer e o projeto sofre quando é necessária uma abordagem híbrida, como é o caso de projetos do mundo real.

PS: Se você encontrou um bom Joe, por favor, avise-me, pois precisamos de alguns;)

Ashkan Kh. Nazário
fonte
@ Dave Briccetti, recebi a idéia de "conectado à comunidade" de Dave e decidi elaborar e acabou sendo uma resposta muito longa. Crédito para Dave pela menção à comunidade;)
Ashkan Kh. Nazary
Ótimo post. Quem é Você?
Dave Briccetti
@ Dave, atualmente sou o desenvolvedor líder @ AYLIEN, que está fazendo a PNL da maneira Scala.
Ashkan Kh. Nazary
Ótima resposta no geral, mas +1 especialmente para a pequena lista de "razões erradas". As mesmas patologias podem ser encontradas nos fanáticos de C ++.
darenw
1
Provavelmente, pode-se passar mais da metade dessa entrevista sem ter codificado em Scala, nunca. É um bug ou um recurso? Estou surpreso que sua conclusão não seja mais agnóstica em relação à linguagem de programação, por exemplo, que, afinal, um bom desenvolvedor de Scala é um bom desenvolvedor, apenas com açúcar sintático diferente.
precisa saber é o seguinte
8

Em uma entrevista no mundo real, simplesmente conhecer Scala é metade da batalha vencida. Contratar um bom programador é sempre difícil, independentemente do idioma!

Os programadores da Scala tendem a vir para a linguagem porque já estavam no topo de seu jogo em Java e queriam "levar para o próximo nível".

Se você tem um suprimento abundante de desenvolvedores Scala disponíveis para entrevista, considere-se com sorte. Caso contrário, as perguntas mais relevantes podem ser "Quais aspectos devo procurar em um programador que treinarei para usar o Scala?" E "Quais empresas atualmente podem fornecer serviços de treinamento?"

Kevin Wright
fonte
1
Eu gostaria de dizer que nem todos os desenvolvedores do Scala são os melhores em Java (ou o que quer que seja), muitos deles adoram a sensação de "sou diferente" ou "sou inteligente" que o Scala dá a eles. Muitos não têm a menor idéia do que realmente é Scala. Você deve ter cuidado com eles ;-)
Ashkan Kh. Nazary
@ ashy_32bit - Isso é cada vez mais verdade hoje em dia, mas não foi o caso tanto de volta quando eu respondi a essa em 2011
Kevin Wright
7

Gosto de encontrar soluções para pequenos problemas como este: Faça um histograma dos resultados de jogar dois dados de seis lados 200 vezes.

Veja os comentários aqui para obter respostas interessantes: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Alguém com uma solução como a de Daniel Sobral, ou essa de Kevin Wright: http://ideone.com/8LFs3 , valeria uma olhada mais de perto.

Se a resposta parecer código Java, talvez o candidato não esteja suficientemente longe.

Eu também gostaria de ver que a pessoa está conectada à comunidade Scala: conhece os livros, autores, desenvolvedores de código aberto, grupos de usuários e pessoas interessantes.

Dave Briccetti
fonte
Embora ele bate a nossa média da indústria em estar fora por 2 ;-)
Duncan McGregor
4

Nunca fiz nenhuma contratação do Scala, mas procuraria entender como funcionam os implícitos, o padrão de classe de tipo e os conceitos básicos de programação funcional.

Daniel C. Sobral
fonte