In che modo gli sviluppatori di Scala vengono intervistati [chiuso]


17

Come vengono intervistati i programmatori Scala? Quali sono gli aspetti che l'intervistatore cerca quando intervista uno sviluppatore Scala?


10
Devono codificare FizzBuzz stando su una scala.
Giobbe

2
@Job Punti extra se FizzBuzz utilizza monadi di stato e IO! :-)
Daniel C. Sobral,

Ho trovato alcune domande agli sviluppatori di Scala e ho deciso di scrivere alcune risposte da solo. Nel caso qualcuno fosse interessato: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Risposte:


17

Innanzitutto, direi, pensa al motivo per cui hai bisogno di uno sviluppatore Scala. È davvero Scala che ti serve? Pensa a ciò che viene fornito con Scala (IDE, strumenti di compilazione, librerie, un altro livello di complessità sopra Java ecc ...). Torna alla domanda Comprende due aspetti: comprensione teorica e abilità pratiche. non lasciarti ingannare dalla "teoria". È importante in Scala quanto la praticità è importante in Java.

Teorico

  • Vedi se sanno di cosa parla veramente il paradigma funzionale. Chiedi loro di confrontare i due paradigmi (FP vs imperativo cioè) in filosofia e pratica. Se sono in grado di fornire esempi da lingue che supportano completamente o parzialmente FP, allora è un vantaggio per loro.

Teoria e pratica si mescolarono

  • Vedi se riescono effettivamente a fare la programmazione funzionale nel modo giusto. Chiedi loro informazioni su elenchi, mappe, zippare e ricorsioni. Poi arrivano le chiusure, i lambda, la riduzione, le funzioni di ordine superiore e l'immutabilità.

Pratico

  • Vedi se riescono a trasformare un frammento di codice imperativo in una buona alternativa funzionale (vedi sopra). Prova un ciclo che implementa della matematica o qualcosa del genere lungo queste linee.

  • Trova il loro gusto per lo stile funzionale vs imperativo. Optare per uno stile più funzionale, ma attenzione che non raggiunga gli estremi dal lato dello sviluppatore.

  • Guarda quanto sanno sulle librerie Scala (ad es. Lift, invio ecc.) E sugli strumenti (ad es. SBT, fsc, IDEA).

  • Guarda come possono sfruttare Java (codice -e-strumenti). Scala è strettamente accoppiata a Java specialmente in ambienti più seri. Sapere questo è un grande vantaggio.

Teorico

  • Chiedi loro di confrontare Scala con Java (PHP, C ++, Obiettivo C o altro) e richiedi loro di dirti cosa c'è che non va in Scala. Vedi se comprendono i problemi e i vantaggi. Chiedi loro di fornire esempi reali di quando le carenze di Scala possono causare problemi (ad esempio, è difficile per i nuovi Joes andare d'accordo, è immaturo poiché il supporto è molto limitato rispetto a Java, ecc.)

Pratico

  • Verifica se sono collegati alla community. Chiedi loro di Martin Odersky e David Pollak. Chiedi loro di nominare alcuni progetti Scala e descriverli (Facebook, Twitter, FourSquare, DBPedia e DBPedia SpotLight). Vedi se sanno esattamente come viene utilizzato Scala in questi progetti. Hanno letto gli articoli, guardato i video, ecc.?

  • Chiedi loro dei libri (ce ne sono solo alcuni). Più sanno meglio.

  • Come ultima avvertenza, posso dire che le lingue brillanti hanno questo strano potenziale per attrarre le persone sbagliate. Fai attenzione al tipo che arriva a Scala per tutte le ragioni sbagliate. Eccone alcuni:

    • Scala è per i privilegiati (mi sento intelligente, mi sento così diverso dagli altri Joes, ho un nuovissimo dottorato di ricerca brillante, odio l'imperativo perché è per i ritardati, Java è superficiale, Scala è così elegante, ecc. ). Questo tipo non è produttivo in progetti seri ed è difficile andare d'accordo.
    • Sono innamorato della sintassi di Scala e mi piacerebbe scrivere il mio DSL ovunque avessi la possibilità di scrivere codice. Questo genere ama sfruttare le peculiarità di Scala fino all'ultima goccia in modo distruttivo. Si sentono benissimo a scrivere codice criptico e troppo conciso al punto da essere illeggibile. Questo tipo è particolarmente pericoloso in quanto il loro codice è illeggibile. Il loro omaggio è l'amore per il sovraccarico dell'operatore, i nomi strani e la scrittura di una riga.
    • Rimango con Scala all'ultima goccia, non importa quale. Questo è il tipo ingenuo purista. Non possono scambiarsi e il progetto soffre quando è richiesto un approccio ibrido, come nel caso dei progetti del mondo reale.

PS: Se hai trovato un bravo Joe, per favore fammi sapere perché ne abbiamo bisogno;)


@Dave Briccetti, ho avuto l'idea "collegato alla comunità" da Dave e ho deciso di elaborare e alla fine è stata una risposta molto lunga. Il merito va a Dave per la menzione della comunità;)
Ashkan Kh. Nazary,

Ottimo post. Tu chi sei?
Dave Briccetti,

@Dave, attualmente sono lo sviluppatore principale @ AYLIEN che sta facendo PNL alla Scala.
Ashkan Kh. Nazary,

Ottima risposta nel complesso, ma +1 soprattutto per la breve lista di "motivi sbagliati". Le stesse patologie si possono trovare nei fanatici del C ++.
DarenW,

1
Probabilmente si può passare oltre la metà dell'intervista senza aver mai scritto in Scala, mai. È un bug o una funzionalità? Sono sorpreso che le tue conclusioni non siano più agnostiche riguardo al linguaggio di programmazione, ad esempio che, dopo tutto, un buon sviluppatore di Scala è un buon sviluppatore, solo con un diverso zucchero sintattico.
Arthur Havlicek,

8

In un'intervista nel mondo reale, semplicemente sapere che Scala è la metà della battaglia vinta. Assumere un buon programmatore è sempre difficile, indipendentemente dalla lingua!

I programmatori Scala tendono a venire al linguaggio perché erano già al top del loro gioco in Java e volevano "portarlo al livello successivo".

Se hai una vasta offerta di sviluppatori Scala disponibili per il colloquio, considerati fortunato. In caso contrario, le domande più rilevanti potrebbero essere "Quali aspetti dovrei cercare in un programmatore che mi allenerò per utilizzare Scala?" E "Quali aziende sono attualmente in grado di fornire servizi di formazione?"


1
Vorrei dire che non tutti gli sviluppatori di Scala sono in cima a Java (o altro), molti di loro adorano semplicemente la sensazione "Sono diverso" o "Sono intelligente". Molti non hanno la minima idea di cosa sia veramente Scala. Dovresti stare attento con loro ;-)
Ashkan Kh. Nazary,

@ ashy_32bit - Questo è sempre più vero al giorno d'oggi, ma non era così tanto quando ho risposto a questa domanda nel 2011
Kevin Wright,

7

Mi piace vedere soluzioni a piccoli problemi come questo: fai un istogramma dei risultati del lancio di due dadi a sei facce 200 volte.

Vedi i commenti qui per alcune risposte interessanti: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Qualcuno con una soluzione come Daniel Sobral, o questa di Kevin Wright: http://ideone.com/8LFs3 varrebbe la pena dare un'occhiata più da vicino.

Se la risposta è simile al codice Java, il richiedente potrebbe non essere abbastanza lontano.

Vorrei anche vedere che la persona è connessa alla comunità Scala: conosce libri, autori, sviluppatori open source, gruppi di utenti, persone interessanti.


Anche se batte la media del nostro settore in meno di 2 ;-)
Duncan McGregor

4

Non ho mai assunto assunzioni alla Scala, ma cercherei di capire come funzionano le implicazioni, il tipo di modello di classe e le basi della programmazione funzionale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.