Thursday 11 December 2014

Scala Exchange 2014 - impressions

Well, I just got back from Scala Exchange 2014 and I enjoyed the conference so much I decided to resurrect this dormant blog and write about it.

What's Scala Exchange?


Scala Exchange is billed as the biggest annual Scala conference in Europe, which is probably true as there aren't many competitors for that particular niche anyway.  I read somewhere that there were around 500 attending this year, with around 50 speakers, and it seems to be growing every year.  The event was organised by Skills Matter, who are very active on the London tech scene, supporting conferences, meet-ups, training courses etc, and this experience showed.  The event ran pretty smoothly and the venue was well chosen, although a couple of talks were standing-room-only. I thought the conference was very good overall, but you can check out the videos of the talks for yourself as Skills Matter is putting them online as "skillscasts" (free registration may be required to access them).

Keynotes


  • Martin Odersky talking about work on the Scala compiler to improve binary compatibility across versions.
  • Lars Hupel talking about the Type Level project, which provides alternatives and extensions to the standard Scala libraries.
  • Dean Wampler on big data and Scala.
  • Runar Bjarnason on why functional programming is good for you.

This range of topics was fairly representative of the conference as a whole, with plenty of stuff for the hard-core FP language nerds, but also a reasonable selection of talks aimed at the "unwashed masses" (like yours truly) who are just beginning their exploration of Scala.

Scala meets the unwashed masses


Scala has a (not entirely unfair) reputation as a difficult language with a steep learning curve and some parts of the Scala community have occasionally appeared rather academic or unwelcoming to novices.  I think this is largely historical baggage and doesn't really represent my own experience as a relative newcomer to Scala, but Scala is certainly harder to start out with than, say, Python.

This tension between the potential complexity and sophistication of many aspects of the language (I found the talk on type classes entirely mystifying!), and the practical challenges for ordinary application developers trying to learn Scala and apply it to relatively mundane applications, remains a prominent issue for the community.  During the panel discussion, there were a number of comments on the need to encourage wider adoption of Scala and how best to achieve this.

Martin Odersky pointed out that this is partly a consequence of Scala's increasing adoption by the "unwashed masses", an ironic reference to the many thousands of people who have been encouraged to explore Scala, not least through his own massively successful course on Coursera.  Odersky clearly recognises that as Scala moves away from its academic roots and into the wider industry, it's inevitably going to encounter a new audience of developers with a far broader range of skills, experience and expectations.

This discussion also revealed an interesting  divergence of opinion between some of the panel members, where Miles Sabin (Type Level guru) felt strongly that Scala should drop the standard library and allow users simply to pick their own libraries, while Martin Odersky was equally firm in his view that Scala should come with "batteries included".  As a new Scala developer and one of the "unwashed masses", I'm definitely with Martin on this one - the last thing I want when I'm learning a language like Scala is to have to build my own set of libraries before I can even start doing anything practical.

Scala is the new Linux?


To be honest, this debate reminded me of the way some hard-core Linux hackers look down on people who want a GUI front-end on their Linux machines - "Why do you want a pre-packaged GUI desktop when you can pick your own?".  But a computer is just a tool, and its only value is in how well it enables the user to achieve their goals. If a nice GUI - or a standard library - will help me deliver what my customers need more easily and more effectively, then that's what the tool should provide.

On the plus side, there were several talks specifically aimed at people who are only just starting to adopt Scala, with some useful tips on key language features to explore, and those to ignore for now. When in doubt, Dick Wall's three laws of code seemed like a pretty good rule of thumb:

  1. Code must work
  2. Code must be simple
  3. Code can be clever, but not at the expense of rules 1 and 2

I think quite a few Scala gurus could benefit from those simple rules too!

Scaling down with Scala


One feature of a number of talks was the focus on using Scala for relatively low-end applications.  We've seen plenty of talk about the benefits of using Scala for large scale concurrency and Big Data, but it was refreshing to hear about people who are using it for smaller applications:


  • Rebeca Grenier talked about her experience at ""Eating Well" magazine in Vermont, where they replaced a traditional CMS (PHP, MySQL, Drupal) with the Typesafe stack (Scala Play etc) using Slick for database access.
  • Gary Higham described how BBC Children's websites are being moved from a PHP-based platform to Scala and Play, with a small team of developers who'd never worked with Scala (or even Java in most cases).
  • Peter Hilton (who co-wrote Play For Scala) presented a couple of case studies on using Play for rapidly implementing internal web applications for clients in the Netherlands, taking a pragmatic approach of selecting the easiest default options wherever possible e.g. no fancy JavaScript front-end, DB access with Slick, regular Play MVC approach etc.


I think this is an interesting potential niche for Scala i.e. for applications that might benefit from the stability and flexibility of the JVM platform, but where traditional Java EE would be massive overkill.  Of course, there are other JVM-based tools that might offer this flexibility e.g. Grails, but Play offers a combination of reasonably easy implementation (if you stick to the happy path as Peter Hilton suggests) with a robust and scalable platform.  As an old Oracle Forms developer, marooned for years in the wilderness of enterprise Java bloatware, I'm encouraged to see Rapid Application Development finally emerging again on the JVM.

But where are the women?


The Scala Exchange conference was a very positive experience from my perspective, but I was struck by the narrow demographic represented by the audience, who were almost entirely male and 25 to 50 years of age.  And there were a lot of beards (mine included)!

This is a general problem in the IT industry, and I strongly suspect Scala is even more extreme in its demographic than the industry as a whole.  If you look at the many online talks about Scala, there are very few women presenting and - if Scala Exchange is typical - very few (<5%?) women even attending these events.

I think the community still needs to do more to reach out to the "unwashed masses", and to women in particular, by breaking down some of the prejudices that still exist both within and towards the Scala community, so that next year's Scala Exchange audience might start to be more representative of the industry and wider world, and perhaps a little less like a 1970s Jethro Tull concert!