Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

How are Scala programmers being interviewed? What are the aspects that the interviewer looks for when interviewing a Scala developer?

share|improve this question

closed as too broad by MichaelT, Thomas Owens Apr 5 at 11:27

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

9  
They have to code FizzBuzz while standing on a ladder. –  Job Mar 20 '11 at 21:00
2  
@Job Extra points if FizzBuzz uses State and IO monads! :-) –  Daniel C. Sobral Mar 22 '11 at 12:32
add comment

4 Answers

up vote 11 down vote accepted

First, I would say, think why you need a Scala developer. Is it really Scala that you need? Think about what comes along with Scala (IDE, build tools, libs, another layer of complexity above Java etc ...). Back to the question. It goes in two aspects: Theoretical understanding and practical abilities. don't let the "theory" thing fool you. It's as important in Scala as practicality is important in Java.

Theoretical

  • See if they know what functional paradigm is really about. Ask them to compare the two paradigms (FP vs imperative that is) in philosophy and practice. If they can give examples from languages that has full or partial support for FP, then it's a plus for them.

Theory and practice mingled

  • See if they can actually do functional programming in the right way. Ask them about lists, maps, zipping and recursion. Then comes the closures, lambdas, reduction, higher order functions and immutability.

Practical

  • See if they can refactor an imperative code snippet into a good functional alternative (see above). Try a loop that implements some math or something along these lines.

  • Find their taste for functional vs imperative style. Opt for a more functional style but take caution it doesn't get to the extremes on the developer's side.

  • See how much they know about Scala libs (e.g. Lift, dispatch etc) and tools (e.g. SBT, fsc, IDEA).

  • See how well they can leverage Java (code -and- tools). Scala is tightly coupled to Java specially in more serious environments. Knowing this is a big plus.

Theoretical

  • Ask them to compare Scala to Java (PHP, C++, Objective C or whatever) and require them to tell you what is wrong with Scala. See if they understand the problems as well as the advantages. Ask them to give real-world examples of when Scala's shortcomings may cause trouble (e.g. It's hard for new Joes to get along, it's immature as support is very limited compared to Java etc)

Practical

  • See if they are connected to the community. Ask them about Martin Odersky and David Pollak. Ask them to name few Scala projects and describe them to you (Facebook, Twitter, FourSquare, DBPedia and DBPedia SpotLight). See if they know how exactly Scala is used in these projects. Have they read the articles, watched the videos, etc.?

  • Ask them about the books (there are only a few). The more they know the better.

  • As one final word of caution I may say that brilliant languages have this strange potential to attract the wrong people. Be careful about the kind that comes to Scala for all the wrong reasons. Here are few:

    • Scala is for the privileged (I feel smart, I feel so different from other Joes, I've got a brand new shiny Ph.D, I hate imperative because it's for the retarded, Java is superficial, Scala is so elegant, etc.). This type is not productive in serious projects and difficult to get along with.
    • I'm in love with Scala's syntax and would love to write my DSL everywhere I get the chance to code. This kind loves to exploit Scala's peculiarities to the last drop in a destructive way. They feel great to write cryptic and over-concise code to the point of being illegible. This kind is particularly dangerous as their code is unreadable. Their giveaway is their love for operator overloading, strange names and writing one-liners.
    • I stick with Scala to the last drop no matter what. This is the naive purist type. They can't trade off and project suffers when a hybrid approach is required as is the case with real world projects.

P.S: If you found a good Joe then please by all means let me know as we need some ;)

share|improve this answer
    
@Dave Briccetti, I got the "connected to the community" idea from Dave and decided to elaborate and it ended up as a very long answer. Credit goes to Dave for the mentioning the community ;) –  ashy_32bit Apr 6 '11 at 6:21
    
Great post. Who are you? –  Dave Briccetti Apr 17 '11 at 18:59
    
@Dave, I'm currently the lead developer @ AYLIEN which is doing NLP the Scala way. –  ashy_32bit Apr 19 '11 at 7:21
    
Great answer overall, but +1 especially for the short list of "wrong reasons". The same pathologies can be found in C++ fanatics. –  DarenW Apr 5 at 4:08
1  
One can probably pass over half that interview without having coded in Scala, ever. Is it a bug, or a feature ? I'm surprised your conclusion aren't more agnostic about the programming language e.g. that after all, a good Scala dev is a good dev, just with different syntactic sugar. –  Arthur Havlicek Apr 5 at 4:52
show 1 more comment

I like to see solutions to little problems like this: Make a histogram of the outcomes of throwing two six-sided dice 200 times.

See the comments here for some interesting answers: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Someone with a solution like Daniel Sobral’s, or this one from Kevin Wright: http://ideone.com/8LFs3 would be worth a closer look.

If the answer looks like Java code, then the applicant might not be far enough along.

I would also like to see that the person is connected to the Scala community: Knows the books, authors, open source developers, user groups, interesting people.

share|improve this answer
    
Thanks, glad you liked it :) –  Kevin Wright Mar 21 '11 at 9:20
    
Although it beats our industry average in being off by 2 ;-) –  Duncan McGregor Nov 7 '11 at 17:31
add comment

In a real-world interview, simply knowing Scala is half the battle won. Hiring a good programmer is always difficult, regardless of the language!

Scala programmers tend to come to the language because they were already at the top of their game in Java and wanted to “take it to the next level”.

If you have a plentiful supply of Scala developers available for interview, then consider yourself lucky. If not, the more relevant questions might be “What aspects should I look for in a programmer who I'll be training to use Scala?” and “What companies are currently able to provide training services?”

share|improve this answer
1  
I would like to say that not all Scala developers are top at Java (or whatever), many of them just love the "I'm different" or "I'm smart" feel Scala gives them. Many don't have the slightest clue what Scala is truly about. You should be careful with them ;-) –  ashy_32bit Apr 6 '11 at 3:02
    
@ashy_32bit - That's increasingly true nowadays, but it wasn't the case so much back when I answered this in 2011 –  Kevin Wright Apr 5 at 14:41
add comment

I have never done any Scala hiring, but I'd look for an understanding of how implicits work, type class pattern, and basics of functional programming.

share|improve this answer
add comment

protected by gnat Apr 5 at 7:57

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.