Scala Report: Summer 2012

As was returning from Scalathon 2012 I’ve decided to pen down some of my thoughts on state of the Scala land by the mid-2012. My last “report” about 6 months ago has received a fair amount of attention and I think it’s a good occasion to provide another 6 month look back.

As many of you may know we are old time Scala users and have Scala in production usage for almost 3 years now. I think there may be just a few dozens of other products/projects that can claim the same and just may be a few that are not some type of internal IT systems but rather something that you sell as ISV – and we are almost alone in a serious distributed middleware category. So… we have a pretty good vantage point.

Things Calmed Down

In my last note about Scala I have really complained about some erratic “moves” in Scala world – whether it was purely technical (parallel collections) or business related (growing pains with Typesafe, etc).

I think in 2012 Scala’s advance has been a lot more steady and less erratic. 2.9 transition (at least for us in GridGain) was painless. 2.10 is coming alone and many glaring (performance) issues are started to being addressed. I don’t remember when was the last time I got a compiler crash (fcs doesn’t count)… IDEA plugin has matured A LOT in the last 6-9 months to the point where it minimally works in most cases (why people even touch Eclipse for Scala development at this point is beyond me).

StackOverflow is getting more and more useful for Scala folks. More (and better) books got published. Even Scalaz fascination has settled down to healthy levels (thanks, in part, to sobering attitude from Martin Odersky) and things like Lens (and their implementation in Scalaz) is something that actually usable in real life projects. Akka’s futures are migrating to 2.10 standard library – long time overdue (we’ve had that in GridGain 5 years ago – our entire implementation is practically Future-based). Java Futures (even those developed by us) make me cringe when I look at Scala counterparts – Java is so crippled comparing to the elegancy of Scala expressiveness.

An hey, new MacBook Pros helped with compilation speed a lot 🙂

Scala 2.10

Scala 2.10 new features are mostly welcome (at least IMHO). I have even warmed up to disabling some of the “advanced” features by default, and requiring and explicit import to enable them. Macros, or more appropriately a compiler plugin support, is extremely interesting capability and really is a differentiating feature among other languages in the JVM eco-system. Kotlin – are you listening?

Scala documentation – is still a poor state of affairs. But I guess I’m slowly overcoming it by simply remembering a lot and not consulting it as often. Newcomers are still suffering though (and I see it in our team first hand).


I believe the Josh Suereth’s (@jsuereth) influence (personal and the book) has been very positive on the inner circle of Scala fun base. Whoever made that hiring decision at Typesafe deserve a credit. Right individuals have a surprising level of influence on early stage adoption technologies like Scala.

I believe a new head coach at Typesafe is a clear sign of getting the house in order. Yes, Typesafe is still just a bodyshop today but they apparently invest more and more into maintaining Scala language eco-system – and that’s a very positive sign.

I hope they can maintain a healthy balance between “cheap” consulting/training revenue and “expensive” product development (and not only for Akka!). The more adoption Scala gets – the better it is for GridGain (my skin in the game) as we are practically the only distributed middleware with native Scala support that exists today.

Scala as a hiring tool

This actually has emerged as a clear standalone concept: if you want to filter out the “noise” resumes – put “Scala” as one of the key requirements. You’ll be amazed on the quality delta in resumes you’d be receiving (and how less of them too).

I firmly believe that for some companies that alone is worth having Scala in their software stack. Just ask Novus about that…

So, what am I unhappy about?

My biggest gripe is the same as last time – seemingly slow adoption of Scala. May be that’s meant to be this way, may be not – I don’t know. I’ve stopped long time ago trying to parse the reasons behind why small percentage of Java folks utterly in love with Scala (me included) and much, much larger percentage is either indifferent and downright hostile towards it.

In the end – I think Scala is moving in the right direction. Typesafe is very close to raising their round B – how I wish they’d amass some $50M+ valuation, raise $20M-30M and spend good chunk of it on a smart marketing strategy for Scala. We could have all benefited from it – along with Scala adoption!

10 responses

  1. Regarding Scala’s slow adoption, speaking from my experience this is going to keep on happening at least in the enterprise world.

    My employer does large scale consulting for Fortune 500 companies and JVM based projects only make use of Java, as it is cheaper to get offshore developers which only know about Java.

    Sadly we can only sometimes sneak other languages in the JVM based projects, unless they are explicitly requested by the customer.

  2. Part of the problem with adoption is the attitude that is displayed by people who say “who would use Eclipse”. If you want to get more adoption you need to pay attention to what we use in the real world of programming and business solutions and not just “more marketecture” kinds of marketing. Make the Scala Eclipse work better than anything else and you will find more and more programmers trying it out and falling in love with the langauge, I know that is what hooked me.

    • I agree that in general you need to have 1st class support for both IDEA and Eclipse (in Java eco-system). My point was that IDEA folks are doing it right and their plugin is a much better option today for Scala development.

      Sadly, IMHO – there are still way too many devs in Scala inner circle using Emacs-like environment w/SBT.

  3. Personally, our team has been very hesitant to adopt Scala. Namely, any Scala code I write HAS to interoperate with Java and Groovy code. This wouldn’t be a problem except for Scala’s decision to rewrite the Java collections. Implicits are no solution to this issue.

    Further, the issues Yammer had with Scala are ones I’d likely run into — I’m looking for a language to do vastly more productive backend development, not spend the time (and more) it would’ve taken to just write it in pure Java to debug bytecode.

    The strides 2.10 are taking /are/ nice. I’m really hoping Scala can become my language of choice.

    • Our Scala DSL 100% inter-operates with Java-based core product (that’s why clean DSL is needed). Collections inter-operations are major pain point – agreed. There’s really no perfect solution here since:
      – Scala collections are 10x more superior to Java ones and you can’t seriously use Java collections on Scala side w/o implicit conversion enabled
      – Conversion between two (implicit or explicit) will always negatively affect performance & readability of the code

  4. Related to Eclipse vs IDEA, there are people who simply prefer Eclipse. The Scala plugin for Eclipse evolved a lot in the past year and a half. When was the last time you tried it, and what issues did you encounter?

  5. Nikita – As a recruiter of software engineers for 15 years (and a JUG leader for 12 years), I think your assessment of Scala as a hiring tool is very accurate. The Scala community seems to be made up of top talent thus far, and if Scala is going to thrive it will need to continue to attract both this top tier of talent as well as bright new engineers coming into the market from school.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: