I love interviewing new developers. It's a chance to chat with people who you don't know, and to explore ideas with someone who has different experiences and biases to yourself. Hiring is hard, and in the past I've tried (and been tested myself) in many different ways. At my current client, we're trialling an at-home coding exercise. We are using a fairly straightforward problem involving a marketplace where participants can bid and offer, and the market will try to satisfy orders subject to some rules. The idea is to send the candidate the problem and ask them to send in a solution giving an indication of how long it took them.
If the code looks good we do a pairing interview to explore the solution and work on some extensions. It's an interesting way to figure out how someone thinks and just to see if they can produce something of high quality when they aren't pressured.
I decided to give the test a try myself to understand how difficult it is and then I remembered that I'd been meaning to try Kotlin ... Kotlin is a statically typed programming language from JetBrains.
My considered opinion after two hours writing Kotlin is that it's awesome!
To get started I had a quick look through the Kotlin language reference to get the basics, and then fired up a new Gradle based Kotlin project in IntelliJ. I'm targeting the JVM and so everything was fairly familiar to me. Gradle downloaded JUnit and Hamkrest (the Kotlin port of Hamcrest) and I started TDDing my way to a solution.
The first and most obvious thing I noticed was the lack of boiler plate code. I could create simple immutable classes in one line (see Data Classes in Kotlin), and get basic things like equality, hashcodes, toString methods for free. The collections libraries worked well and as you'd expect from JetBrains, the IDE support is very good. The solution I was left with was both expressive and simple. Surprisingly given my complete lack of Kotlin experience, I think I probably got to a solution faster than I would have done in Java which I've been using for years.
For me part of the excitement is a feeling that Kotlin might be a good fit for Enterprise dev teams who use Java now. The transition is easy, and the tool support combined with JetBrains backing may make Kotlin an easier sell than some of the other alternatives. Time will tell.
I'll spend more time with it and develop my thoughts, but I'd definitely recommend that others take a look. You can even try online here.